TradingView
blackcat1402
Jan 8, 2023 1:14 PM

说个高灵敏度跟踪止盈止损算法 

NANFANG BLACK SESASZSE

Description

无论是量化交易还是人工交易,都需要考虑止盈(take profit)止损(stop loss)的问题。事实上对于单一方向的交易止盈止损的规则可以用同一种规则进行约定。例如,A股只允许做多,止盈止损其实可以用同一个规则,其命名区别主要是当时你仓位的盈亏状态。它们都可以成为退出(exit)。如果你退出的时候是亏损的就叫止损,反之就叫做止盈。

我们可以通过将退出与追踪跟踪配对来增强退出的效力,保留住更多的利润或减少亏损。在很多软件里这是一种交易订单,其中止损价格不固定在一个单一的绝对金额,而是设定在某个百分比或金额低于市场价格。而在量化算法中,可以通过定义规则实现各种灵活的跟踪退出,或者说跟踪止盈止损。

今天我就介绍一种非主流,但是很强大的跟踪止盈止损的算法。其规则来自于**杰西 利弗莫尔**突破关键点确认趋势,如果不再突破甚至反向突破则定义为趋势反向。它的特点是非常的灵敏,这里记得算法很难完全:越简单越实用,但是对使用者对市场理解力有要求;越灵敏的同时也是越不稳定的,可能会产生很多信号;总而言之,这个世界的任何事都是物理的就不能摆脱折中(trade off)这个要求。真正能把各个参数指标达到一个**极致平衡状态**的都是大师。这就像你玩FIFA游戏中球员各项能力的雷达图。

**杰西 利弗莫尔**:
>"不管是在什么时候,我都有耐心等待市场到达我称为“关键点”的那个位置,只有到了这个时候,我才开始进场交易,在我的操作中,只要我是这样的,总能赚到钱。因为我是在一个趋势刚开始的心理时刻开始交易的,我不用担心亏钱,原因很简单,我恰好是在我个人的原则告诉我立刻采取行动的时候果断进场开始跟进的,因此,我要做的就是,坐着不动,静观市场按照它的行情发展。我知道,如果我这样做了,市场本身的表现会在恰当的时机给我发出让我获利平仓的信号。"

我在**TradingView**的Pine脚本中实现这个算法如下,可以看出只是仅仅几行代码就可以表达这个趋势是否要反转的最基本的规律。基本到你甚至不需要去验证其合理性:

```pine
//定义典型价格wcx
wcx = (2*high + low + high + open/2) / 4.5
//3根K线中最高点
hh = highest(high,3)
//3根K线中最低点
ll = lowest(low,3)
//高点创新高并且典型价格上涨
ch1 = (hh > xrf(hh,1) and wcx>xrf(wcx,1))
//低点创新低并且典型价格下跌
ch2 = (ll < xrf(ll,1) and wcx<xrf(wcx,1))
//向上突破K线回溯索引值
k3 = barssince(ch1)
//向下突破K线回溯索引值
k4 = barssince(ch2)
//最近有向上突破或者创新高并且不能有创新低
k5 = (k3<k4 or ch1) and not(ch2)
//最近有向下突破或者创新低并且不能有创新高
k6 = (k3>k4 or ch2) and not(ch1)
//如果向上突破则取最低价作为退出准则(跟踪止损放飞利润),否则取开始向前期低点(做多止损位)
zc = iff(hh>xrf(hh,1) and wcx>xrf(wcx,1),ll,xrf(ll,barssince(hh>xrf(hh,1) and wcx>xrf(wcx,1))))
//如果向下突破则取最高价作为推出准则(跟踪止损放飞利润),否则取开始向前期高点 (做空止损位,A股不需要)
yl = iff(ll<xrf(ll,1) and wcx<xrf(wcx,1),hh,xrf(hh,barssince(ll<xrf(ll,1) and wcx<xrf(wcx,1))))
//如果向上突破,则按算法生成止损退出价格
bcl = iff(k5,zc,yl)
```

将这个脚本在主图上运行,我还添加了一些绘图的脚本,就不在此冗述了。这个算法公开发布在了TradingView社区,短短几个小时,就收集了46个赞,说明识货的朋友还是不少的,哈哈。

具体的效果,我就直接上图吧,此处无声胜有声:

**黑芝麻**

黑芝麻日线行情来自TradingView


**兔宝宝**

兔宝宝日线行情来自TradingView


**久其软件**

久其软件日线行情来自TradingView

源代码链接如下:
cn.tradingview.com/script/TKEij3Ys/
Comments
fuyun86
看似任何一个指标都有止损止盈的功能,例如金叉死叉、ATR,均线、轴区点、平均K,关键K线或结构断裂,甚至高标情绪直接竞价就跑。。 有时候路子多了选择是个头痛的问题。
blackcat1402
@fuyun86, 好的做成一个库,回测对比出性能最好的,我是这么筛选的。
BTChonghu
@fuyun86 确实,各种策略指标使用多了,筛选出几个不错的过后又是不断的试错,头疼
blackcat1402
@BTChonghu, 我手里好的算法都是这么枯燥迭代出来的
Adam_Wu
上面的例子都是创近期新高的票,所以不是随机挑选的。
Adam_Wu
@Adam_Wu, 把这个指标改成了策略,用ETF日线回测发现:
1 用到下跌的ETF上比ETF本身跌得更多
2 用到涨的ETF上,比ETF涨得少很多
3 单量非常大,平均几K一单,操作失误的成本必须考虑进去
blackcat1402
@Adam_Wu, 有个大佬说过大概意思是炒股就是选美,你不可能把大街上所有的美女都娶回家或做女朋友,你得了解她适不适合你。见女的就要领回家要么是太年轻,要么不会有期待的结果。弱水三千只取一瓢的道理。几个瑕疵:应用周期,参数,品种想随便通吃几乎是不可能的
Adam_Wu
@blackcat1402, 所以啊:1) 这样把之前选美冠军来秀,台下死一堆,没有意义;2)弱水三千只取一瓢,没毛病,但如果已经取对了那一瓢,那MACD、SuperStrend、均线、固定止盈止损不香么? 3) 另外“需要过多超参” 或者 “微调某个超参,结果变化巨大” 或者 “每个品种用不同的超参组合”才能在回测中获利的,叫过拟合,这个你一定知道是什么意思。
blackcat1402
@Adam_Wu, 确实没什么可聊的了,杠上了。你觉得信号多往大周期上放啊,算法是死的人是活的,这都不能应变,还怎么跟随市场。
blackcat1402
@Adam_Wu, 一句话:没有模式只有死。 第二句话:别在股市找圣杯。
More