- 简易版SMA策略一旦遇到股价震荡频率较高的股票,收益往往会出现问题,因此做个简单的策略升级。基于简易版,设置股价差20为阈值。当出现金叉且股价差大于20时再做多,当出现死叉且股价差小于20时再做空。分别计算大盘和策略的累积收益,并可视化为折线图,并与简易版作对比,看策略收益存在多大的区别
- 使用动量交易策略分析,分别以自身(本身/2天/6天)的平均return作为position,生成strategy再分别做可视化折线图
简易版为下图 (回答附上code 感谢)
sma策略(用tushare包)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-HGJ 2021-09-09 04:55关注
在原来计算出移动平均数的基础上,增加一些判断条件进行计算并画出对比图。参考如下代码:
#无策略 df['date_rev'] = [0]+[(df.loc[i,'close']-df.loc[i-1,'close']) for i in range(1, len(df))] df['ac_rev'] = df['date_rev'].cumsum() #第一策略 a=[0] for i in range(1, len(df)): if df.loc[i-1, 'm10'] < df.loc[i-1, 'm60'] and df.loc[i, 'm10'] > df.loc[i, 'm60']: n = i if df.loc[i-1, 'm10'] > df.loc[i-1, 'm60'] and df.loc[i, 'm10'] < df.loc[i, 'm60']: a.append(df.loc[i, 'close']-df.loc[n, 'close']) else: a.append(0) df['st1_rev']=a df['ac_st1_rev']=df['st1_rev'].cumsum() #第二策略 x = [0] for i in range(1,len(df)): if df.loc[i-1, 'm10'] < df.loc[i-1, 'm60'] and df.loc[i, 'm10'] > df.loc[i, 'm60'] and abs(df.loc[i,'close']-df.loc[i-1,'close']) >= 20: n = i if df.loc[i-1, 'm10'] > df.loc[i-1, 'm60'] and df.loc[i, 'm10'] < df.loc[i, 'm60'] and abs(df.loc[i, 'close']-df.loc[i-1, 'close']) >= 20: x.append(df.loc[i, 'close']-df.loc[n, 'close']) else: x.append(0) #绘制图 df['st2_rev'] = x df['ac_st2_rev'] = df['st2_rev'].cumsum() df.to_csv('hs300_2.csv') plt.figure(figsize=(12,8)) plt.subplot(1,2,1) plt.title('strategy1') plt.plot(df['date'], df['ac_rev'],df['ac_st1_rev']) plt.legend(['ac_rev','ac_st1_rev']) plt.subplot(1,2,2) plt.title('strategy2') plt.plot(df['date'], df['ac_rev'],df['ac_st2_rev']) plt.legend(['ac_rev', 'ac_st2_rev']) plt.show()
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 PointNet++的onnx模型只能使用一次
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。