zoukankan      html  css  js  c++  java
  • WeQuant交易策略—5日均线

    简单的价格突破策略。当前价格超过最近5个收盘价的均价,则全仓买入;低于均价,则全仓卖出

    代码

    # 简单的价格突破策略。当前价格超过最近5个收盘价的均价,则全仓买入;低于均价,则全仓卖出
    
    # PARAMS用于设定程序参数,回测的起始时间、结束时间、滑点误差、初始资金和持仓。
    PARAMS = {
        "start_time": "2017-02-01 00:00:00",  # 回测起始时间
        "end_time": "2017-08-01 00:00:00",  # 回测结束时间
        "slippage": 0.003,  # 此处"slippage"包含佣金(千二)+交易滑点(千一)
        "account_initial": {"huobi_cny_cash": 10000,
                          "huobi_cny_btc": 0},
    }
    
    # initialize函数是两大核心函数之一(另一个是handle_data),用于初始化策略变量。
    def initialize(context):
        context.frequency = "60m" # 以60分频率进行回测
        context.benchmark = "huobi_cny_btc" # 设定以比特币为基准
        context.security = "huobi_cny_btc" # 设定操作的标的为比特币
    
    # handle_data函数定义了策略的执行逻辑,按照frequency生成的bar依次读取并执行策略逻辑,直至程序结束。
    def handle_data(context):
        hist = context.data.get_price(context.security, count=5, frequency=context.frequency) # 获取最近5个频率周期的历史数据
        ma = hist["close"].rolling(window=5).mean()[-1] # 计算最近5个收盘价的均价
        current_price = context.data.get_current_price(context.security) # 获取当前价格
        if current_price > ma and context.account.huobi_cny_cash >= HUOBI_CNY_BTC_MIN_ORDER_CASH_AMOUNT: # 当前价格大于均价时,全仓买入
            context.order.buy(context.security, cash_amount=str(context.account.huobi_cny_cash))
        elif current_price < ma and context.account.huobi_cny_btc >= HUOBI_CNY_BTC_MIN_ORDER_QUANTITY: # 当前价格小于均价时,全仓卖出
            context.order.sell(context.security, quantity=str(context.account.huobi_cny_btc))

     30分钟回测

    60分钟回测结果

    4小时回测

    1天回测

    1周回测

  • 相关阅读:
    Differential Geometry之第六章平面曲线的整体性质
    球盒问题
    Fiddler (二) Script 用法
    Mac下使用Fiddler
    更新mac自带的python
    在Linux里设置环境变量的方法(export PATH)
    关于null和undefined
    ANE在ios上的使用流程和问题解决
    starling 笔记
    Android SDK安装时碰到的问题之解决办法
  • 原文地址:https://www.cnblogs.com/bitquant/p/wequant-strategy-ma5.html
Copyright © 2011-2022 走看看