Strategi Stop Loss Dinamik Kase

Penulis:ChaoZhang, Tarikh: 2023-09-13 14:08:47
Tag:

Strategi ini berdasarkan pendekatan stop loss dinamik Encik Kase, mengira julat dinamik harga untuk mencari stop loss yang optimum dan mengambil tahap keuntungan untuk mengimbangi keuntungan dan kerugian.

Logik Strategi:

  1. Mengira indeks julat dinamik harga RWH dan RWL.

  2. Menghasilkan indeks tahap penyimpangan Pk dari RWH dan RWL.

  3. Apabila Pk>0, mengira stop loss berdasarkan tahap penyimpangan. Apabila Pk <0, mengira mengambil keuntungan.

  4. Ganda penyimpangan biasanya berkisar antara 1-3 penyimpangan standard.

  5. Mengambil kedudukan yang bertentangan apabila harga mencapai stop loss / keuntungan.

Kelebihan:

  1. Hentian / keuntungan dinamik menyesuaikan diri dengan perubahan turun naik.

  2. Stop tidak terlalu ketat atau terlalu longgar.

  3. Pendekatan matematik mengelakkan penilaian emosi dan subjektif.

Risiko:

  1. Penghentian pengiraan kelewatan, berpotensi hilang terbaik berhenti masa.

  2. Pengaturan parameter diperlukan untuk menyeimbangkan berhenti dan sasaran.

  3. Tidak ada had pada saiz kerugian, risiko kehilangan perdagangan besar.

Ringkasnya, pendekatan ini dapat mengoptimumkan berhenti dan sasaran dengan bijak ke tahap tertentu tetapi masih memerlukan pengujian belakang yang kukuh.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/10/2019
//  The Kase Dev Stops system finds the optimal statistical balance between letting profits run, 
//  while cutting losses.  Kase DevStop seeks an ideal stop level by accounting for volatility (risk),
//  the variance in volatility (the change in volatility from bar to bar), and volatility skew 
//  (the propensity for volatility to occasionally spike incorrectly).
//
//  Kase Dev Stops are set at points at which there is an increasing probability of reversal against 
//  the trend being statistically significant based on the log normal shape of the range curve.  
//  Setting stops will help you take as much risk as necessary to stay in a good position, but not more.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Kase Dev Stops Backtest", overlay = true)
Length = input(30, minval=2, maxval = 100)
Level = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
RWH = (high - low[Length]) / (atr(Length) * sqrt(Length))
RWL = (high[Length] - low) / (atr(Length) * sqrt(Length))
Pk = wma((RWH-RWL),3)
AVTR = sma(highest(high,2) - lowest(low,2), 20)
SD = stdev(highest(high,2) - lowest(low,2),20)
Val4 = iff(Pk>0, highest(high-AVTR-3*SD,20), lowest(low+AVTR+3*SD,20))
Val3 = iff(Pk>0, highest(high-AVTR-2*SD,20), lowest(low+AVTR+2*SD,20))
Val2 = iff(Pk>0, highest(high-AVTR-SD,20), lowest(low+AVTR+SD,20))
Val1 = iff(Pk>0, highest(high-AVTR,20), lowest(low+AVTR,20))
ResPrice = iff(Level == 4, Val4,
             iff(Level == 3, Val3,
               iff(Level == 2, Val2,
                 iff(Level == 1, Val1, Val4))))
pos = iff(close < ResPrice , -1, 1)
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Lebih lanjut