
Trend Tracking Stop Loss Strategi adalah strategi trading stop loss yang didasarkan pada indikator TrendAlert. Strategi ini menggunakan indikator TrendAlert untuk menentukan arah tren, dan untuk melakukan trend tracking entry. Strategi ini juga menggunakan indikator ATR untuk mengatur posisi stop loss dan untuk mengendalikan risiko.
Strategi ini terdiri dari beberapa bagian utama:
Indikator TrendAlert menentukan arah tren. Ketika TrendAlert lebih besar dari 0 adalah sinyal bullish, kurang dari 0 adalah sinyal bearish.
Indikator ATR menghitung kisaran pergerakan harga terkini. ATR dikali ATR stop loss multiplier atStopMultiplier sebagai stop loss tetap.
lowestLow dan highestHigh digabungkan dengan ATR Stop Loss untuk membangun Tracking Stop Loss. Menggunakan struktur parameter untuk mengontrol apakah ini diaktifkan.
Masukkan posisi beli atau beli sesuai arah sinyal tren. Setelah masuk, atur Take Profit dan Stop Loss.
Bila harga memicu stop loss atau stop loss, maka posisi tersebut akan ditutup.
Strategi ini memfilter sinyal palsu dari tren, melacak risiko pengendalian kerugian, memastikan keuntungan dari keuntungan, dan meningkatkan stabilitas sistem perdagangan secara keseluruhan.
Strategi ini memiliki beberapa keuntungan utama:
Filtrasi tren dan pelacakan stop loss merupakan jaminan ganda, menghindari kebisingan pasar dan memastikan risiko perdagangan terkendali.
ATR memiliki pengaturan Stop Loss Adaptif untuk mencegah over-optimisasi dan dapat digunakan dalam berbagai situasi pasar.
Tujuan dari stop loss adalah untuk memastikan keuntungan dan menghindari kehilangan keuntungan.
Logika strategi jelas dan ringkas, mudah dimengerti modifikasi, cocok untuk pengembangan kedua pedagang kuantitatif.
Ini ditulis dalam bahasa skrip Pine, yang dapat digunakan langsung di platform TradingView, tanpa memerlukan dasar pemrograman.
Strategi ini juga memiliki beberapa risiko:
Kesalahan penilaian tren dapat menyebabkan entry dan stop loss yang tidak perlu dipicu. Anda dapat dengan tepat melonggarkan stop loss atau memfilter sinyal entry.
ATR mungkin meremehkan amplitudo riil saat terjadi fluktuasi besar. Pada saat ini, ATR dapat meningkatkan stop loss multiplier.
Target stop dapat membatasi ruang keuntungan strategi. Dapat disesuaikan dengan parameter limitMultiplier pasar.
Kode exist logika hanya berdasarkan harga, yang sebenarnya harus digabungkan dengan manajemen waktu.
Strategi ini dapat dioptimalkan dengan:
Optimalkan parameter ATR lengthatrLength dan stop loss multiplieratrStopMultiplier, menyesuaikan sensitivitas algoritma stop loss.
Mencoba berbagai indikator untuk menilai tren dan mencari waktu yang lebih baik untuk masuk.
Pilih atau sesuaikan parameter target stop sesuai dengan karakteristik varietas transaksi tertentu.
Meningkatkan mekanisme penghentian waktu untuk menghindari risiko menginap sendirian.
Dengan adanya penyaringan volume transaksi, penembusan palsu meningkatkan stabilitas strategi.
Strategi ini secara keseluruhan merupakan strategi tracking trend tracking stop loss yang sangat praktis. Strategi ini menggunakan indikator untuk menentukan arah tren untuk melakukan trend tracking, sambil mengatur stop loss untuk memastikan pengendalian risiko. Strategi ini logisnya jelas, mudah digunakan, sangat cocok untuk pemula.
/*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))