Тенденция после стратегии остановки потерь на основе индикатора предупреждения о тренде

Автор:Чао Чжан, Дата: 2024-02-05 16:00:35
Тэги:

img

Обзор

Стратегия Trend Following Stop Loss - это стратегия торговли со стоп-лосом, основанная на индикаторе TrendAlert. Она определяет направление тренда через индикатор TrendAlert для реализации входа в тренд. В то же время она использует индикатор ATR для настройки стоп-лоса для контроля рисков.

Логика стратегии

Стратегия состоит из следующих основных частей:

  1. Индикатор TrendAlert определяет направление тренда. Когда TrendAlert больше 0, это бычий сигнал. Когда меньше 0, это медвежий сигнал.

  2. Показатель ATR рассчитывает диапазон недавних колебаний цен.

  3. Наименьший низкий наименьшийНизкий и самый высокий самый высокийВместе с ATR-стоп-потерями создают отслеживание стоп-потерь.

  4. Введите длинные или короткие позиции в соответствии с направлением сигнала тренда.

  5. Закрыть позиции, когда цена запускает остановку потерь или прибыль.

Стратегия фильтрует ложные сигналы путем оценки тренда, контролирует риски путем отслеживания стоп-лосса, обеспечивает рентабельность путем получения прибыли и улучшает стабильность торговой системы.

Анализ преимуществ

Основными преимуществами этой стратегии являются:

  1. Двойная гарантия фильтрации тренда и отслеживания стоп-лосса позволяет избежать рыночного шума и обеспечивает контролируемые торговые риски.

  2. Настройка адаптивного стоп-лосса ATR предотвращает чрезмерную оптимизацию и подходит для различных рыночных условий.

  3. Приобретение прибыли обеспечивает прибыльность и предотвращает пожирание прибыли.

  4. Логика стратегии ясна и лаконична, легко понятна и модифицирована, подходит для количественных трейдеров вторичного развития.

  5. Написанный на языке Pine Script, можно использовать непосредственно на платформе TradingView без навыков программирования.

Анализ рисков

В этой стратегии также есть некоторые риски:

  1. Неправильное суждение о тренде может вызвать ненужный вход и триггер стоп-лосса.

  2. Когда рынок сильно колеблется, ATR может недооценивать истинную амплитуду.

  3. Целевая прибыль может ограничивать пространство прибыли стратегии.

  4. Логика существования, основанная только на цене, должна сочетаться с управлением временем.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизировать параметры длины ATR atrLength и множителя остановки потерь atrStopMultiplier для корректировки чувствительности алгоритма остановки потерь.

  2. Попробуйте различные индикаторы тренда, чтобы найти лучшие возможности для входа.

  3. Выбор или корректировка целевого параметра получения прибыли в соответствии с особенностями конкретных видов торговли.

  4. Увеличить механизм временного остановки для предотвращения рисков на ночь.

  5. Профильтровать ложные прорывы путем объединения показателей объема торговли для повышения стабильности стратегии.

Заключение

В целом, это очень практичная стратегия отслеживания тренда стоп-лосса. Она использует индикаторы для определения направления тренда для достижения отслеживания тренда, устанавливая при этом адаптивные остановки для обеспечения контроля риска. Логика стратегии ясна и проста в использовании, что делает ее идеальной для обучения новичков. В то же время она также обеспечивает хорошую стратегию торговли для разработки передовой стратегии, которая стоит количественных трейдеров углубленное исследование и оптимизация.


/*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))

Больше