量化交易开发之基本框架

量化交易开发之基本框架(二)

通过前面的文章,对量化交易有了一个基本的认识之后,我们开始学习量化交易。毕竟就像学习游泳,有些东西讲是讲不懂,必须要做过!

一、从一个简单的交易策略开始

先看一个非常简单的交易策略

每天买100股的平安银行;

为了这个策略能让计算机执行,首先要使策略符合"初始化+周期循环"框架

初始化:选定要交易的股票为平安银行;

每天循环:买100股的平安银行;

二、什么是"初始化+周期"框架

  • 为了将投资灵感高效转化成计算机可执行的量化策略,必须基于一种模式来写,框架就是这种模式。而此框架包括两个部分:初始化和周期循环:

    初始化:即指策略最开始运行前要做的事情。比如,准备好要交易的股票。

    周期循环:策略开始后,随和时间一周期一周期的流逝,每个周期要做的事情。如周期为天,周期循环为每天买100股的平安银行。

能帮助你理解这一框架的是,其实人本身日常做交易就是符合"初始化+周期"框架的,初始化就是已存在人脑的交易思想与认知,周期循环就是每天或每分钟查看行情、判断、下单等行为。

三、把策略变成计算机可执行的程序

通过编程将策略写成计算机可以识别的代码,具体说,这里我们选用python语言。当然你也可以选择C++/java等。但是为什么是python,因为:

Python 简单易用,学习成本低,看起来非常优雅干净;

Python 标准库和第三库众多,功能强大,既可以开发小工具,也可以开发企业级应用;

四、将策略写成代码

这并非三言两语就能说清,尤其是对于没有编程基础的人。所以我们将通过后续的内容逐步地介绍。首先我们将学习“初始化+周期循环”框架代码的写法。

写法

def initialize(context):
    这里是用来写初始化代码的地方,例子中就是选定要交易的股票为平安银行

def period(context);
    这里是用来写周期循环代码的地方,例子中就是买100股的平安银行

补全代码:


    # 导入函数库
    from jqdata import *

    # 初始化函数,设定基准等等
    def initialize(context):
    # 开盘前运行
        run_daily(period, time='every_bar')
        g.security = '000001.XSHE'

    ## 开盘时运行函数
    def period(context):
        order(g.security, 100)

这里我们选择一个策略开发平台,设置好起始资金和起止时间(比如初始资金为100000,起止时间为20160601-20160701),频率设置成天。

可以看到,若你20160601有初始资金100000元,每个交易日尝试买100股的平安银行,到20161231,你的收益曲线将如图中蓝线般增长。图中红线是基准收益(默认是沪深300指数,代表整个市场增长水平)

在这里插入图片描述

可以看到,如果20160601有初始资金100000源,每个交易日尝试买100股的平安银行,到20160701,收益曲线如图。

图中红线是基准收益(默认是沪深300指数,代表整个市场增长水平)。

在这里插入图片描述

上图,是每日的持仓记录和持仓记录。

五、总结

  • 像刚刚那样,用一段时间内的历史的真实行情数据,来验证一个确定的交易策略在这段时间表现如何,这个过程叫回测。
  • 运行回测就是是字面意思,让计算机运行这次回测,运行后会告诉你策略在这段时间表现情况,比如收益率、年化收益率、最大回撤、夏普比率等指标,而且一般也会包括下单记录、持仓记录等。

六、未完待续

下章将继续介绍量化策略的python基本语法和变量。

欢迎关注知乎:北京不北

欢迎关注douyin:near.X (北京不北)

欢迎+V:beijing_bubei

获得免费答疑,长期技术交流。
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京不北

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值