Стратегия Trend Following Stop Loss - это стратегия торговли со стоп-лосом, основанная на индикаторе TrendAlert. Она определяет направление тренда через индикатор TrendAlert для реализации входа в тренд. В то же время она использует индикатор ATR для настройки стоп-лоса для контроля рисков.
Стратегия состоит из следующих основных частей:
Индикатор TrendAlert определяет направление тренда. Когда TrendAlert больше 0, это бычий сигнал. Когда меньше 0, это медвежий сигнал.
Показатель ATR рассчитывает диапазон недавних колебаний цен.
Наименьший низкий наименьшийНизкий и самый высокий самый высокийВместе с ATR-стоп-потерями создают отслеживание стоп-потерь.
Введите длинные или короткие позиции в соответствии с направлением сигнала тренда.
Закрыть позиции, когда цена запускает остановку потерь или прибыль.
Стратегия фильтрует ложные сигналы путем оценки тренда, контролирует риски путем отслеживания стоп-лосса, обеспечивает рентабельность путем получения прибыли и улучшает стабильность торговой системы.
Основными преимуществами этой стратегии являются:
Двойная гарантия фильтрации тренда и отслеживания стоп-лосса позволяет избежать рыночного шума и обеспечивает контролируемые торговые риски.
Настройка адаптивного стоп-лосса ATR предотвращает чрезмерную оптимизацию и подходит для различных рыночных условий.
Приобретение прибыли обеспечивает прибыльность и предотвращает пожирание прибыли.
Логика стратегии ясна и лаконична, легко понятна и модифицирована, подходит для количественных трейдеров
Написанный на языке Pine Script, можно использовать непосредственно на платформе TradingView без навыков программирования.
В этой стратегии также есть некоторые риски:
Неправильное суждение о тренде может вызвать ненужный вход и триггер стоп-лосса.
Когда рынок сильно колеблется, ATR может недооценивать истинную амплитуду.
Целевая прибыль может ограничивать пространство прибыли стратегии.
Логика существования, основанная только на цене, должна сочетаться с управлением временем.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать параметры длины ATR atrLength и множителя остановки потерь atrStopMultiplier для корректировки чувствительности алгоритма остановки потерь.
Попробуйте различные индикаторы тренда, чтобы найти лучшие возможности для входа.
Выбор или корректировка целевого параметра получения прибыли в соответствии с особенностями конкретных видов торговли.
Увеличить механизм временного остановки для предотвращения рисков на ночь.
Профильтровать ложные прорывы путем объединения показателей объема торговли для повышения стабильности стратегии.
В целом, это очень практичная стратегия отслеживания тренда стоп-лосса. Она использует индикаторы для определения направления тренда для достижения отслеживания тренда, устанавливая при этом адаптивные остановки для обеспечения контроля риска. Логика стратегии ясна и проста в использовании, что делает ее идеальной для обучения новичков. В то же время она также обеспечивает хорошую стратегию торговли для разработки передовой стратегии, которая стоит количественных трейдеров
/*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))