Tendencia siguiendo la estrategia con stop loss de seguimiento

El autor:¿ Qué pasa?, Fecha: 2023-10-30 15:21:54
Las etiquetas:

img

Resumen general

Esta estrategia combina el seguimiento de tendencias con el seguimiento de stop loss y toma lógica de ganancias para seguir continuamente la tendencia para obtener ganancias. Utiliza promedios móviles para determinar la dirección de la tendencia y generar señales comerciales cuando el precio rompe las líneas MA. Después de ingresar a una posición larga, la estrategia establece stop loss basado en el valor ATR y lo ajusta con la lógica de stop loss para seguir la tendencia. Cuando el precio sube a un cierto nivel, se necesita un beneficio parcial para bloquear algunas ganancias.

Estrategia lógica

  1. Establecer backtest inicio y parada de la marca de tiempo basado en la entrada del usuario.

  2. Inicie el precio de parada largo y corto, y los porcentajes de seguimiento.

  3. Ingrese largo cuando el precio se rompe por encima de la línea MA.

  4. Calcular la distancia de stop loss con ATR y establecer el precio de stop loss.

  5. A medida que el precio continúa subiendo, se detiene la pérdida hacia arriba para obtener más ganancias.

  6. Cuando el precio alcanza el umbral de ganancias, obtén ganancias parciales.

  7. Entre corto cuando el precio se rompe por debajo de la línea MA.

  8. Calcular la distancia de stop loss con ATR y establecer el precio de stop loss.

  9. A medida que el precio continúa cayendo, el rastro de pérdidas para bloquear más ganancias.

  10. Cuando el precio alcanza el umbral de ganancias, obtén ganancias parciales.

Ventajas

  • El stop loss de seguimiento puede seguir las tendencias y capturar más ganancias mientras protege las ganancias.

  • El método ATR dinámico de stop loss reacciona mejor a las oscilaciones del mercado que el método stop loss fijo.

  • La obtención parcial de ganancias ayuda a asegurar algunas ganancias y reduce los riesgos de retirada.

  • Lógica simple y clara, fácil de entender e implementar.

Los riesgos

  • La inversión repentina de la tendencia puede desencadenar una gran pérdida con una amplia distancia de stop loss.

  • El stop loss basado en ATR puede ser demasiado sensible y ser detenido prematuramente.

  • Una proporción de ganancias parciales inadecuada puede perder las tendencias o aumentar las pérdidas.

  • Muchos parámetros necesitan optimización, como el período ATR, porcentajes de retraso, ratio de toma de ganancias.

  • La estrategia se basa únicamente en MA y ATR, pueden ocurrir señales erróneas.

Optimización

  • Agregue otros indicadores como MACD, KD para filtrar las señales de negociación y evitar señales MA incorrectas.

  • Considere los ratios dinámicos de ganancias basados en la fuerza de la tendencia.

  • Prueba diferentes períodos de ATR para obtener una estabilidad óptima o utiliza otros indicadores para detener la pérdida.

  • Introduzca el aprendizaje automático para optimizar automáticamente los parámetros y ajustarlos dinámicamente.

  • Utilice modelos de aprendizaje profundo para detectar tendencias y generar señales automáticamente.

Resumen de las actividades

La estrategia integra trailing stop loss, dynamic ATR stop loss y partial take profit para seguir las tendencias y controlar los drawdowns. Pero tiene algunas limitaciones como la simple detección de tendencias y la difícil optimización de parámetros. Esto da buenas direcciones para mejorar aún más la estrategia mediante el uso de más técnicas e indicadores para mejorar la estabilidad y la rentabilidad.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipefs

//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)

//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false

//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0

long_stop_price := if (strategy.position_size > 0)
    stopValue = close * (1 - long_trail_perc)
    max(stopValue, long_stop_price[1])
else
    0

short_stop_price := if (strategy.position_size < 0)
    stopValue = close * (1 + short_trail_perc)
    min(stopValue, short_stop_price[1])
else
    999999

//Função de Debug
debug(value) =>
    x = bar_index
    y = close
    label.new(x, y, tostring(value))
    
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
 
//ATR Stop
 
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR

// if (strategy.position_size > 0)
//     xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)

Más.