Strategi Stochastic Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-01-29 11:54:10
Tag:

img

Gambaran umum

Strategi Stochastic Dual Moving Average mencoba mengidentifikasi peluang perdagangan menggunakan kombinasi indikator moving average dan osilator stochastic.

Logika Strategi

Strategi ini terutama didasarkan pada dua indikator teknis:

  1. Moving Averages: Ini menghitung EMA cepat, SMA lambat dan VWMA lambat menggunakan parameter yang berbeda, dan menghasilkan sinyal perdagangan ketika EMA cepat melintasi SMA lambat.

  2. Stochastic Oscillator: Menghitung nilai %K dan menganggap pasar terlalu banyak dibeli atau terlalu banyak dijual ketika %K melintasi ambang batas atas atau bawah yang telah ditetapkan sebelumnya, menggunakan ini untuk menyaring beberapa sinyal rata-rata bergerak.

Secara khusus, logika untuk generasi sinyal adalah:

  1. Ketika EMA cepat melintasi SMA lambat, dan %K berada di bawah tingkat oversold, pergi panjang.

  2. Untuk posisi panjang yang ada, tutup ketika %K kembali memasuki zona overbought atau harga melanggar stop loss. Untuk posisi pendek, tutup ketika %K kembali memasuki zona oversold atau harga melanggar stop loss.

Dengan menggabungkan rata-rata bergerak dan osilator stokastik, strategi ini mencoba mengidentifikasi titik sinyal rata-rata bergerak dengan probabilitas tinggi untuk memasuki perdagangan, sambil menggunakan stokastik untuk menyaring beberapa sinyal palsu.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Menggabungkan beberapa indikator teknis memberikan penilaian yang lebih komprehensif dibandingkan dengan menggunakan satu indikator.
  2. Menyaring dengan osilator stokastik menghindari beberapa sinyal palsu.
  3. Menggunakan beberapa rata-rata bergerak dengan parameter campuran memungkinkan sinyal yang lebih kuat.
  4. Menggabungkan mekanisme stop loss untuk mengendalikan kerugian perdagangan tunggal.

Analisis Risiko

Ada juga beberapa risiko:

  1. Rata-rata bergerak dapat menghasilkan banyak sinyal yang tidak pasti yang menghasilkan lebih banyak entri palsu; kemampuan stop loss terbatas.
  2. Osilator stokastik juga dapat menghasilkan sinyal yang salah sendiri.
  3. Pengaturan parameter membutuhkan optimalisasi (misalnya tingkat overbought/oversold, periode moving average) jika tidak dampak kinerja.
  4. Kurangnya analisis fundamental.

Pengurangan:

  1. Mengoptimalkan parameter untuk menemukan kombinasi terbaik dari pengaturan indikator.
  2. Gunakan ukuran posisi yang lebih kecil, skala dalam.
  3. Sertakan analisis fundamental untuk menghindari kejadian.

Peluang Peningkatan

Peluang optimasi utama adalah:

  1. Uji dan optimalkan parameter rata-rata bergerak untuk menemukan yang optimal.
  2. Uji parameter stokastik seperti zona overbought/oversold untuk pengaturan yang optimal.
  3. Sertakan indikator tambahan seperti volume atau volatilitas untuk logika entri yang lebih kaya.
  4. Meningkatkan metodologi stop loss misalnya trailing stop untuk mengurangi risiko.
  5. Meningkatkan manajemen uang seperti ukuran posisi dinamis berdasarkan ATR.
  6. Hindari kejadian risiko-off menggunakan VIX dll.

Kesimpulan

Strategi Stochastic Dual Moving Average menggunakan campuran moving average dan osilator stochastic untuk merancang sistem trend berikut yang kuat, tetapi memiliki beberapa peluang peningkatan di sekitar parameter, stop dll. Penyempurnaan lebih lanjut seperti indikator tambahan dan optimasi berpotensi memberikan alfa yang lebih konsisten.


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

//@version=4
strategy("TVIX MEAN REV V2 TREND", overlay=true)
length = input(16, minval=1)
OverBought = input(80)
OverSold = input(20)
TradeLong = input (true)
TradeShort = input (true)

OverBoughtClose = input(80)
OverSoldClose = input(20)

smoothK = 3
smoothD = 3
trail_points = input(50)

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
k2 = sma(stoch(close, high, low, length), smoothK)
d2 = sma(k, smoothD)


// === GENERAL INPUTS ===
// short Ema
maFastSource = input(defval=close, title="Fast EMA Source")
maFastLength = input(defval=1, title="Fast EMA Period", minval=1)
// long Sma
maSlowSource = input(defval=close, title="Slow SMA Source")
maSlowLength = input(defval=100, title="Slow SMA Period", minval=1)
// longer Sma
maSlowerSource = input(defval=close, title="Slower SMA Source")
maSlowerLength = input(defval=30, title="Slower SMA Period", minval=1)

//ATR Stop Loss Indicator by Keith Larson
atrDays = input(7, "ATR Days Lookback")
theAtr = atr(atrDays)
atrModifier = input(5.0, "ATR Modifier")
//plot(atr * atrModifier, title="ATR")

LstopLoss = close - (theAtr * atrModifier)
SstopLoss = close + (theAtr * atrModifier)



// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
maSlower = vwma(maSlowerSource, maSlowerLength)
rsi = rsi(maSlowerSource, maSlowerLength)

// === PLOTTING ===
fast = plot(maFast, title="Fast MA", color=color.red, linewidth=2, style=plot.style_line, transp=30)
slow = plot(maSlow, title="Slow MA", color=color.green, linewidth=2, style=plot.style_line, transp=30)
slower = plot(maSlower, title="Slower MA", color=color.teal, linewidth=2, style=plot.style_line, transp=30)


// === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross
LongFilter = maFast > maSlow
ShortFilter = maSlow > maFast




BUY=crossover(k, d) and k < OverSold
SELL=crossunder(k, d) and k > OverBought

SELLCLOSE=crossover(k, d) and k < OverSoldClose
BUYCLOSE=crossunder(k, d) and k > OverBoughtClose

Open = open


if not na(k) and not na(d)
    if crossover(k, d) and k < OverSold and LongFilter and TradeLong
        strategy.entry("$", strategy.long, limit = Open, comment="Long")
    
    strategy.close("$",when = crossunder(k, d) and k > OverBoughtClose or open < LstopLoss  )
    ///strategy.close("$",when = open < LstopLoss  )
    
if not na(k) and not na(d)
    if crossunder(k, d) and k > OverBought and ShortFilter and TradeShort
        strategy.entry("$1", strategy.short, limit = Open, comment="S")
        
    strategy.close ("$1", when = crossover(k, d) and k < OverSoldClose or open > SstopLoss  )
    ///strategy.close ("$1", when = open < SstopLoss) 
    
  
        





Lebih banyak