[原创] 发明者量化新书上线《商品期货量化交易实战》

一、摘要

中国的量化交易市场规模已经超过300亿元,金融与科技的结合势在必行。发明者(FMZ.COM)携手多名量化领域专家,精心打造这门课程。跟随学习掌握量化交易知识,运用成熟的交易软件,挑战实战策略,成为金融量化交易领域的优秀人才。

二、课程目的


《商品期货量化交易实战》是集期货基础知识、Python编程语法、量化交易软件使用、策略开发及回测等等,为一体的系统性课程。课程旨在使量化交易初学者明确期货知识重点,增强Python编程语言功底,掌握并应用于实际的量化交易策略。

通过Python + 发明者量化软件建模,手把手教你搭建属于自己的量化交易系统,快速迈过第一道门槛。你将亲手挑战实战策略,并且获得导师全方位指导。你还将加入学习小组,和志同道合的伙伴一起学习成长。

三、学习对象

包括:主观交易员、风控员、金融分析师、程序员、大学生、非专业量化交易爱好者、零基础亦可。

四、课程前期准备

1、需要各位学员了解发明者量化软件,熟练各项功能的基本操作。
2、需要有模拟或实盘交易经验和计算机基础知识。
3、最好有数理统计,计量经济学等知识储备。

五、学员要求

1、需要对量化分析或量化交易有浓厚的兴趣,并能够接受高强度学习内容。
2、教程对学员没有专业限制,但要求学员具备自主深入学习的能力取长补短。
3、完成每节课程,并临摹学习。

六、内容大纲

本课程有7个章节,共59个小节。第1、2章主要学习期货基础知识。第3章学习量化交易基础知识。第4章学习Python基础编程语法。第5章学习发明者量化软件的基本操作和使用,及模拟和实盘交易,为进一步策略开发积累市场经验。第6章以经典CTA策略为案例,学习指标和信号的编程实现。第7章学习策略的优化改进,及解决量化交易过程中的一些问题。

七、先睹为快

作为一本量化交易CTA策略入门书籍,书中的策略代码每一个步骤都有详细的讲解,几乎每一行关键的代码都有注释,非常适合初学者学习Python语言和策略逻辑,以下是书中的MACD策略代码,我们先睹为快:
策略逻辑

  • 多头开仓:DIF 大于零轴
  • 空头开仓:DIF 小于零轴
  • 多头平仓:DIF 向下突破 DEA
  • 空头平仓:DIF 向上突破 DEA

策略构建
按照以上策略逻辑,开始用代码实现出来。依次打开:fmz.com网站 > 登录 > 控制中心 > 策略库 > 新建策略 > 点击右上角下拉菜单选择Python语言,开始编写策略,注意看下面代码中的注释。

第1步:编写策略框架
这个在之前的章节已经学习过,一个是onTick函数,另一个是main函数,其中在main函数中无限循环执行onTick函数,如下:

# 策略主函数
def onTick():
    pass

# 程序主函数
def main():
    while True:     # 循环
        onTick()    # 执行策略主函数
        Sleep(1000) # 休眠1秒

第2步:定义虚拟持仓变量
这个我们在之前已经讲过,它的作用主要是用来控制策略仓位。虚拟持仓编写简单,快速迭代策略更新,一般用于回测环境中,假设每一笔订单都完全成交,但在实际交易中常用的还是真实持仓。

mp = 0  # 定义一个全局变量,用于控制虚拟持仓

使用虚拟持仓的原理很简单,策略运行之初默认是空仓mp=0,当开多单后把虚拟持仓重置为mp=1,当开空单后把虚拟持仓重置为,mp=-1,当平多单或空单后把虚拟持仓重置为mp=0。这样我们在判断构建逻辑获取仓位时,只需要判断mp的值就可以了。
第3步:计算AMA
在之前的章节中,我们使用的talib计算一些指标,但在发明者量化软件中内置了很多常用的指标计算方法,无需导入第三方库重新计算。计算流程就是:订阅期货合约 >>> 获取K线数组 >>> 调用FMZ内置MACD函数。

exchange.SetContractType("rb000")  # 订阅期货品种
bar_arr = exchange.GetRecords()  # 获取K线数组
if len(bar_arr) < long + m + 1:  # 如果K线数组长度太小,就不能计算MACD,所以直接返回跳过
    return
