
Strategi ini menggabungkan indikator saluran penyebaran dan indikator MACD untuk menilai tren, dan merupakan strategi pelacakan tren yang khas. Lakukan lebih banyak ketika harga menerobos tren dan indikator MACD muncul di garpu emas, lakukan shorting ketika harga turun dan indikator MACD muncul di garpu mati, gunakan indikator ATR untuk menghitung stop loss.
Hitung indikator MACD, termasuk garis cepat, garis lambat, dan histogram.
Hitung saluran penyebaran ke atas ke bawah. Harga tertinggi di atas N hari, harga terendah di bawah N hari.
Ketika harga menembus garis atas dan MACD Fast Line menembus garis lambat, lakukan lebih banyak.
Ketika harga turun dan MACD Fast Line menembus Slow Line ke bawah, lakukan shorting.
Stop loss untuk strategi ini dihitung dengan menggunakan indikator ATR, yang ditetapkan sebagai nilai ATR dari jarak harga ke stop loss dengan faktor .
Ketika ada sinyal harga berbalik, maka posisi saat ini akan dihapus.
Strategi ini menggabungkan indikator trend judging dan indikator channel untuk secara efektif melacak tren. Indikator MACD untuk menentukan tren dan intensitas harga, dan indikator channel untuk menentukan arah penyebaran. Stop loss ATR untuk membatasi kerugian tunggal.
Keuntungan adalah sebagai berikut:
Parameter kebijakan sederhana dan mudah diterapkan.
Ini adalah salah satu cara yang paling efektif untuk memulai perdagangan Forex dengan cepat.
ATR yang rusak dapat mengendalikan risiko.
Pengunduran diri dapat dikendalikan.
Strategi ini juga memiliki beberapa risiko:
Setting parameter saluran penyebaran yang tidak tepat dapat menyebabkan sinyal palsu.
Setting parameter MACD yang tidak tepat juga dapat menyebabkan keterlambatan sinyal peringatan dari Sistem Administrasi Viticulture.
Stop loss yang terlalu besar dapat menyebabkan kerugian yang lebih besar.
Jika terjadi pergeseran yang drastis, kemungkinan akan terjadi kerugian.
Strategi ini dapat menyebabkan over-trading.
Solusi yang sesuai:
Parameter optimasi, pilih saham dengan hati-hati.
Stop loss yang ketat, tracking stop loss.
Mengatur manajemen posisi dengan tepat.
Strategi ini dapat dioptimalkan dengan:
Optimalkan parameter MACD untuk meningkatkan sensitivitas indikator.
Mengoptimalkan algoritma stop loss agar stop loss lebih dekat dengan harga.
Menambahkan mekanisme manajemen posisi, menyesuaikan posisi sesuai dengan kekuatan dan kelemahan tren.
Menambahkan kondisi filter untuk menghindari sinyal palsu.
Meningkatkan kriteria untuk memilih varietas yang diperdagangkan.
Meningkatkan penilaian jangka waktu transaksi.
Strategi ini secara keseluruhan adalah strategi pelacakan tren yang khas. Strategi ini menggabungkan indikator saluran penyebaran untuk menentukan arah tren dan indikator MACD untuk menentukan kekuatan tren. Dapat dilakukan secara berurutan, secara efektif mengendalikan risiko.
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
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/
// © Robrecht99
//@version=5
strategy("Trend Following with Donchian Channels and MACD", overlay=false, margin_long=100, margin_short=100, pyramiding=3)
// MACD //
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
col_macd = input(#2962FF, "MACD Line ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
plot(macd, title="MACD", color=col_macd)
plot(signal, title="Signal", color=col_signal)
// Donchian Channels //
Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
//ATR and Position Size //
strategy.initial_capital = 50000
length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))
// Buy and Sell Conditions //
entrycondition1 = ta.crossover(macd, signal)
entrycondition2 = macd > signal
entrycondition3 = macd and signal > hist
sellcondition1 = ta.crossover(signal, macd)
sellcondition2 = signal > macd
sellcondition3 = macd and signal < hist
// Buy and Sell Signals //
if (close > h1 and entrycondition2 and entrycondition3)
strategy.entry("long", strategy.long, qty=amount)
stoploss = close - atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2 and sellcondition3)
strategy.close(id="long")
if (close < l1 and sellcondition2 and sellcondition3)
strategy.entry("short", strategy.short, qty=amount)
stoploss = close + atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2 and entrycondition3)
strategy.close(id="short")