Strategi Osilator Stochastic Dual

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

Gambaran umum

Strategi ini menggunakan dua osilator stokastik dengan parameter yang berbeda untuk menentukan kondisi bull/bear. Ini adalah sistem crossover rata-rata bergerak yang khas. osilator yang lebih cepat menilai tren jangka pendek dan sinyal masuk, sementara yang lebih lambat mengkonfirmasi arah tren keseluruhan.

Logika Strategi

  1. %K cepat menunjukkan arah tren jangka pendek. %K melintasi garis smoothing SM1 menghasilkan sinyal masuk.

  2. Slow %K mencerminkan kondisi tren secara keseluruhan. Ketika osilator cepat memberikan sinyal pembalikan, periksa oscillator lambat untuk validitas tren.

  3. %K crossover cepat di atas SM1 menunjukkan sinyal bullish. %K lambat di atas 50 berarti uptrend, memuaskan kondisi panjang.

  4. %K crossover cepat di bawah SM1 menunjukkan sinyal bearish. %K lambat di bawah 50 berarti downtrend, memuaskan kondisi short.

  5. Tetapkan titik mengambil keuntungan dan stop loss pada persentase tetap.

Analisis Keuntungan

  1. Dual stochastic filter kebisingan dan meningkatkan akurasi. kombinasi cepat dan lambat mengurangi risiko terjebak.

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

  3. Siklus yang lebih besar menilai tren keseluruhan, siklus yang lebih kecil menangkap pembalikan.

  4. Nilai profit dan stop loss tetap membuat risiko terkontrol tanpa perubahan besar.

Analisis Risiko

  1. Perbedaan antara indikator dapat menyebabkan perdagangan yang terlewatkan atau sinyal yang salah.

  2. Fixed profit taking and stop loss points tidak memiliki fleksibilitas dalam menyesuaikan diri dengan pasar.

  3. Parameter stokastik membutuhkan pengoptimalan berulang, pengaturan yang tidak tepat menyebabkan kegagalan.

  4. Frekuensi perdagangan yang tinggi dari perdagangan jangka pendek meningkatkan biaya transaksi.

Arahan Optimasi

  1. Tambahkan indikator atau filter lain untuk memastikan kualitas sinyal.

  2. Uji kombinasi parameter yang berbeda untuk menemukan pengaturan yang optimal.

  3. Masukkan langkah-langkah volatilitas untuk membuat tingkat profit taking dan stop loss dinamis.

  4. Gunakan filter waktu untuk menghindari peristiwa kunci dan perubahan harga yang tidak rasional.

  5. Mengoptimalkan strategi manajemen modal seperti ukuran posisi untuk meningkatkan efisiensi modal.

Ringkasan

Strategi ini mengintegrasikan osilator stokastik cepat dan lambat ke dalam sistem dua arah. Optimasi parameter lebih lanjut dan menambahkan filter seperti indikator tren dan volatilitas dapat memperbaikinya. Dengan pengendalian risiko yang tepat, strategi ini dapat mencapai hasil kelebihan yang relatif 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 banyak