Osilator Stokastik Intraday dengan Strategi Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2023-10-27 17:00:04
Tag:

img

Gambaran umum

Strategi ini menggabungkan double moving average crossover dan Stochastic oscillator untuk mengidentifikasi peluang pembalikan tren untuk perdagangan jangka pendek yang efisien.

Logika Strategi

Strategi ini didasarkan pada kombinasi crossover rata-rata bergerak ganda dan osilator Stochastic.

crossover rata-rata bergerak ganda terdiri dari rata-rata bergerak cepat, rata-rata bergerak lambat dan rata-rata bergerak ultra lambat. ketika MA cepat melintasi di atas MA lambat, itu adalah sinyal beli. ketika MA cepat melintasi di bawah MA lambat, itu adalah sinyal jual. crossover MA ganda dapat mengidentifikasi titik pembalikan tren jangka menengah.

Osilator Stochastic berisi nilai %K dan %D. %K menunjukkan di mana penutupan saat ini relatif terhadap harga tertinggi dan terendah dari N hari terakhir. %D adalah rata-rata bergerak sederhana M-day dari %K. Nilai di atas 80 berarti tingkat overbought dan nilai di bawah 20 berarti tingkat oversold. Osilator Stochastic dapat mengidentifikasi zona overbought / oversold jangka pendek.

Strategi ini menggabungkan crossover MA ganda dan osilator Stochastic. Ini mencari sinyal pembalikan tren dari crossover MA ganda ketika Stochastic menunjukkan tingkat overbought / oversold. Ini bertujuan untuk menangkap pembalikan tren jangka pendek.

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. Menggabungkan crossover MA ganda dan osilator Stochastic untuk mengidentifikasi pembalikan tren jangka menengah dan jangka pendek.

  2. Menggunakan sinyal overbought/oversold Stochastic untuk memilih perdagangan reversal crossover double MA yang lebih efektif.

  3. Aturan perdagangan yang jelas dan mudah diterapkan.

  4. Parameter waktu dan bulan perdagangan yang dapat disesuaikan yang cocok untuk produk dan periode waktu yang berbeda.

  5. Hentikan kerugian untuk mengendalikan risiko.

Analisis Risiko

Risiko dari strategi ini:

  1. Double MA mungkin memiliki breakout palsu. Stochastic mungkin memiliki divergensi bull/bear yang tidak valid, yang mengarah pada sinyal perdagangan yang salah. fine tune parameter atau tambahkan indikator lain untuk konfirmasi combo.

  2. Berdasarkan hanya pada indikator teknis tanpa mempertimbangkan fundamental. Mungkin gagal pada peristiwa ekonomi utama. Tambahkan pengendalian risiko peristiwa ekonomi.

  3. Sulit untuk menentukan waktu pembalikan MA yang tepat, mungkin memiliki masalah stop terlalu ketat atau terlalu lebar.

  4. Pengaturan parameter yang tidak benar dapat menyebabkan over-trading atau kualitas sinyal yang buruk.

  5. Hanya cocok untuk perdagangan jangka pendek, tidak memegang jangka panjang.

Arahan Optimasi

Strategi dapat dioptimalkan dalam beberapa aspek:

  1. Uji lebih banyak kombinasi indikator seperti KDJ, MACD dll untuk meningkatkan validitas sinyal.

  2. Tambahkan analisis volume perdagangan untuk menghindari breakout palsu.

  3. Mengoptimalkan parameter MA ganda untuk mengidentifikasi titik pembalikan yang lebih akurat.

  4. Mengoptimalkan strategi stop loss untuk mengurangi kemungkinan dihentikan.

  5. Tambahkan modul pengendalian risiko peristiwa ekonomi untuk menghindari dampak dari peristiwa besar.

  6. Gunakan teknik pembelajaran mesin untuk mengoptimalkan parameter secara otomatis untuk kemampuan beradaptasi yang lebih baik.

  7. Backtest pada lebih banyak produk dan kerangka waktu untuk menemukan aplikasi terbaik.

Kesimpulan

