
Strategi ini menggabungkan sinyal terobosan dari indeks moving average dan MACD untuk menetapkan dua periode kepemilikan yang panjang dan menguntungkan melalui trend tracking dan reversal trading.
Strategi ini didasarkan pada prinsip-prinsip berikut:
Perhitungan indeks bergerak rata-rata 200 hari untuk menentukan arah tren besar. Closes harga lebih tinggi dari rata-rata adalah bullish, dan lebih rendah dari itu adalah bearish.
Indeks harga rata-rata bergerak digariskan berdasarkan harga tertinggi, terendah, dan harga penutupan, dan perhitungan rata-rata tersebut dengan perbedaan harga tertinggi dan terendah, untuk membangun grafik MACD.
Hitung moving average 9 hari dari grafik MACD, dan bangun garis sinyal MACD.
MACD menghasilkan sinyal beli saat menerobos garis sinyal dari bawah ke atas; menghasilkan sinyal jual saat menerobos garis sinyal dari atas ke bawah.
Dengan mengkombinasikan arah tren besar, dapat dipastikan apakah tren masuk ke tren yang lebih panjang atau pembalikan garis pendek.
Strategi ini menggabungkan perdagangan tren dan reversal untuk melacak tren dalam periode yang lebih panjang dan menangkap peluang reversal pada garis pendek, dengan fleksibilitas untuk menghadapi situasi pasar yang berbeda.
Keuntungan spesifiknya adalah:
Gunakan 200 hari moving average untuk menentukan arah tren utama, dan hindari operasi berlawanan arah.
Indikator MACD lebih sensitif terhadap perubahan harga jangka pendek dan dapat menangkap peluang reversal yang lebih efektif.
Kombinasi MACD di bawah pengaturan parameter yang berbeda, memungkinkan sinyal perdagangan pada beberapa frame waktu.
Dengan strategi stop loss, Anda dapat mengontrol kerugian secara efektif.
Strategi ini memiliki risiko utama sebagai berikut:
Indikator jangka panjang mungkin memiliki selisih waktu tertentu ketika sinyal perdagangan muncul, sehingga perlu untuk menilai tren besar secara komprehensif.
MACD sebagai indikator reversal, indikatornya akan mengurangi interpretasi ketika terjadi situasi yang dramatis.
Stop loss tidak disesuaikan, mungkin terlalu cepat atau terlalu besar.
Sinyal-sinyal penembusan dianggap terlalu sering dan dapat menghasilkan lebih banyak sinyal palsu.
Solusi yang sesuai:
Mengoptimalkan parameter MACD, menyesuaikan sensitivitas indikator.
Untuk menghindari sinyal MACD yang membabi buta, gunakanlah indikator lain untuk menilai kondisi.
Pengujian dan pengoptimalan parameter strategi stop loss
Meningkatkan kondisi penyaringan untuk menghindari terlalu banyak sinyal palsu.
Strategi ini dapat dioptimalkan dari beberapa arah:
Optimalkan parameter moving average dan MACD untuk mendapatkan sinyal trading yang lebih efektif.
Menambahkan beberapa indikator lain untuk meningkatkan efektivitas strategi.
Set up a position sizing strategy rather than fixed lots for each trade. Set up a position sizing strategy rather than fixed lots for each trade.
Add more advanced exit rules rather than just stop loss. Such as profit target, trailing stops etc. Menambahkan aturan keluar yang lebih maju daripada hanya stop loss, seperti stop loss, move stop loss, dan lain-lain.
Backtest with more complex fee settings to better simulate real trading environoment. Backtest dengan pengaturan biaya yang lebih kompleks untuk lebih baik mensimulasikan lingkungan perdagangan nyata.
Walk forward analysis, robustness test among multiple products to enhance reliability. Analisis langkah maju, pengujian keandalan di antara berbagai produk untuk meningkatkan keandalan.
Strategi ini menggabungkan perdagangan tren dan reversal. Kunci utama adalah pengaturan parameter indikator dan pemahaman yang akurat tentang tren besar. Dengan terus mengoptimalkan pengaturan parameter, meningkatkan kondisi gelombang, dan lain-lain, strategi ini dapat membuat penilaian sinyal pasar lebih akurat dan menghasilkan keuntungan yang lebih stabil. Secara keseluruhan, strategi ini memiliki integrasi yang tinggi dan prospek penerapan yang baik.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Strategia EMA + Impulse MACD", shorttitle="EMA+IMACD", overlay=true)
// Impostazioni
ema_length = input(200, title="Periodo EMA a 200", type=input.integer)
lengthMA = input(34, title="Periodo EMA", type=input.integer)
lengthSignal = input(9, title="Periodo Signal", type=input.integer)
lengthImpulseMACD = input(12, title="Periodo Impulse MACD", type=input.integer)
lengthImpulseMACDSignal = input(9, title="Periodo Impulse MACD Signal", type=input.integer)
stopLossPeriod = input(20, title="Periodo Stop Loss", type=input.integer)
var float ema200 = na
if bar_index >= ema_length
ema200 := ema(close, ema_length)
// Impulse MACD
var float hi = na
var float lo = na
var float mi = na
var float impulseMACD = na
var float impulseMACDSignal = na
calc_smma(src, len) =>
var float smma = na
if na(smma)
smma := sma(src, len)
else
smma := (smma[1] * (len - 1) + src) / len
smma
calc_zlema(src, length) =>
ema1 = ema(src, length)
ema2 = ema(ema1, length)
d = ema1 - ema2
ema1 + d
if bar_index >= lengthMA
src = hlc3
hi := calc_smma(high, lengthMA)
lo := calc_smma(low, lengthMA)
mi := calc_zlema(src, lengthMA)
impulseMACD := (mi > hi) ? (mi - hi) : (mi < lo) ? (mi - lo) : 0
impulseMACDSignal := sma(impulseMACD, lengthSignal)
// Calcolo dello stop loss
var float stopLossLong = na
var float stopLossShort = na
stopLossLong := lowest(low, stopLossPeriod)
stopLossShort := highest(high, stopLossPeriod)
// Calcolo del take profit
var float takeProfitLong = na
var float takeProfitShort = na
if not na(stopLossLong)
takeProfitLong := close + (close - stopLossLong) * 1.5
if not na(stopLossShort)
takeProfitShort := close - (stopLossShort - close) * 1.5
// Condizioni per aprire una posizione long
longCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close > ema200 and impulseMACD < 0 and impulseMACDSignal < 0 and crossover(impulseMACD, impulseMACDSignal)
// Condizioni per aprire una posizione short
shortCondition = not na(ema200) and not na(impulseMACD) and not na(impulseMACDSignal) and close < ema200 and impulseMACD > 0 and impulseMACDSignal > 0 and crossunder(impulseMACD, impulseMACDSignal)
// Disegna l'EMA 200 sul grafico
plot(ema200, color=color.blue, title="EMA 200")
// Imposta lo stop loss e il take profit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong)
strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)
// Impulse MACD
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(impulseMACD, color=color.red, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(impulseMACDSignal, color=color.blue, linewidth=2, title="ImpulseMACDSignal", style=plot.style_histogram)
// Disegna le operazioni long e short sul grafico
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, title="Short Entry")