十行代码带你量化交易入门

提到量化交易如何入门,很多人都是列了长长的书单,书自然都是好书,但对于想入门的人来说未免太繁杂,兴趣一下就被打压了。其实一个想入门的门外人,最想要的其实是一个简单快速的入门方法,不想看了那么多书,却还写不了一个量化策略。

这里,就为新手准备了这篇文章--十行代码带你量化交易入门

学习内容:

学会写一个简单的单股票均线策略

理解策略的基本框架

学会建立连接实盘的模拟交易,并使其自动发送交易的信号到微信

首先,进入JoinQuant,点击导航栏我的策略,新建策略,进入策略编辑画面,如图。
左侧是编写策略代码,右侧是策略运行结果。我们就在左侧写策略代码。

下面教你用10行代码写个量化交易策略——单股票均线策略

1 确定策略内容与框架

若昨日收盘价高出过去20日平均价今天开盘买入股票
若昨日收盘价低于过去20日平均价今天开盘卖出股票

只操作一只股票,很简单对吧,但怎么用代码说给计算机听呢?

想想人是怎么操作的,应该包括这样两个部分

既然是单股票策略,事先决定好交易哪一个股票。每天看看昨日收盘价是否高出过去20日平均价,是的话开盘就买入,不是开盘就卖出。每天都这么做,循环下去

对应代码也是这两个部分

def initialize(context):

用来写最开始要做什么的地方

def handle_data(context,data):

用来写每天循环要做什么的地方

答疑与延伸:

def后面的空格和最后的冒号不能少!符号都要用英文输入法!

为什么这么写?就这么规定的,先别管了。handle_data 按天循环时,如此处,其中的操作都是在9:30执行。

毫无编程基础?,丝毫不懂变量,函数,if else的,还是先到量化课堂的编程部分学习下python语言吧。

几乎所有策略都基于这个基本的策略框架:先初始化,然后循环操作
1 初始化,即最开始要做的事情,如选定股票,设置变量、参数等等
2 周期循环:即每个周期要做的事情,如计算指标,买入卖出等,周期可能是分钟,天等,本文策略的周期是一天。当你要做一些盘中短线操作的时候,周期就要调成分钟,先别着急会遇到的。

2 初始化

我们要写设置要交易的股票的代码,比如 兔宝宝(002043)

def initialize(context):

g.security = '002043.XSHE'# 存入兔宝宝的股票代码

答疑与延伸:

“g.”是什么?全局变量前都要写”g.”,全局变量就是全局都能用的变量,一般变量只能在该函数下使用。如security不加”g.”,只能在第一部分即initialize里用,不能在第二部分handle_data里用。不懂什么是变量的,到量化课堂的python编程里学习下基础内容,或者问问度娘。

“XSHE”是什么? 股票代码使用时要加后缀,深交所股票代码后缀为 “.XSHE “,上交所股票代码后缀为 “.XSHG”。

代码中“#”是什么?”#“后的内容都是注释,是为代码做说明的,不会被计算机当做代码处理。

3 获取收盘价与均价

首先,获取昨日股票的收盘价

# 用法:变量 = data[股票代码].close

last_price = data[g.security].close# 取得最近日收盘价,命名为last_price

然后,获取近二十日股票收盘价的平均价

# 用法:变量 = data[股票代码].mavg(天数,‘close’)

# 获取近二十日股票收盘价的平均价,命名为average_price

average_price = data[g.security].mavg(20, 'close')

答疑与延伸:

data是什么?data[股票代码]后面除了平均价.mavg还能接什么?

4 判断是否买卖

数据都获取完,该做买卖判断了

# 如果昨日收盘价高出二十日平均价, 则买入,否则卖出 if last_price > average_price: 买入 elif last_price < average_price: 卖出

问题来了,现在该写买卖下单了,但是拿多少钱去买我们还没有告诉计算机,所以每天还要获取账户里现金量。

# 用法:变量 = context.portfolio.cash

cash = context.portfolio.cash# 取得当前的现金量,命名为cash

答疑与延伸:

context.portfolio 是什么?

这句看着有点复杂,先记住吧。然后我们看看买入卖出怎么写。

5 买入卖出

# 用法:order_value(要买入股票股票的股票代码,要多少钱去买)

order_value(g.security, cash)# 用当前所有资金买入股票

# 用法:order_target(要买卖股票的股票代码,目标持仓金额)

order_target(g.security, 0)# 将股票仓位调整到0,即全卖出

答疑与延伸:

为什么没有指定交易价格?此策略是按天回测进行的且使用的较为简单的市价单下单方法,交易价格为开盘价(加上滑点)

无法交易的情况?涨跌停,停牌,T+1制度等无法交易的情况,系统会自动使下单不成交并在日志中发出警告。

滑点是什么?下单方法有哪些?

6 策略代码写完,进行回测

把买入卖出的代码写好,策略就写完了,如下

def initialize(context):#初始化

g.security = '002043.XSHE'# 股票名:兔宝宝

def handle_data(context, data):#每日循环

last_price = data[g.security].close# 取得最近日收盘价 # 取得过去二十天的平均价格                 average_price = data[g.security].mavg(20, 'close')

cash = context.portfolio.cash# 取得当前的现金

# 如果昨日收盘价高出二十日平均价, 则买入,否则卖出。

if last_price > average_price:

order_value(g.security, cash)# 用当前所有资金买入股票

elif last_price < average_price:

order_target(g.security, 0)# 将股票仓位调整到0,即全卖出

现在,在策略回测界面右上部,设置回测时间从20140101到20160601,设置初始资金100000,设置回测频率,然后点击运行回测。

答疑与延伸:

