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周回测

 

转载于:https://www.cnblogs.com/fangbei/p/wequant-strategy-ma5.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值