Strategy Kombo Stop Loss dan Pemangsa Trend Pembalikan

Penulis:ChaoZhang, Tarikh: 2024-02-05 09:54:13
Tag:

img

Ringkasan

Strategi ini menggabungkan strategi menangkap trend pembalikan dan strategi stop loss dinamik untuk menangkap trend pembalikan sambil mengawal risiko dengan berhenti dinamik.

Logika Strategi

Strategi Menangkap Trend Pembalikan

Strategi ini berdasarkan nilai K dan D dari Stochastic Oscillator. Ia menghasilkan isyarat beli apabila harga jatuh selama dua hari berturut-turut sementara K naik di atas D. Ia menghasilkan isyarat jual apabila harga naik selama dua hari sementara K jatuh di bawah D. Ini menangkap trend pembalikan harga.

Strategi Stop Loss Dinamik

Strategi ini menetapkan stop loss dinamik berdasarkan turun naik harga dan kecenderungan. Ia mengira turun naik tertinggi tertinggi dan terendah terendah baru-baru ini dan menilai jika ia berada di saluran atas atau ke bawah berdasarkan kecenderungan, kemudian menetapkan harga berhenti dinamik dengan sewajarnya. Ini menyesuaikan kedudukan berhenti berdasarkan keadaan pasaran.

Kedua-dua strategi ini bekerjasama untuk menangkap isyarat pembalikan dan menetapkan hentian dinamik untuk mengawal risiko.

Analisis Kelebihan

  • Titik pembalikan harga tangkapan, baik untuk perdagangan pembalikan
  • Perhentian dinamik menyesuaikan dengan persekitaran pasaran
  • Pengesahan isyarat berganda mengelakkan isyarat palsu
  • Mengendalikan risiko dan memastikan keuntungan

Analisis Risiko

  • Risiko kegagalan pembalikan. Isyarat pembalikan mungkin gagal.
  • Risiko parameter, parameter yang salah boleh mempengaruhi prestasi.
  • Risiko kecairan. Sesetengah produk mempunyai kecairan yang rendah untuk menghentikan kerugian.

Risiko boleh dikawal dengan pengoptimuman parameter, stop loss yang ketat, memilih produk dengan kecairan yang baik.

Arahan pengoptimuman

  • Mengoptimumkan parameter stokastik untuk kombinasi terbaik
  • Mengoptimumkan parameter berhenti untuk kedudukan berhenti terbaik
  • Tambah penapis untuk mengelakkan pembukaan di pasaran julat
  • Tambah saiz kedudukan untuk mengehadkan kerugian maksimum

Pengoptimuman komprehensif membolehkan strategi untuk menangkap pembalikan sambil mengawal risiko.

Ringkasan

Strategi ini menggabungkan penangkapan trend pembalikan dan berhenti dinamik untuk perdagangan jangka pendek yang stabil. Dengan pengoptimuman dan pemantauan berterusan, ia mempunyai potensi untuk keuntungan yang stabil.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/12/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//  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.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

KaseDevStops(Length, Level) =>
    pos = 0.0
    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)
    pos

strategy(title="Combo Backtest 123 Reversal & Kase Dev Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthKDS = input(30, minval=2, maxval = 100)
LevelKDS = input(title="Trade From Level", defval=4, options=[1, 2, 3, 4])
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKaseDevStops = KaseDevStops(LengthKDS, LevelKDS)
pos = iff(posReversal123 == 1 and posKaseDevStops == 1 , 1,
	   iff(posReversal123 == -1 and posKaseDevStops == -1, -1, 0)) 
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