经典量化模型分享之【双均线策略】,适用于加密币、期货、股票、外汇(附源码)



  • 针对不同的品种、特性各位自行修改研究。加密币可以使用cctx接口配合。

    线()

    导语:

    双均线策略,通过建立m天移动平均线,n天移动平均线,则两条均线必有交点。若m>n,n天平均线“上穿越”m天均线则为买入点,反之为卖出点。该策略基于不同天数均线的交叉点,抓住股票的强势和弱势时刻,进行交易。

    双均线

    顾名思义就是两条天数不同的移动平均线,比如说,一条是5天的移动平均线,另一条是10天的移动平均线。如图,蓝色的是5天均线,黄色的是10天均线。
    0_1530030087239_360a8d28c7ffab857582107a4f21abc3.png

    金叉和死叉

    由时间短的均线(如上图蓝色的线)在下方向上穿越时间长一点的均线(如上图黄色的线),为“金叉”,反之为“死叉”。
    好了,现在可以构建一个简单的策略:我们认为,双均线金叉的时候,表明股票很强势,反之很弱势,我们就在强势的时候买一个好了,弱势的时候卖掉好了。

    如果你想挑战更高难度,可以试一下计算指数移动平均的函数。
    指数移动平均和算术平均或者加权平均的主要区别在于指数移动平均需要进行一个迭代,因此这可能是个有点挑战的地方:

    0_1530030189489_2d6eb1d7b941056134d913ad484116a7.png

    其中pi表示前一天的收盘价,且

    α=
    N−1
    N+1
    

    基础源码

    # coding=utf-8
    from __future__ import print_function, absolute_import
    from gm.api import *
    import talib
    import time
    
    '''
    本策略以DCE.i1801为交易标的,根据其一分钟(即60s频度)bar数据建立双均线模型,
    短周期为30,长周期为60,当短期均线由上向下穿越长期均线时做空,
    当短期均线由下向上穿越长期均线时做多,每次开仓前先平掉所持仓位,再开仓。
    回测数据为:DCE.i1801的60s频度bar数据
    回测时间为:2017-09-01 09:00:00到2017-09-30 15:00:00
    '''
    
    def init(context):
        context.FAST = 30                                              # 短周期
        context.SLOW = 60                                              # 长周期
        context.symbol = 'DCE.i1801'                                   # 订阅&交易标的
        context.period = context.SLOW + 1                              # 订阅数据滑窗长度
        subscribe(context.symbol, '60s', count=context.period)         # 订阅行情
    
    def on_bar(context, bars):
        print (bars[0].bob)
        # 获取数据
        prices = context.data('DCE.i1801', '60s', context.period, fields='close')
        # 计算长短周期均线
        fast_avg = talib.SMA(prices.values.reshape(context.period), context.FAST)
        slow_avg = talib.SMA(prices.values.reshape(context.period), context.SLOW)
    
        # 均线下穿,做空
        if slow_avg[-2] < fast_avg[-2] and slow_avg[-1] >= fast_avg[-1]:
          # 平多仓
            order_target_percent(symbol=context.symbol, percent=0, position_side=1, order_type=2)
          # 开空仓
            order_target_percent(symbol=context.symbol, percent=0.1, position_side=2, order_type=2) 
    
        # 均线上穿,做多
        if fast_avg[-2] < slow_avg[-2] and fast_avg[-1] >= slow_avg[-1]:
          # 平空仓
            order_target_percent(symbol=context.symbol, percent=0, position_side=2,order_type=2) 
          # 开多仓
            order_target_percent(symbol=context.symbol, percent=0.1, position_side=1,order_type=2) 
    
    
    def on_execution_report(context, execrpt):
        # 打印委托执行回报
        print(execrpt)  
    
    
    if __name__ == '__main__':
        '''
        strategy_id策略ID,由系统生成
        filename文件名,请与本文件名保持一致
        mode实时模式:MODE_LIVE回测模式:MODE_BACKTEST
        token绑定计算机的ID,可在系统设置-密钥管理中生成
        backtest_start_time回测开始时间
        backtest_end_time回测结束时间
        backtest_adjust股票复权方式不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
        backtest_initial_cash回测初始资金
        backtest_commission_ratio回测佣金比例
        backtest_slippage_ratio回测滑点比例
        '''
        run(strategy_id='strategy_id',
            filename='main.py',
            mode=MODE_BACKTEST,
            token='token_id',
            backtest_start_time='2017-09-01 09:00:00',
            backtest_end_time='2017-09-30 15:00:00',
            backtest_adjust=ADJUST_NONE,
            backtest_initial_cash=10000000,
            backtest_commission_ratio=0.0001,
            backtest_slippage_ratio=0.0001)
    

    回测数据

    0_1530029113409_13%B8%F6%BE%AD%B5%E4%C1%BF%BB%AF%B2%DF%C2%D4.jpg



  • @jmcoin 效率真高👋 👋 👋



  • @justin 应该修正了/



  • 代码缩进有问题啊。



  • 辛苦,辛苦,注意休息。


 








  • 0_1558330551804_TIM截图20190520133517.png

    点击进入课程地址 适用人群

    面向对数字货币程序化感兴趣的初学者,需要有一定的实盘交易和简单的计算机基础。

    课程概述
    数字货币交易市场由于其特殊性越来越受到量化交易者的关注,实际上程序化交易已经是数字货币的主流,对冲做市等策略无时无刻不在活跃着市场。而编程基础薄弱的初学者想要进入这一领域,面对众多的交易所和多变的API,困难重重。发明者(FMZ)量化平台(原BotV)是目前最大的数字货币量化社区和平台,4年多来帮助成千上万的初学者走向了量化交易之路。
    本课程由发明者量化平台官方提供,将涵盖以下内容:
    1.数字货币量化交易简介(已更新)
    2.JavaScript快速入门(已更新)
    3.发明者量化交易平台使用指南(已更新)
    4.发明者量化交易平台编程指南(已更新)
    5.量化交易策略范例详解(已更新)

    据说后面会更新python 的相关入门教程。课程很便宜,适合对量化不懂想有个概念的群体学习。

    如果要说自己拥有一套盈利的量化策略,还是要走很长的学习路。各位加油!

    讨论群:482548322

    阅读更多
  • FXKUNLUN 昆仑国际操盘团队 2019年3月收益报告ℹ 观摩账户地址 (本观摩账户为FX110监管实盘账户-平台KVB昆仑国际) 💹 KVB开户地址 点击链接 ⏺ 4月份 净值收益 9.9% ⏺ 4月份 资金最大回撤率 0.82% ⏺ 4月份 交易准确率 80.08%

    0_1556673557669_1.png

    0_1556673565305_2.png

    0_1556673571653_3.png

    0_1556673578903_4.png

    阅读更多

暂无主题。