Strategi Osilator Stochastic Berganda

Penulis:ChaoZhang, Tarikh: 2023-09-17 18:26:16
Tag:

Ringkasan

Strategi ini menggunakan dua osilator stokastik dengan parameter yang berbeza untuk menentukan keadaan bull / bear. Ini adalah sistem crossover purata bergerak biasa. Osilator yang lebih cepat menilai trend jangka pendek dan isyarat kemasukan, sementara yang lebih perlahan mengesahkan arah trend keseluruhan. Isyarat dihasilkan dari kombinasi.

Logika Strategi

  1. %K yang cepat menunjukkan arah trend jangka pendek. %K melintasi garis pelinciran SM1 menghasilkan isyarat kemasukan.

  2. Peratusan K yang perlahan mencerminkan keadaan trend keseluruhan. Apabila osilator pantas memberikan isyarat pembalikan, periksa ossilator perlahan untuk keabsahan trend.

  3. %K crossover cepat di atas SM1 menunjukkan isyarat bullish. %K perlahan di atas 50 bermaksud trend menaik, memuaskan keadaan panjang.

  4. %K crossover pantas di bawah SM1 menunjukkan isyarat penurunan. %K perlahan di bawah 50 bermaksud trend menurun, memuaskan keadaan pendek.

  5. Set mengambil keuntungan dan berhenti kehilangan titik pada peratusan tetap.

Analisis Kelebihan

  1. Dual stochastic menapis bunyi bising dan meningkatkan ketepatan.

  2. Parameter SM1 yang lebih kecil menjadikan %K sensitif untuk menangkap peluang jangka pendek.

  3. Siklus yang lebih besar menilai trend keseluruhan, kitaran yang lebih kecil menangkap pembalikan.

  4. Titik mengambil keuntungan tetap dan berhenti kehilangan menjadikan risiko terkawal tanpa perubahan besar.

Analisis Risiko

  1. Perbezaan antara penunjuk boleh menyebabkan perdagangan terlewat atau isyarat yang salah.

  2. Nilai keuntungan tetap dan titik berhenti kerugian tidak mempunyai fleksibiliti dalam menyesuaikan diri dengan pasaran.

  3. Parameter stokastik memerlukan pengoptimuman berulang, tetapan yang tidak betul membawa kepada kegagalan.

  4. Frekuensi perdagangan yang tinggi daripada perdagangan jangka pendek meningkatkan kos transaksi.

Arahan pengoptimuman

  1. Tambah penunjuk atau penapis lain untuk memastikan kualiti isyarat.

  2. Uji kombinasi parameter yang berbeza untuk mencari tetapan optimum.

  3. Menggabungkan langkah-langkah turun naik untuk menjadikan tahap mengambil keuntungan dan berhenti kerugian dinamik.

  4. Gunakan penapis masa untuk mengelakkan peristiwa utama dan perubahan harga yang tidak rasional.

  5. Mengoptimumkan strategi pengurusan modal seperti saiz kedudukan untuk meningkatkan kecekapan modal.

Ringkasan

Strategi ini mengintegrasikan pengayun stokastik yang cepat dan perlahan ke dalam sistem arah dua. pengoptimuman parameter lanjut dan penambahan penapis seperti trend dan penunjuk turun naik dapat memperbaikinya. dengan kawalan risiko yang betul, strategi ini dapat mencapai pulangan yang berlebihan yang agak stabil.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

Lebih lanjut