SF20 | 来聊聊平仓离场的方法,如何构建高效,灵活,可靠的出场策略?

 致力于分享量化策略,培训视频,Python,程序化交易等相关内容

“交易谚语:会买是徒弟,会卖是师傅,会空仓的是祖师爷”

这句股市中的俗语广为流传,无非说了三个要点:“会买的是徒弟,会卖的是师傅”说明了股市投资的目的就是盈利,其中买卖择时非常重要;而“会空仓是祖师爷”,说明了风险控制的重要性,投资不要轻易逆市而为,要合理规避市场风险,才能在股市投资中获得超额收益。这句话讲出了盈利、择时、风控三要点,综合起来讲就是投资收益与风险控制两大要点问题。

交易系统的构建同样是对应买,卖,观望这三点。开仓的方法和思路我们前面分享了太多了,这期SF20策略我们来分享一下如何构建可靠、好用的离场方法。

原理

我们改变一下VWAP的算法,不懂VWAP计算的可以参考一下SF19策略

    //计算成交量加权成本线    Vwapprice=Entprice*IIF(MarketPosition>0,1-Longshort_stop*0.001,IIF(MarketPosition<0,1+Longshort_stop*0.001,0));     Wi =Vol[1];    Wisum=Wisum+Wi;    Vwap=(Wi*Vwapprice)+Vwap;    Vwapline=Vwap/Wisum;    VWAP_A=Vwapline;

        Entprice是进场时的价格

        Longshort_stop是默认的止损止盈幅度

上面是基础算法,当我们代入Entprice后只是计算了一个固定的止损止盈线,现在我们要让它动起来,加入如下代码:

  //记录开仓后高低点  If(BarsSinceentry == 0)  {
   
         HighAfterEntry = High;      LowAfterEntry = Low;  }else  {
   
         HighAfterEntry = Min(HighAfterEntry,High); // 空头止损,更新最低的最高价      LowAfterEntry = Max(LowAfterEntry,Low);    // 多头止损,更新最高的最低价  }

这个代码是万金油代码,一旦开仓后将持续更新最高或者最低点,如下:

上面的黑色线会随着价格创新高不断抬高低点,当价格跌破这条线时就会移动出场。这样的移动出场方式有一个缺点,就是不够灵活。他是固定比例的移动止盈止损,也就是说在行情出现大幅度的变化时,滞后于行情反应,不能够及时的保住利润!因此,我们加入另一个概念:择时计算,如下:

  If(Barct>STbar)  {
   
       Entprice=IIF(MarketPosition>0,Max(Entprice[1],L[1]),IIF(MarketPosition<0,Min(H[1],Entprice[1]),0));    Wisum=0;    Vwap=0;    Vwapline=0;  }

每当需要择时的时候,我们会实时更新Entprice的值,然后重新计算VWAP移动出场线,效果如下:

我们看到随着行情的加速,移动线也会出现明显的加速,这样我们就能防止波动率扩大后出现回撤造成的利润大幅度回吐,在震荡的时候也会保持一定的距离,以免被甩出去。

实例效果

TB效果:

文华8效果:

金字塔效果:

绩效测试

交易开拓者(1小时周期,2010年至今,1.5%%,开平各1跳):

文华8:

金字塔:

品种绩效(部分品种,1小时周期):

沪铜:

螺纹:

焦炭:

橡胶:

白糖

TA

新增天勤Python版本源码:

结语

因为本期的重点是平仓方法,所以随机选择了SF01的进场方式。

VWAP择时出场线是基于成本价加权成交量的原理,加入了简单择时因子barCout计算。你也可以选择其他的择时条件,比如换成ATR波动幅度,区间轨道发生位移,RANDGE波幅计算等方法,总之就是要让模型知道市场环境发生变化了,让模型选择对应的处理办法。

本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。

猜你喜欢

转载自blog.csdn.net/m0_56236921/article/details/123272313
sf
今日推荐