掘金量化调用MA指标金叉和死叉进行回测

adminadmin 精选技术文档 2024-04-01 52 0

首先,我们在 init部分我们要加上两个参数,这两个参数是代表一个短周期20和一个长周期60 ,下面symbol就是我们要运行的股票标的,,period 就是订阅数据的长度,

data.rolling(context.short).mean().values 

让我来解释一下它的用法:

data: 这是一个数据对象,通常是一个DataFrame或Series,包含了你所需要处理的时间序列数据,比如股票价格、成交量等等。

rolling(context.short): 这是一个滚动窗口函数,它的作用是对数据进行滚动窗口计算。在这里,context.short 是一个参数,表示滚动窗口的大小,通常用来计算短期均值或其他指标。例如,如果 context.short 设定为 10,那么就是对最近的 10 个数据进行计算。

mean(): 这是对滚动窗口中的数据进行求均值操作。

values: 这是将计算结果转换为一个 numpy 数组,以便后续的处理或分析。


当20周期穿越60周期的时候我们让系统自动委托一张买单


# 当有持仓,且股价穿过BOLL上界的时候卖出股票。
if long_avg[-2] <= short_avg[-2] and long_avg[-1] > short_avg[-1] and not position_short:
# 无多仓情况下,直接开空
if not position_long:
order_volume(symbol=context.symbol, volume=100, side=OrderSide_Sell,
order_type=OrderType_Limit, position_effect=PositionEffect_Close, price=data.close.values[-1])
# 当没有持仓,且股价穿过BOLL下界的时候买出股票。
else:
order_volume(symbol=context.symbol, volume=100, side=OrderSide_Sell,
order_type=OrderType_Limit, position_effect=PositionEffect_Close, price=data.close.values[-1])

if short_avg[-2] <= long_avg[-2] and short_avg[-1] > long_avg[-1] and not position_long:
# 无空仓情况下,直接开多
if not position_short:
order_volume(symbol=context.symbol, volume=100, side=OrderSide_Buy,order_type=OrderType_Limit,
position_effect=PositionEffect_Open, price=data.close.values[-1])
else:
order_volume(symbol=context.symbol, volume=100, side=OrderSide_Buy,order_type=OrderType_Limit,
position_effect=PositionEffect_Open, price=data.close.values[-1])    



版权声明

本文仅代表作者观点,不代表牛人量化交易网立场。
本文系作者授权牛人量化交易网发表,未经许可,不得转载。

喜欢0发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址