什么是回测?回测是量化交易策略研究中的关键,是指给定一段时间的历史数据(如此处是20140101到20160601的每日数据),计算机按照所编写的策略进行模拟仿真交易,以测试策略效果好坏。

如果你代码没有问题,就会顺利的进行回测,回测结果如下图:

至此,你就完成了一个简单策略的回测了。

答疑与延伸:

如何根据回测结果评价策略好坏?很初级地讲,有三:
盈利能力:策略收益与年化收益高,则说明盈利能力强。盈利能力不行说啥都没用。

盈利稳定性:最大回撤要低。最大回撤是指最大亏损幅度,50%则意味着历史上看最大亏损率为50%。

回测可靠性:交易次数要多。交易次数越多意味着经历了越多次的检验,回测的结果也越可靠。

更多说明见:风险指标说明这个策略回撤大,交易次数少,只交易一只股票,并不靠谱。但是结构简单适合新手入门理解整个流程。

7 建立模拟交易,使策略和行情实时连接自动运行

策略写好,回测完成,点击回测结果界面(如上图)右上部红色模拟交易按钮,新建模拟交易如下图。

写好交易名称,设置初始资金,数据频率,此处是每天,设置好后点提交。

答疑与延伸:

模拟交易创建成功后,需要等待A股至少开盘一次,才能查看模拟交易结果。

8 开启微信通知,接收交易信号

点击聚宽导航栏我的交易,可以看到创建的模拟交易,如下图。

点击右边的微信通知开关,将OFF调到ON,按照指示扫描二维码,绑定微信,就能微信接收交易信号了。
当策略买卖操作,微信会收到信号提醒类似下图。

答疑与延伸:

能不能自动下单?【重磅】聚宽和一创、广发、国君都对接了实盘交易,实现全自动量化交易!目前自动化实盘已开放使用,添加小助手微信18141907163 领取实盘开启指引。

自测与自学

能否理解整个策略框架。

能否成功编写单股票均线策略,成功回测,建立模拟,开启微信通知。

能否理解年化收益,最大回撤。

浏览JoinQuant 导航栏-帮助-常见问题

之后的文章,将在本文的基础上,进行深入和扩展,比如多股票,指标获取,大盘择时等,旨在帮助对量化交易有兴趣的人快速入门,能够自主实现自己心中的想法与策略。

(0)

相关推荐

  • 量化炒股13:炒股软件中的实盘和复盘工具

    前面将炒股软件中公式管理器的使用方法全部介绍完了,现在将软件中两个实盘和复盘的辅助工具"沙盘推演"和"训练模式"介绍一下. 一.沙盘推演 沙盘推演功能可以在菜单 ...

  • 十行代码带你量化交易入门 提到量化交易如何入门,很多人都是列了长长的书单,书自然都是好书,但对于想入...

    提到量化交易如何入门,很多人都是列了长长的书单,书自然都是好书,但对于想入门的人来说未免太繁杂,兴趣一下就被打压了.其实一个想入门的门外人,最想要的其实是一个简单快速的入门方法,不想看了那么多书,却还 ...

  • 【量化交易入门】简单市值轮动策略 简单市值轮动策略 学习内容: 学会使用run

    简单市值轮动策略 学习内容:   学会使用run_daily进行周期循环   学会取用市值数据.持仓数据.指数成分股数据   学会写小市值策略 这一次我们要学写一个小市值轮动策略. 1 确定策略内容 ...

  • 量化交易入门——用EXCEL也可以进行量化建模

    来自qs_cn的雪球原创专栏 最近看到很多同学在问量化如何入门?有的专家推荐了大量的书籍,还有不少是英文名字的,我等小散实在是看起来怕怕的.量化真的这么难吗?是的,量化真的很复杂,没看那么多大公司都用 ...

  • 26段简短代码带你零基础入门Python

    https://m.toutiao.com/is/JpwYuvG/ 导读:本文对Python的基本使用做一个简单的介绍.限于篇幅,本文不可能详细讲解Python的使用,只是针对本书涉及的数据挖掘案例所 ...

  • 游资量化交易核心代码揭秘

        最近行情有调整预期,今天和往常不一样,简单跟大家聊两句.     大家一定想知道,真实的游资世界究竟是怎样的?为什么龙虎榜上经常看见一些游资割肉走掉,但他们依然很知名,几年下来积累了很多倍收益 ...

  • 3段极简代码带你入门Python科学计算库SciPy

    大数据DT 提供大数据.AI等领域干货学习资源的「宝藏号」,跟50万技术人共同成长,一起玩转大数据.Python.数据分析.数据科学.人工智能!还会有各种好玩又奇葩的数据解读,边学习边吃瓜! 510篇 ...

  • 带你进入量化交易世界

    走进量化交易,首先需要对量化交易的概念有一个基本的了解,下面我讲个故事,大家就明白什么是量化交易了. 记得我刚参加工作的时候,每到年终评优秀,都是采用投票的方式,每个人写上自己认为优秀的名字,然后按总 ...

  • 量化交易标准第三课:结构入门篇

    今天我们开始量化交易标准的第三课,也就是结构的入门讲解.今天我们主要讲什么是结构.下一节课我们讲结构的实战案例.前边两堂课中略微提到了结构,大家也应该知道了,结构仅仅是我们量化标准中的一项,不能作为单 ...

  • 「翔博精选指标」自用量化交易指标

    做价值的传播者,一路同行,一起成长 适用软件:通达信 公式说明:不包含未来函数,不加密,副图公式 指标公式描述 自用量化交易指标 分享一个自用的程序化交易的买入信号指标.该指标适用于超短,今天买明天卖 ...