Strategi perdagangan kombinasi multi-indikator

Penulis:ChaoZhang, Tanggal: 2023-09-13 12:18:05
Tag:

Strategi ini menggabungkan beberapa indikator teknis seperti moving average, RSI dan Stochastics untuk menilai tren harga dan tingkat overbought/oversold untuk sinyal perdagangan.

Logika Strategi:

  1. Gunakan beberapa EMA untuk menentukan tren harga secara keseluruhan.

  2. Menghitung RSI dan Stochastics untuk tingkat overbought/oversold.

  3. Masuk long ketika EMA memberikan sinyal bull, RSI tidak overbought dan Stoch tidak overbought.

  4. Masuk short ketika EMA memberikan sinyal bear, RSI tidak oversold dan Stoch tidak oversold.

  5. Keluar saat indikator memberikan sinyal sebaliknya.

Keuntungan:

  1. Verifikasi multi-indikator meningkatkan akurasi.

  2. Indikator saling melengkapi untuk penilaian pasar yang lebih baik.

  3. Aturan perdagangan yang jelas memudahkan pengujian dan pelaksanaan.

Risiko:

  1. Hindari redundansi yang berlebihan di antara indikator.

  2. Optimasi multi-indikator yang kompleks.

  3. Lebih banyak indikator tidak selalu meningkatkan kinerja.

Singkatnya, pendekatan multi-indikator dapat meningkatkan keputusan sampai batas tertentu tetapi membutuhkan keseimbangan kesulitan optimasi dan redundansi untuk strategi sederhana dan dapat diandalkan.


/*backtest
start: 2022-09-06 00:00:00
end: 2023-09-12 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// strategy(title='Combined Strategy', default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.0020, pyramiding=0, slippage=3, overlay=true)

//----------//
// MOMENTUM //
//----------//
ema8 = ta.ema(close, 5)
ema13 = ta.ema(close, 9)
ema21 = ta.ema(close, 13)
ema34 = ta.ema(close, 21)
ema55 = ta.ema(close, 34)

plot(ema8, color=color.new(color.red, 0), style=plot.style_line, title='5', linewidth=1)
plot(ema13, color=color.new(color.orange, 0), style=plot.style_line, title='9', linewidth=1)
plot(ema21, color=color.new(color.yellow, 0), style=plot.style_line, title='13', linewidth=1)
plot(ema34, color=color.new(color.aqua, 0), style=plot.style_line, title='21', linewidth=1)
plot(ema55, color=color.new(color.lime, 0), style=plot.style_line, title='34', linewidth=1)

longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55

shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55

// ----------  //
// OSCILLATORS //
// ----------- //
rsi = ta.rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70

shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30

Stochastic
length = 14, smoothK = 3, smoothD = 3
kFast = ta.stoch(close, high, low, 14)
dSlow = ta.sma(kFast, smoothD)

longStochasticCondition = kFast < 80
exitLongStochasticCondition = kFast > 95

shortStochasticCondition = kFast > 20
exitShortStochasticCondition = kFast < 5

//----------//
// STRATEGY //
//----------//

longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0

if (longCondition)
  strategy.entry("LONG", strategy.long)
if (exitLongCondition)
  strategy.close("LONG")

shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0

if (shortCondition)
  strategy.entry("SHORT", strategy.short)
if (exitShortCondition)
  strategy.close("SHORT")



Lebih banyak