摘要

策略编写的基本框架及其实现

回测的含义及其实现

初步学习解决代码错误

周期循环的开始时间

自测与自学

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

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

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

每天买100股的平安银行。

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

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

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

什么是“初始化+周期循环”框架?

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

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

周期循环即指策略开始后,随着时间一周期一周期地流逝时,每个周期要做的事。如例中,周期为天,周期循环的则是每天买100股的平安银行。

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

如何把策略变成计算机可执行的程序?

通过编程将策略写成计算机可识别的代码,具体说,我们这里是用python这门编程语言。

另外可以用聚宽的向导式策略生成器,这种方法是不需编程的,但灵活性上难免是远不如写代码的。

那么如何将策略写成代码?

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

写法一

def initialize(context):

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

def handle_data(context,data):

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

写法二

def initialize(context):

run_daily(period,time='every_bar')

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

def period(context):

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

代码应该往哪里写?

来到聚宽网站后,通过导航栏-我的策略-我的策略进入策略列表,点击新建策略-

进入策略编辑页,左侧就是策略代码编辑区域,初始会默认给你提供代码模板,全删除后写入我们的代码就好了。

两种写法用哪个好?

写法一是从前的老写法,将逐步弃用,写法二是聚宽系统改进后的新写法,推荐使用写法二。

def、context等都是什么意思?

其实是在调用聚宽提供好的函数,展开讲很复杂,不理解的话先记住,后面的学习内容会让你理解。

框架写成代码了,那例子的完整的代码该怎么写呢?

剩下的两行代码这么写。完全理解需要学习后续的内容,此处不要求理解。知道大概什么样子往哪里写即可。

选定要交易的股票为平安银行:

g.security = '000001.XSHE'

买100股的平安银行(市价单写法):

order(g.security, 100)

以写法二为例把剩下的代码补上后,完整代码为:

def initialize(context):

run_daily(period,time='every_bar')

g.security = '000001.XSHE'

def period(context):

order(g.security, 100)

那么现在这些代码就可以运行了吗?

是的。以写法二为例,如图把代码写到策略编辑区,设置好初始资金与起止时间(比如初始资金100000元,起止时间20160601-20161231),频率设置成天。点击编译运行,运行结束后就可以看到结果了。

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

接下来,点击运行回测,运行结束后就可以看到更为详细的结果,包括下单记录、持仓记录等。

策略出错不能运行?

策略不能运行时,日志中会报错并给出一定的提示信息,像这样:

首先注意,右上角的箭头按钮能展开运行日志。看到日志中,最后一行是错误的提示信息:

SyntaxError: invalid syntax

汉义是 语法错误:不合法的语法。

最后一行之前的是错误的位置信息,一般只看后面就行。

File "user_code.py", line 1

def initialize(context)

^

意思是文件user_code.py(就是你的策略代码)的第一行,“^”符号指向的位置有错。你到代码中的这个位置看下,会发现少个冒号。

为了顺利运行策略,需要耐心解决错误,但错误的原因极度的复杂多样(所以日志的报错信息也多种多样,不止图上一种),故在此只针对例子讲下新手容易犯的错误:

符号要用英文输入法。下图,代码第一行的冒号是中文的,所以出错

拼写不要错。下图,security拼写错了

缩进要对齐。下图,缩进没对齐。缩进的时候可以按键盘tab键或四个空格。

编程界往往把错误叫bug,而不断调试去除错误的过程叫debug,做量化时也是时常听到的说法,大家应该知道下。

而且debug通常就是要耗费不低于写bug写代码的时间的,所以会debug是很重要的能力,大家平时debug的时候不妨多思考下,如何更有效率的debug。当然,我们后续也会介绍些debug的技巧。

回测、编译运行、运行回测都是什么意思?

像刚刚那样,用一段时间内的历史的真实行情数据,来验证一个确定的交易策略在这段时间表现如何,这个过程叫回测。

运行回测就是是字面意思,让计算机运行这次回测,运行后会告诉你策略在这段时间表现情况,比如收益率、年化收益率、最大回撤、夏普比率等指标,而且一般也会包括下单记录、持仓记录等。

编译运行其实也是让计算机运行这次回测,不过相比于点击运行回测,编译运行的结果比运行回测要简单,只有收益率等指标,因此也速度更快。所以,当还不必要得到详细的结果时,或只是想调试下策略的代码,看是否无误可运行时,编译运行就比运行回测更方便。

周期循环具体是什么时候开始的呢?

如果策略频率为天,是每个交易日开始生效,从9:30直到15:00(从股市开市到收市),所以例子中是每个交易日9:30开市循环就开始,一天一次地循环执行买入股票的操作。

如果策略频率为分钟,是每个分钟开始时执行,所以例子中的买入股票的操作是每个交易日从9:30:00开始,然后9:31:00,直到14:59:00。接着下一天9:30:00,如此一分钟一次地循环执行的。

虽然频率只有为分钟和每天可选,但通过不同的代码可以实现按周按月周期循环,而且分钟级别里下单时间也是可以自己选的,不过代码的写法则与写法一和写法二那样略有不同,后面会讲到。

