
Strategi ini adalah sistem pelacakan tren klasik. Ini menggunakan moving average untuk menentukan arah tren dan masuk ke dalam ketika melewati saluran Dongxian. Pengaturan parameter saluran Dongxian pada 50 hari dapat secara efektif menyaring kebisingan pasar jangka pendek.
Strategi ini didasarkan pada beberapa poin:
Indikator ini digunakan untuk menentukan tren dengan menggunakan Indikator Moving Average 40 dan 120 hari. Ketika garis cepat melewati garis lambat dari bawah, ini adalah sinyal garpu emas, yang menunjukkan masuk ke tren naik; Ketika garis cepat melewati garis lambat dari atas ke bawah, ini adalah sinyal garpu mati, yang menunjukkan masuk ke tren turun.
Parameter Tangxian Channel diatur pada 50 hari, memfilter pergerakan pasar jangka pendek. Hanya melakukan lebih banyak ketika harga menembus tren naik, dan kosong ketika harga menembus tren turun, untuk menghindari penargetan.
Stop loss ditetapkan sebagai 4 kali ATR di bawah harga. ATR dapat secara efektif mengukur volatilitas dan risiko pasar, dan stop loss ditetapkan sebagai beberapa kali lipatnya untuk mengendalikan kerugian dalam satu transaksi.
Indikator Moving Average lebih sesuai dengan tren harga saat ini, sedangkan Simple Moving Average terlalu halus.
Periode 50 hari dihubungkan dengan garis rata-rata 40 dan 120 hari, yang dapat secara efektif memfilter penembusan palsu.
Strategi ini memiliki keuntungan sebagai berikut:
Kombinasi Moving Average dapat secara efektif menentukan arah tren pasar. Garis rata-rata 40 hari dapat menangkap tren jangka pendek, dan garis rata-rata 120 hari dapat menentukan tren jangka panjang.
Saluran Tongxian memfilter kebisingan, menghindari mengejar naik dan turun. Hanya dengan harga yang menembus saluran masuk, dapat secara efektif menghindari zona getaran di tengah pasar perdagangan.
Stop loss diatur secara wajar, sehingga dapat mengendalikan kerugian transaksi tunggal dan menghindari eksposur. Kontrol kerugian tunggal dapat menjamin keberlanjutan keuntungan.
Indikator Moving Average lebih sesuai dengan tren perubahan harga, dan sistem dapat memegang posisi lebih lama, sesuai dengan pemikiran perdagangan tren.
Parameter moving average dipilih dengan mempertimbangkan sensitivitas untuk menangkap tren dan stabilitas untuk memfilter kebisingan.
Strategi ini juga memiliki beberapa risiko:
Risiko yang ditimbulkan oleh posisi jangka panjang: Strategi ini adalah strategi mengikuti tren, dan akan menghadapi kerugian yang lebih besar jika terjadi perombakan horizontal jangka panjang atau pembalikan tren.
Risiko False Breakout: Ketika harga menyentuh dekat dengan saluran, mungkin ada persentase False Breakout yang menyebabkan transaksi yang tidak perlu.
Risiko pengaturan parameter: Pengaturan parameter moving average dan channel terlalu subjektif, dan kombinasi parameter yang diperlukan untuk menyesuaikan pasar yang berbeda dapat mempengaruhi stabilitas sistem.
Stop loss terlalu kecil: Stop loss yang terlalu kecil, akan menghadapi terlalu banyak stop loss yang mempengaruhi keuntungan.
Solusi yang sesuai:
Strategi ini dapat dioptimalkan dari beberapa arah:
Uji kombinasi garis rata yang berbeda untuk mencari kombinasi parameter terbaik. Uji kombinasi rata-rata bergerak sederhana, indeks, dan Hull.
Optimalkan siklus dan parameter saluran untuk membuat sinyal penembusan lebih efektif. Optimalkan frekuensi fluktuasi yang dapat digabungkan dengan pasar.
Optimalkan strategi stop loss, gunakan trend tracking stop loss saat tren berjalan, gunakan stop loss tetap setelah tren berakhir.
Menggunakan indikator MACD, KD dan lain-lain untuk melakukan verifikasi multi faktor, meningkatkan akurasi sinyal.
Meningkatkan strategi manajemen posisi, menaikkan posisi saat tren berjalan, dan mengoptimalkan keuntungan.
Pilih kombinasi parameter sesuai dengan karakteristik varietas yang berbeda, sehingga parameter sistem lebih robust.
Strategi ini secara keseluruhan lebih khas dan sederhana sebagai sistem pelacakan tren. Inti adalah penggunaan rata-rata bergerak dan penyaringan terobosan saluran. Strategi stop-loss juga klasik dan praktis. Strategi ini dapat digunakan sebagai kerangka dasar untuk pengembangan sistem kuantitatif, juga dapat langsung digunakan, dan penghasilannya lebih stabil.
/*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("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)
// Backtest Range //
Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")
//Moving Averages //
len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")
// 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)
strategy.initial_capital = 50000
//ATR and Position Size //
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(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast
// Buy and Sell Signals //
if (close > h1 and entrycondition2)
strategy.entry("long", strategy.long, qty=amount)
stoploss = close - atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
strategy.close(id="long")
if (close < l1 and sellcondition2)
strategy.entry("short", strategy.short, qty=amount)
stoploss = close + atr * 4
strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
strategy.close(id="short")