双均线策略示例
个股:中国平安
回测日期:2022-5-1至2023-5-1
短均线:5天
长无线:10天
代码:
def initialize(context):# 初始化此策略# 设置我们要操作的股票池, 这里我们只操作一支股票# """标的"""g.security = '601318.SS'set_universe(g.security)#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):security = g.security#得到二十日历史价格df = get_history(20, '1d', 'close', security, fq=None, include=False)#"""指标"""# 得到五日均线价格ma5 = round(df['close'][-5:].mean(), 3)ma5_prev = round(df['close'][-6:-1].mean(), 3)# 得到十日均线价格ma10 = round(df['close'][-10:].mean(), 3)ma10_prev = round(df['close'][-11:-1].mean(), 3)# 取得昨天收盘价price = data[security]['close']# 得到当前资金余额cash = context.portfolio.cash#"""择时"""# 如果当前有余额,并且五日均线大于十日均线if ma5 > ma10 and ma5_prev < ma10_prev:# 用所有 cash 买入股票order_value(security, cash)# 记录这次买入log.info("Buying %s" % (security))# 如果五日均线小于十日均线,并且目前有头寸elif ma5 < ma10 and ma5_prev > ma10_prev :# 全部卖出order_target(security, 0)# 记录这次卖出log.info("Selling %s" % (security))def control_risk(context):#"""风控"""pass
ptrader测试结果:
修改两条均线日期后
个股:中国平安
回测日期:2022-5-1至2023-5-1
短均线:10天
长无线:15天
def initialize(context):# 初始化此策略# 设置我们要操作的股票池, 这里我们只操作一支股票# """标的"""g.security = '601318.SS'set_universe(g.security)#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):security = g.security#得到二十日历史价格df = get_history(20, '1d', 'close', security, fq=None, include=False)#"""指标"""# 得到十日日均线价格ma5 = round(df['close'][-10:].mean(), 3)ma5_prev = round(df['close'][-11:-1].mean(), 3)# 得到十五日均线价格ma10 = round(df['close'][-15:].mean(), 3)ma10_prev = round(df['close'][-16:-1].mean(), 3)# 取得昨天收盘价price = data[security]['close']# 得到当前资金余额cash = context.portfolio.cash#"""择时"""# 如果当前有余额,并且五日均线大于十日均线if ma5 > ma10 and ma5_prev < ma10_prev:# 用所有 cash 买入股票order_value(security, cash)# 记录这次买入log.info("Buying %s" % (security))# 如果五日均线小于十日均线,并且目前有头寸elif ma5 < ma10 and ma5_prev > ma10_prev :# 全部卖出order_target(security, 0)# 记录这次卖出log.info("Selling %s" % (security))def control_risk(context):#"""风控"""pass
回测结果: