Strategi Stop Loss Trend Following adalah strategi perdagangan stop loss yang didasarkan pada indikator TrendAlert. Strategi ini menentukan arah tren melalui indikator TrendAlert untuk menerapkan entri trend tracking. Pada saat yang sama, indikator ATR digunakan untuk mengatur stop loss untuk mengendalikan risiko.
Strategi ini terdiri dari bagian-bagian utama berikut:
Indikator TrendAlert menilai arah tren. Ketika TrendAlert lebih besar dari 0, itu adalah sinyal bullish. Ketika kurang dari 0, itu adalah sinyal bearish.
Indikator ATR menghitung kisaran fluktuasi harga baru-baru ini. ATR dikalikan dengan ATR stop loss multiplier atrStopMultiplier digunakan sebagai stop loss tetap.
Parameter struktur mengontrol apakah itu diaktifkan.
Masukkan posisi panjang atau pendek sesuai arah sinyal tren. Setelah masuk, atur Take Profit dan Stop Loss.
Tutup posisi ketika harga memicu stop loss atau take profit.
Strategi ini menyaring sinyal palsu melalui penilaian tren, mengendalikan risiko melalui pelacakan stop loss, memastikan profitabilitas melalui mengambil keuntungan, dan meningkatkan stabilitas sistem perdagangan.
Keuntungan utama dari strategi ini adalah:
Jaminan ganda penyaringan tren dan pelacakan stop loss menghindari mengejar kebisingan pasar dan memastikan risiko perdagangan yang terkontrol.
Pengaturan stop loss adaptif ATR mencegah atas optimasi dan cocok untuk berbagai lingkungan pasar.
Mengambil keuntungan memastikan profitabilitas dan mencegah memakan keuntungan.
Logika strategi jelas dan ringkas, mudah dimengerti dan dimodifikasi, cocok untuk pedagang kuantitatif
Ditulis dalam bahasa Pine Script, dapat digunakan langsung di platform TradingView tanpa keterampilan pemrograman.
Ada juga beberapa risiko dalam strategi ini:
Penghakiman tren yang salah dapat menyebabkan masuk yang tidak perlu dan pemicu stop loss.
Ketika pasar berfluktuasi dengan keras, ATR dapat meremehkan amplitudo yang sebenarnya. Pada saat ini, multiplier stop loss ATR atrStopMultiplier dapat ditingkatkan.
Target mengambil keuntungan dapat membatasi ruang keuntungan dari strategi.
Logika eksistensi yang hanya didasarkan pada harga harus dikombinasikan dengan manajemen waktu.
Strategi dapat dioptimalkan dalam aspek berikut:
Mengoptimalkan parameter panjang ATR atrLength dan stop loss multiplier atrStopMultiplier untuk menyesuaikan sensitivitas algoritma stop loss.
Cobalah indikator tren yang berbeda untuk menemukan peluang masuk yang lebih baik.
Pilih atau sesuaikan parameter target mengambil keuntungan sesuai dengan karakteristik varietas perdagangan tertentu.
Meningkatkan mekanisme stop loss waktu untuk menghindari risiko overnight.
Menyaring kegagalan palsu dengan menggabungkan indikator volume perdagangan untuk meningkatkan stabilitas strategi.
Secara umum, ini adalah strategi stop loss pelacakan tren yang sangat praktis. Ini menggunakan indikator untuk menentukan arah tren untuk mencapai pelacakan tren, sambil mengatur stop adaptif untuk memastikan pengendalian risiko. Logika strategi jelas dan mudah digunakan, menjadikannya ideal untuk pemula untuk dipelajari. Pada saat yang sama, ini juga menyediakan kerangka strategi perdagangan yang baik untuk pengembangan strategi lanjutan, yang layak bagi pedagang kuantitatif
/*backtest start: 2023-01-29 00:00:00 end: 2024-02-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © jaque_verdatre //@version=5 strategy("TrendAlert Based", overlay = true) // Get inputs TrendAlert = input.source(close, "TrendAlert") atrLength = input.int(title="ATR Length", defval=15, minval=1) useStructure = input.bool(title="Use Structure?", defval=true) lookback = input.int(title="How Far To Look Back For High/Lows", defval=8, minval=1) atrStopMultiplier = input.float(title="ATR Multiplier", defval=0.2, minval=0.1) LimitMultiplier = input.float(title = "Limit Multiplier", defval = 0.5, minval = 0.1) PineConnectorID = input.int(title = "Pine Connector ID",defval = 0) CurrencyToSend = input.string(title = "personilized currency", defval = "ETHUSD") Risk = input.int(title = "risk in % to send", defval = 10, minval = 1) // Calculate data atr = ta.atr(atrLength) lowestLow = ta.lowest(low, lookback) highestHigh = ta.highest(high, lookback) longStop = (useStructure ? lowestLow : close) - atr * atrStopMultiplier shortStop = (useStructure ? highestHigh : close) + atr * atrStopMultiplier // Draw data to chart plot(atr, color=color.rgb(33, 149, 243), title="ATR", display = display.none) plot(longStop, color=color.green, title="Long Trailing Stop") plot(shortStop, color=color.red, title="Short Trailing Stop") var float LimitL = na var float LimitS = na var float LPosPrice = na var float SPosPrice = na var float LPosLongStop = na var float SPosShortStop = na KnowLimit (PosPrice, PosStop) => (PosPrice-PosStop)*LimitMultiplier+PosPrice NotInTrade = strategy.position_size == 0 InLongTrade = strategy.position_size > 0 InShortTrade = strategy.position_size < 0 longCondition = TrendAlert > 0 and NotInTrade if (longCondition) LPosPrice := close LPosLongStop := longStop LimitL := KnowLimit(LPosPrice, LPosLongStop) strategy.entry("long", strategy.long) LTPPip = LimitL-LPosPrice LSLPip = LPosPrice-longStop alert(str.tostring(PineConnectorID)+',buy,'+str.tostring(CurrencyToSend)+',risk='+str.tostring(Risk)+',sl='+str.tostring(LSLPip)+'tp='+str.tostring(LTPPip), alert.freq_once_per_bar_close) strategy.exit("exit", "long", stop = longStop, limit = LimitL) shortCondition = TrendAlert < 0 and NotInTrade if (shortCondition) SPosPrice := close SPosShortStop := shortStop LimitS := KnowLimit(SPosPrice, SPosShortStop) strategy.entry("short", strategy.short) STPPip = SPosPrice-LimitS SSLPip = shortStop - SPosPrice alert(str.tostring(PineConnectorID)+',sell,ETHUSD,risk=10,sl='+str.tostring(SSLPip)+'tp='+str.tostring(STPPip), alert.freq_once_per_bar_close) strategy.exit("exit", "short", stop = shortStop, limit = LimitS) plotshape(longCondition, color = color.green, style = shape.labelup, location = location.belowbar, size = size.normal, title = "Long Condition") plotshape(shortCondition, color = color.red, style = shape.labeldown, location = location.abovebar, size = size.normal, title = "Short Condition") if (InShortTrade) LimitL := close LPosLongStop := close LPosPrice := close PlotLongTakeProfit = plot(LimitL, color = InLongTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Long Take Profit") PlotLongStopLoss = plot(LPosLongStop, color = InLongTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Long Stop Loss") PlotLongPosPrice = plot(LPosPrice, color = InLongTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Long Position Price") if (InLongTrade) LimitS := close SPosShortStop := close SPosPrice := close PlotShortTakeProfit = plot(LimitS, color = InShortTrade ? color.rgb(0, 255, 64) : color.rgb(120, 123, 134, 100), title = "Short Take Profit") PlotShortStopLoss = plot(SPosShortStop, color = InShortTrade ? color.rgb(255, 0, 0) : color.rgb(120, 123, 134, 100), title = "Short Stop Loss") PlotShortPosPrice = plot(SPosPrice, color = InShortTrade ? color.gray : color.rgb(120, 123, 134, 100), title = "Short Position Price") fill(PlotLongPosPrice, PlotLongTakeProfit, color = InLongTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100)) fill(PlotShortPosPrice, PlotShortTakeProfit, color = InShortTrade ? color.rgb(0, 255, 0, 95) : color.rgb(0, 255, 0, 100)) fill(PlotLongPosPrice, PlotLongStopLoss, color = InLongTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100)) fill(PlotShortPosPrice, PlotShortStopLoss, color = InShortTrade ? color.rgb(255, 0, 0, 95) : color.rgb(255, 0, 0, 100))