Estrategia de stop loss siguiendo tendencias


Fecha de creación: 2024-02-05 16:00:35 Última modificación: 2024-02-05 16:00:35
Copiar: 0 Número de Visitas: 726
1
Seguir
1617
Seguidores

Estrategia de stop loss siguiendo tendencias

Descripción general

La estrategia de seguimiento de tendencias es una estrategia de seguimiento de pérdidas y pérdidas basada en el indicador de tendencias TrendAlert. Determina la dirección de la tendencia a través del indicador de tendencias TrendAlert y permite la entrada de seguimiento de tendencias.

Principio de estrategia

La estrategia se compone principalmente de las siguientes partes:

  1. El indicador de TrendAlert determina la dirección de la tendencia. Cuando el TrendAlert es mayor que 0 es una señal positiva, y menor que 0 es una señal negativa.

  2. El indicador ATR calcula el rango de fluctuación reciente de los precios. ATR multiplicado por el ATR StopMultiplier atStopMultiplier como punto de parada fijo.

  3. El precio más bajo (lowestLow) y el precio más alto (highestHigh) en combinación con el ATR para detener la construcción de la trazabilidad de la parada. Si el control de los parámetros de la estructura está activado.

  4. Entra en posiciones de venta o venta libre según la dirección de la señal de tendencia.

  5. Posiciones cerradas después de que el precio haya activado el stop loss o el stop loss.

La estrategia utiliza las tendencias para filtrar falsas señales, rastrear los riesgos de control de pérdidas, obtener ganancias para asegurar la rentabilidad y mejorar la estabilidad del sistema de negociación en general.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El filtro de tendencias y el seguimiento de los estancamientos son garantías dobles para evitar el ruido del mercado y garantizar que el riesgo de las operaciones esté bajo control.

  2. El ATR se adapta a la configuración de stop loss para evitar la optimización excesiva y se aplica a una variedad de entornos de mercado.

  3. El objetivo de la suspensión es asegurar el beneficio y evitar que se lo coman.

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

  5. Escrito en el lenguaje de scripts Pine, se puede usar directamente en la plataforma TradingView sin necesidad de conocimientos de programación.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Los errores en el juicio de tendencias pueden provocar que se activen entradas y paradas innecesarias. Se puede relajar adecuadamente la parada de pérdidas o filtrar las señales de entrada.

  2. Cuando la situación es muy fluctuante, el ATR puede subestimar la amplitud real. En este caso, se puede aumentar el multiplicador de pérdidas de ATRatrStopMultiplier.

  3. El objetivo de la parada puede limitar el espacio de ganancias de la estrategia. Se puede ajustar en función del parámetro limitMultiplier del mercado.

  4. La lógica del código exist se basa solo en el precio, y en realidad debe combinarse con la gestión del tiempo.

Dirección de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimización de los parámetros ATR longitud atrLength y el multiplicador de parada atrStopMultiplier, ajustar la sensibilidad del algoritmo de parada.

  2. En el caso de las mujeres, el objetivo de este estudio es evaluar las tendencias y los indicadores para encontrar mejores oportunidades de ingreso.

  3. Seleccionar o ajustar los parámetros de la parada objetivo según las características de la variedad de transacción específica.

  4. Aumentar el mecanismo de tiempo de espera para evitar el riesgo de pasar la noche solo.

  5. La combinación de filtros de volumen de transacciones y brechas falsas mejora la estabilidad de la estrategia.

Resumir

En general, esta estrategia 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 la tendencia, mientras que se establece para adaptarse a la pérdida para asegurar el control del riesgo. La estrategia es lógica clara, fácil de usar, muy adecuada para el aprendizaje de los principiantes.

Código Fuente de la Estrategia
/*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))