all_macd = TA.MACD(bar_arr, short, long, m)  # 计算MACD值,返回的是一个二维数组
dif = all_macd[0]  # 获取DIF的值,返回一个数组
dif.pop()  # 删除DIF数组最后一个元素
dea = all_macd[1]  # 获取DEA的值,返回一个数组
dea.pop()  # 删除DEA数组最后一个元素

这里面有2点需要注意,第1点是在调用FMZ内置函数计算MACD之前,需要判断K线数组的长度,因为计算MACD需要有足够多的K线数据,所以我们用if语句如果K线数组长度太小,直接返回跳过。第2点是删除MACD数组的最后一位,这么做的原因是因为最新的价格是来回跳动的,MACD的值也跟着来回变化,可能在这一秒信号成立,下一秒信号就失效了。所以为了解决这个问题,折中的方法是在开平仓条件成立后,在下一根K线下单交易。

第4步:获取最新价格

last_close = bar_arr[len(bar_arr) - 1]['Close']  # 获取最新价格(卖价),用于开平仓

获取最新价格的目的是为了下单交易,在下单接口函数exchange.Buy()或exchange.Sell()中,需要有2个参数,第1个是下单价格,也就是说在开平仓时必须指定固定的价格,通过获取K线数组最后一个元素中的‘Close’就可以获取最新的价格(卖一价)。

第5步:判断数组交叉函数
由于我们的策略在下单交易之前,需要判断DIF与DEA是否金叉或死叉,所以还需要定义函数,来判断来判断两个数组的交叉状态。

# 判断两根两个数组是否金叉
def is_up_cross(arr1, arr2):
    if arr1[len(arr1) - 2] < arr2[len(arr2) - 2] and arr1[len(arr1) - 1] > arr2[len(arr2) - 1]:
        return True

# 判断两根两个数组是否死叉
def is_down_cross(arr1, arr2):
    if arr1[len(arr1) - 2] > arr2[len(arr2) - 2] and arr1[len(arr1) - 1] < arr2[len(arr2) - 1]:
        return True    

第6步:下单交易
下单交易使用if语句,如果条件为真,就执行交易。在开平仓条件中我们先判断当前的持仓状态,然后再判断DIF与零轴的位置或DIF与DEA的交叉状态。同样的在下单交易之前也需要设置交易方向和类型,即:开多、开空、平多、平空。最后下单之后重置虚拟持仓的状态。

# 开多单
    if mp == 0 and dif[len(dif) - 1] > 0:
        exchange.SetDirection("buy")  # 设置交易方向和类型
        exchange.Buy(last_close, 1)  # 开多单
        mp = 1  # 设置虚拟持仓的值,即有多单
    
    # 开空单
    if mp == 0 and dif[len(dif) - 1] < 0:
        exchange.SetDirection("sell")  # 设置交易方向和类型
        exchange.Sell(last_close - 1, 1)  # 开空单
        mp = -1  # 设置虚拟持仓的值,即有空单
        
    # 平多单
    if mp == 1 and is_down_cross(dif, dea):
        exchange.SetDirection("closebuy")  # 设置交易方向和类型
        exchange.Sell(last_close - 1, 1)  # 平多单
        mp = 0  # 设置虚拟持仓的值,即空仓
    
    # 平空单
    if mp == -1 and is_up_cross(dif, dea):
        exchange.SetDirection("closesell")  # 设置交易方向和类型
        exchange.Buy(last_close, 1)  # 平空单
        mp = 0  # 设置虚拟持仓的值,即空仓

八、课程特点

本课程以由浅入深,从易到难的原则,无论你是未接触量化交易的主观交易员,还是没有交易经验的程序员,本课程不仅教如何编程,而且教如何交易,并以编程和交易相结合的方式让学员查漏补缺全面提升。

本课程力求精简,快速入门。依托发明者量化软件,以流行的Python语言为工具,结合当下最经典的交易策略,讲解最核心最常用的量化交易知识,策略源码同步,理论与实践并行,从实战中快速摆脱新手阶段,开启量化交易之路。

九、下载地址

腾讯微云:
https://share.weiyun.com/HUs9JfYa

十、学员寄语


不积跬步无以至千里,希望大家都能把量化交易的热情转换为坚持下来的动力。相信只要大家认真学习,完成本次课程所有内容,一定会加深对量化的认识和了解,提高期货市场生存之道,成为走上量化交易和量化投资经理职业之路一个更高的起点!

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
相关推荐
相关下载
登录后评论
Copyright © 2019 宽客在线