自测与自学

按教程实践下。

通过搜索自学K线、bug、debug的含义。

量化交易策略代码java_3.量化交易策略基本框架相关推荐

  1. 网格交易 python代码_网格交易原理和代码

    # coding=utf-8 from __future__ import print_function, absolute_import, unicode_literals import numpy ...

  2. python 网格策略_Python版简单网格策略

    Python版简单网格策略 策略广场上的Python策略不多,这里编写了一个Python版本的网格策略.策略原理十分简单,在一个价格区间内固定价格距离产生一系列的网格节点,当行情变化时,价格到达一个网 ...

  3. 用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)...

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

  4. 用python画股票分时图 github_用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)...

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

  5. matlab布林算法代码,MATLAB量化交易策略源码分享之 布林通道+高低点

    策略原理: 通过布林带以及突破后的高低点的形成产生交易信号 采取跟踪止损出场 回测曲线: 2017-2-27 10:09:43 上传 下载附件 (65.41 KB) 策略代码: function  S ...

  6. matlab量化策略代码,【策略分享】Matlab量化交易策略源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 策略名称:横盘突破策略 策略思路: 日内交易策略,收盘平仓: 横盘突破在过去30根K线的高低点围绕中轴上下0.5%的范围内波动时: 上轨=过去30根K线的 ...

  7. 天勤python_天勤量化策略库:网格交易策略(难度:中级)

    什么是网格交易策略 网格交易又名渔网交易,就是跌买涨卖.它适合震荡市,震荡市就是行情价围着一个数字上下浮动的,这个数字就是设置的价格中轴线. 设定中枢价格后,对投资标的进行机械式操作,下跌时,进行分档 ...

  8. python 交易量化模型_Python期货股票量化交易,多品种组合模型之动量策略!

    一.策略简介 动量交易策略源于股票或期货市场中的动量效应,所谓动量效应是指过去一段时间的收益较高的资产价格,那么,资产在未来一段时间内同样也能获得较高收益. 同样的,如果某一资产价格过去的波动越大,那 ...

  9. 自己做量化交易软件(44)小白量化实战17--利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计

    自己做量化交易软件(44)小白量化实战17–利用小白量化金融模块在迅投QMT极速策略交易系统上仿大智慧指标回测及实战交易设计 小白量化平台是由若干小白金融模块构成.其中包含行情接收模块,仿通达信大智慧 ...

  10. python量化交易策略实例_python量化交易策略入门(一):MACD的威力

    最近刚开始学习量化交易,在聚宽网上看了几篇教程,对操作流程有了大致的了解,接下来打算好好研究一下交易策略. 据大奖章基金的Simons透露,他那个每年收益率20%以上的系统,一点都不费解(compli ...

最新文章

  1. BZOJ 3669 . JZOJ 3754. 【NOI2014】魔法森林
  2. 虚拟局域网软件开源_ZeroTier虚拟局域网免费远程桌面体验--替代TeamViewer
  3. mac 不能连接wi-fi_如何阻止Mac自动连接到Wi-Fi网络
  4. Windows 编程[10] - WM_LBUTTONDOWN、WM_LBUTTONUP 和 WM_MOUSEMOVE 消息
  5. 谈Flash中的鼠标响应
  6. UVALive 6533
  7. STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
  8. Python实现简单的excel对比工具
  9. VHDL:设计一个四位并行加法器和16位ALU(代码思路清晰易懂)
  10. DNS中NS和SOA区别
  11. 树莓派默认密码_树莓派快速指南,从购买到开机
  12. 计算机视力集合训练程序,【视觉训练】集合功能训练的方法及步骤
  13. PHP批量上传一次点击选中多个
  14. 实现内容自动撑开盒子
  15. canvas student下载_悉大官方学生系统万能的Canvas和Sydney Student,你真的会用吗?官网平台两步走+实用功能型Tips!...
  16. JSP+JDBC案例代码(数据维护)
  17. 创业起步阶段需要注意的几点
  18. matlab光学原理仿真应用衍射,基于Matlab的光学衍射仿真【参考】.doc
  19. OSChina 端午节乱弹 ——假期余额不足,大家端午快乐
  20. 关于Bootstrap的一些使用

热门文章

  1. android 键盘快捷键大全,[键盘快捷键使用大全]AndroidStudio 快捷键使用总结大全.doc...
  2. 为什么要学习Go语言?
  3. 淮阴工学院计算机硕士生导师,硕士生导师概况
  4. 高考为什么考计算机信息,信息技术是否应该进入高考?
  5. 中望cad自定义快捷键命令_1分钟成为CAD设计高手:中望CAD命令快捷键设置详解-快捷键设置...
  6. U3D特效笔记——沼泽技能
  7. 基于随机森林(RF)算法的数据分类预测 matlab代码
  8. 蓝牙、Wifi与ZigBee无线传输技术中,谁比较占有优势
  9. 带你理清:ROS机器人导航功能实现、解析、以及参数说明
  10. 谈canvas转图片的方法(base64编码)