Tendencia de seguimiento de la estrategia de stop loss basada en el indicador de alerta de tendencia

El autor:¿ Qué pasa?, Fecha: 2024-02-05 16:00:35
Las etiquetas:

img

Resumen general

La estrategia Trend Following Stop Loss es una estrategia de trading de seguimiento de tendencias basada en el indicador TrendAlert. Determina la dirección de la tendencia a través del indicador TrendAlert para implementar la entrada de seguimiento de tendencias. Al mismo tiempo, utiliza el indicador ATR para establecer el stop loss para controlar riesgos.

Estrategia lógica

La estrategia consta de las siguientes partes principales:

  1. El indicador TrendAlert juzga la dirección de la tendencia. Cuando TrendAlert es mayor que 0, es una señal alcista. Cuando es menor que 0, es una señal bajista.

  2. El indicador ATR calcula el rango de fluctuación de precios reciente. ATR multiplicado por el multiplicador de pérdida de parada ATR atrStopMultiplier se utiliza como el stop loss fijo.

  3. El parámetro de estructura controla si está habilitado.

  4. Ingrese posiciones largas o cortas de acuerdo con la dirección de la señal de tendencia.

  5. Cierre de posiciones cuando el precio desencadena el stop loss o el take profit.

La estrategia filtra las señales falsas mediante el juicio de tendencia, controla los riesgos mediante el seguimiento de la parada de pérdida, garantiza la rentabilidad a través de la toma de ganancias y mejora la estabilidad del sistema de negociación.

Análisis de ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. La doble garantía de filtrado de tendencias y seguimiento de stop loss evita perseguir el ruido del mercado y garantiza riesgos comerciales controlables.

  2. El ajuste de stop loss adaptativo ATR evita la optimización excesiva y es adecuado para varios entornos de mercado.

  3. Tomar ganancias asegura la rentabilidad y evita consumir las ganancias.

  4. La lógica de la estrategia es clara y concisa, fácil de entender y modificar, adecuada para el desarrollo secundario de los operadores cuantitativos.

  5. Escrito en el lenguaje Pine Script, puede usarse directamente en la plataforma TradingView sin conocimientos de programación.

Análisis de riesgos

Esta estrategia también presenta algunos riesgos:

  1. El juicio de tendencia incorrecto puede causar entrada innecesaria y detener la pérdida.

  2. Cuando el mercado fluctúa violentamente, ATR puede subestimar la verdadera amplitud.

  3. El objetivo de obtener ganancias puede limitar el margen de ganancias de la estrategia. Ajuste el parámetro limitMultiplier según el mercado.

  4. La lógica existente basada únicamente en el precio debe combinarse con la gestión del tiempo.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar los parámetros ATR longitud atrLength y multiplicador de pérdida de parada atrStopMultiplier para ajustar la sensibilidad del algoritmo de pérdida de parada.

  2. Prueba diferentes indicadores de tendencia para encontrar mejores oportunidades de entrada.

  3. Seleccionar o ajustar el parámetro objetivo de obtención de beneficios de acuerdo con las características de las variedades de comercio específicas.

  4. Aumentar el mecanismo de stop loss de tiempo para evitar los riesgos durante la noche.

  5. Filtrar las falsas rupturas combinando indicadores de volumen de operaciones para mejorar la estabilidad de la estrategia.

Conclusión

En general, esta es una estrategia de seguimiento de tendencias muy práctica. Utiliza indicadores para determinar la dirección de la tendencia para lograr el seguimiento de tendencias, mientras que establece paradas adaptativas para garantizar el control de riesgos. La lógica de la estrategia es clara y fácil de usar, lo que la hace ideal para que los principiantes la aprendan. Al mismo tiempo, también proporciona un buen marco de estrategia comercial para el desarrollo de estrategias avanzadas, lo que vale la pena para los operadores cuantitativos investigación y optimización en profundidad.


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

Más.