Strategi ini diperdagangkan pada titik pembalikan tren jangka menengah yang diidentifikasi oleh crossover MA ganda dan divergensi banteng / beruang Stochastic. Dibandingkan dengan menggunakan satu indikator, ini dapat meningkatkan profitabilitas perdagangan dengan aturan yang jelas. Tetapi juga memiliki risiko yang membutuhkan optimasi parameter dan stop loss, dan lebih banyak filter dan kontrol risiko. Secara keseluruhan ini adalah strategi perdagangan jangka pendek yang andal dan frekuensi menengah.


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

//@version=3
strategy(title="Intraday Stochiastic Strategy", shorttitle="Intraday Stochiastic Strategy", overlay=true, initial_capital = 1000)
//WORKS FOR BTCUSD M30
//OBVERVED GOOD PERFORMANCES FOR SELL MODE M15 : US30USD / UK100GBP / JP225USD / SPX500USD / BCOUSD / EURGBP
//Best Forex Hours are 7-21
//0 is Long Position
//1 is Short Position
//2 No position
mode=input(1, maxval=2, title="Mode")
lossLimit=input(10000, maxval=10000, title="Loss Limit")
hourStart=input(2, maxval=24, title="Hour Start")
hourStop=input(13, maxval=24, title="Hour Stop")

//Month selected for back testing. 0 is maximum number of months
monthSelected = input(0, maxval=12, title="Month Selected")

/////////////////////////////////////////////////

fast = 20, slow = 50, ultraSlow = 200
fastMA = sma(close, fast)
slowMA = sma(close, slow)
ultraSlowMA = sma(close, ultraSlow)

colorFast = red
colorSlow = black
colorUltraSlowMA = purple

if(timeframe.period == "1" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "15" or timeframe.period == "30" or timeframe.period == "45" or timeframe.period == "60" or timeframe.period == "120" or timeframe.period == "180" or timeframe.period == "240")
    fastMA := ema(close, fast)
    slowMA := ema(close, slow)
    ultraSlowMA := ema(close, ultraSlow)
    colorFast := orange
    colorSlow := gray
    colorUltraSlowMA := blue

p1 = plot(fastMA, color=colorFast)
p2 = plot(slowMA, color=colorSlow, linewidth=2)  
p3 = plot(ultraSlowMA, color=colorUltraSlowMA, linewidth=3)

fill(p1, p2, color = fastMA > slowMA ? green : red)

////////////////////////////////////////////////

ema150 = 200
ema150MA = ema(close, ema150)

smooth = input(3, minval=1), K = input(14, minval=1), D=input(3,minval=1)
hh=highest(high,K)
ll=lowest(low,K)
k = sma((close-ll)/(hh-ll)*100, smooth)
d = sma(k, 3)
//plot(k, color=blue)
//plot(d, color=red)
//h0 = hline(80)
//h1 = hline(20)
//fill(h0, h1, color=purple, transp=95)


//plot(hour*100, color=red, linewidth=2)

stochiasticHigh = 80
stochiasticLow = 20

data = close < ema150MA and k>stochiasticHigh and d>stochiasticHigh and close>open
plotshape(data, style=shape.triangledown, location=location.belowbar, color=red)

data2 = close > ema150MA and k<stochiasticLow and d<stochiasticLow and close<open
plotshape(data2, style=shape.triangleup, location=location.abovebar, color=green)

isData = 0
isData := isData[1]

    
if(isData == 0)
    if(data)
        if(mode==1 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) //DOW hours : 2-13
            strategy.entry("SCALP SHORT", strategy.short)  
            isData := 1
else
    if(k<stochiasticLow and d<stochiasticLow)
        if(mode==1)
            strategy.close_all(when = true)
        isData := 0
        
isData2 = 0
isData2 := isData2[1]
    
if(isData2 == 0)
    if(data2)
        if(mode==0 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected))
            strategy.entry("SCALP LONG", strategy.long)  
            isData2 := 1
else
    if(k>stochiasticHigh and d>stochiasticHigh)
        if(mode==0)
            strategy.close_all(when = true)
        isData2 := 0

strategy.exit("STOP LOSS", "SCALP LONG", loss=lossLimit)
strategy.exit("STOP LOSS", "SCALP SHORT", loss=lossLimit) 

Lebih banyak