Strategi Dagangan Kombo Multi-Indikator

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

Strategi ini menggabungkan pelbagai penunjuk teknikal seperti purata bergerak, RSI dan Stochastics untuk menilai trend harga dan tahap overbought / oversold untuk isyarat perdagangan.

Logik Strategi:

  1. Gunakan pelbagai EMA untuk menentukan trend harga keseluruhan.

  2. Mengira RSI dan Stochastics untuk tahap overbought/oversold.

  3. Masuk panjang apabila EMA memberi isyarat bull, RSI tidak overbought dan Stoch tidak overbought.

  4. Masuk pendek apabila EMA memberi isyarat bear, RSI tidak oversold dan Stoch tidak oversold.

  5. Keluar apabila mana-mana penunjuk memberi isyarat bertentangan.

Kelebihan:

  1. Pengesahan pelbagai penunjuk meningkatkan ketepatan.

  2. Penunjuk saling melengkapi untuk penilaian pasaran yang lebih baik.

  3. Peraturan perdagangan yang jelas memudahkan pengujian dan pelaksanaan.

Risiko:

  1. Mengelakkan redundansi yang berlebihan di antara penunjuk.

  2. Pengoptimuman pelbagai penunjuk yang kompleks.

  3. Lebih banyak penunjuk tidak semestinya meningkatkan prestasi.

Ringkasnya, pendekatan pelbagai penunjuk dapat meningkatkan keputusan hingga tahap tertentu tetapi memerlukan keseimbangan kesukaran pengoptimuman dan redundansi untuk strategi yang mudah dan boleh dipercayai.


/*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 lanjut