Strategi EMA multi-indikator adalah strategi pelacakan tren yang menggabungkan beberapa indikator seperti EMA, MACD, Oscillator, RSI, Stochastic, dan Bollinger Bands. Strategi ini menghasilkan sinyal beli dan jual dengan menghitung sinyal gabungan dari beberapa indikator untuk menentukan apakah saat ini sedang dalam tren naik atau tren turun.
Strategi ini pertama-tama menghitung beberapa indikator berikut:
EMA: menghitung rata-rata bergerak indeks untuk periode tertentu EMA.
MACD: menghitung garis DIF dan garis DEA dari indikator MACD.
Oscillator: menghitung selisih antara harga penutupan dan harga pembukaan pada periode tertentu.
RSI: Indeks kekuatan relatif untuk periode tertentu.
Stochastic: menghitung nilai K dan D dari parameter acak.
Bollinger Bands: Bollinger Bands yang menghitung periode tertentu pada lintasan atas, tengah, dan bawah.
Indikator-indikator ini kemudian diberi nilai yang berbeda berdasarkan status mereka saat ini. Misalnya, Stochastic diberi nilai 2 jika lebih kecil dari 20, dan -2 jika RSI lebih besar dari 80.
Kemudian jumlahkan semua nilai indikator untuk menghitung sinyal trigger gabungan. Jika trigger lebih besar dari 7, maka akan ada sinyal beli. Jika trigger lebih kecil dari 7, maka akan ada sinyal jual.
Dengan menghitung sinyal komposit dari beberapa indikator, arah tren saat ini dapat dipastikan dengan lebih akurat, sehingga menghasilkan sinyal perdagangan yang lebih andal.
Keuntungan terbesar dari strategi multi-indikator ini adalah kemampuan untuk mengintegrasikan beberapa indikator, membuat penilaian yang lebih komprehensif dan akurat, dan menghindari sinyal salah yang disebabkan oleh satu indikator.
Secara khusus, keuntungan dari strategi ini adalah sebagai berikut:
Menggunakan beberapa indikator secara komprehensif, penilaian tren lebih dapat diandalkan. Satu indikator dapat menghasilkan sinyal yang menyesatkan, dan beberapa indikator dapat saling diverifikasi, mengurangi kesalahan.
Menggunakan karakteristik yang berbeda dari indikator, untuk mengidentifikasi tahap yang berbeda dalam tren. Misalnya MACD dapat mengidentifikasi awal dari tren, RSI dapat menilai apakah terlalu panas dan sebagainya.
Indikator dengan pengaturan parameter yang berbeda dapat menangkap karakteristik periode yang berbeda. Misalnya, EMA periode cepat dan EMA periode lambat.
Anda dapat menyesuaikan berat masing-masing indikator. Untuk indikator yang lebih penting, Anda dapat memberikan berat yang lebih tinggi.
Hasil backtesting dapat dioptimalkan untuk mengoptimalkan kombinasi indikator dan alokasi berat, sehingga menghasilkan strategi yang lebih baik.
Meskipun strategi ini menggunakan beberapa indikator untuk menilai tren secara komprehensif, tetap ada risiko sebagai berikut:
Kombinasi beberapa indikator tidak tepat, tidak dapat memanfaatkan keunggulan masing-masing indikator, atau menimbulkan konflik penilaian. Perlu memahami konteks penerapan masing-masing indikator.
Pembagian bobot tidak rasional, tidak dapat secara akurat mengungkapkan pentingnya masing-masing indikator. Bobot harus dioptimalkan melalui pengujian berulang.
Pengaturan parameter siklus tunggal mungkin tidak sesuai dengan Fit, verifikasi siklus waktu ganda harus digunakan.
Berat dan parameter indikator tetap tidak dapat beradaptasi dengan perubahan pasar, dan mekanisme penyesuaian dinamis harus diperkenalkan.
Jika ada sinyal indikator yang tertinggal, waktu stop loss harus dihitung dengan menggunakan metode teknis lainnya.
Kombinasi dari beberapa indikator meningkatkan kompleksitas strategi, membutuhkan dukungan data historis yang cukup, dan parameter yang lebih sulit untuk dioptimalkan.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Uji lebih banyak jenis indikator untuk menemukan indikator yang lebih sensitif terhadap kondisi pasar saat ini.
Mengoptimalkan parameter periodik untuk setiap indikator sehingga dapat menangkap karakteristik tren pada tingkat yang berbeda.
Optimalkan alokasi bobot masing-masing indikator, sehingga dapat lebih akurat mengekspresikan pentingnya masing-masing indikator.
Menambahkan mekanisme penyesuaian dinamis, optimalisasi parameter dan bobot secara real-time, dan beradaptasi dengan perubahan pasar.
Dengan strategi stop loss, Anda dapat mengatur stop loss yang masuk akal untuk mengurangi risiko kerugian.
Menambahkan verifikasi multi-siklus waktu untuk menghindari optimasi berlebihan dalam satu siklus.
Menggunakan optimasi stepwise dan kombinasi optimasi untuk mencari kombinasi parameter yang optimal.
Menambahkan metode canggih seperti pembelajaran mesin untuk penyesuaian bobot indikator yang lebih cerdas.
Optimalkan strategi untuk membeli dan menjual secara logis, dan hindari transaksi yang terlalu sering, sambil tetap melacak pergerakan.
Strategi EMA multi-indikator menghasilkan sinyal perdagangan dengan memanfaatkan keunggulan dari beberapa indikator seperti EMA, MACD, RSI, dan lain-lain untuk menilai arah tren pasar saat ini. Strategi ini dapat menganalisis pasar secara lebih komprehensif dan mengurangi terjadinya sinyal yang salah dibandingkan dengan strategi indikator tunggal. Strategi ini juga dapat ditingkatkan dengan metode seperti pengoptimalan parameter sehingga lebih sesuai dengan lingkungan pasar yang berubah-ubah dan kompleks.
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ally17
//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)
//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)
emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")
rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")
momlen=input(10, title="Mom Len")
//CALCOLI
var trigger = 0.0
var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0
var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0
var donvar =0.0
ema = ema(close,emalen)
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD
occ = ema(close,occlen) - ema(open,occlen)
rsi = rsi(close, rsilen) // RSI
stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch
basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev
moment = mom(close, momlen) // Momentum
Obv = obv // OBV
//PLOT
//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3
rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar := (close<lower)? 2 : (close>upper)? -2 : 0
trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar
longcondition = trigger>=7
closelong = trigger<3
shortcondition = trigger<=-7
closeshort = trigger >-3
trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)
if time > start and time < end
if longcondition
strategy.entry("LONG", long=strategy.long)
if closelong
strategy.close("LONG", comment="CLOSE LONG")
if time > start and time < end
if shortcondition
strategy.entry("SHORT", long=strategy.short)
if closeshort
strategy.close("SHORT", comment="CLOSE SHORT")
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)