Estrategia de suspensión de pérdidas por desnivel

El autor:¿ Qué pasa?, fecha: 2023-10-25 14:56:28
Las etiquetas:

img

Resumen general

La estrategia de Stop Loss Gradient Trailing ajusta dinámicamente la línea de stop loss para equilibrar el control de riesgos y la toma de ganancias. Utiliza el Rango Verdadero Medio (ATR) para calcular la línea de stop loss y rastrea de manera efectiva las tendencias de precios, protegiendo las ganancias al tiempo que reduce los stop out innecesarios.

Principios

La estrategia utiliza el rango promedio verdadero (ATR) como base para el stop loss dinámico. ATR refleja efectivamente la volatilidad de una acción. La estrategia primero toma el período ATR como entrada, generalmente 10 días. Luego se calcula el valor de ATR. A medida que el precio aumenta, la línea de stop loss también se mueve hacia arriba para arrastrar el precio. Cuando el precio cae, la línea de stop loss permanece sin cambios para bloquear las ganancias. Además, la estrategia permite ajustar la distancia de stop loss del precio utilizando un parámetro factor.

Específicamente, la estrategia calcula el ATR actual, y luego lo multiplica por el factor para obtener la distancia de stop loss. Si el precio está por encima del precio de stop loss, se abre una posición larga. Si el precio está por debajo, se abre una posición corta. Por lo tanto, la línea de stop loss sigue de cerca el precio, logrando un efecto de arrastramiento de gradiente.

Ventajas

  • Pérdida de frenado dinámica de seguimiento ajusta la distancia de frenado en función de las condiciones del mercado
  • ATR calcula la distancia de parada en función de la volatilidad del mercado
  • Sencillo y fácil de automatizar el comercio
  • En el caso de los activos que no se incluyen en el grupo de riesgo, el valor de los activos que no se incluyen en el grupo de riesgo será el valor de los activos que no se incluyen en el grupo.
  • Saldos entre pérdidas de detención y ganancias
  • Reduce las paradas innecesarias

Los riesgos

  • La elección de los parámetros adecuados de ATR es crucial
  • Las pérdidas de parada demasiado cercanas pueden aumentar las paradas innecesarias
  • Las pérdidas de detención demasiado elevadas pueden no controlar los riesgos
  • La estrategia por sí sola no puede determinar las tendencias del mercado
  • Necesidad de evaluar el período de ATR y la configuración de los factores

Mejoras

  • Añadir filtros como promedios móviles para reducir las señales falsas
  • Optimización automática del período ATR y del factor de pérdida de parada mediante aprendizaje automático
  • Incorporar una estrategia de obtención de ganancias para asegurar las ganancias
  • Combinar con otros indicadores para verificar las señales de compra/venta
  • Investigar mejor el cálculo del ATR o el período de ATR dinámico
  • Explore otros algoritmos de parada de seguimiento dinámicos
  • Optimizar aún más el efecto stop loss

Conclusión

La estrategia Gradient Trailing Stop Loss equilibra eficazmente el riesgo y la ganancia ajustando dinámicamente la distancia de stop loss. Con una lógica simple y una alta configurabilidad, es adecuada para el comercio algorítmico. El ajuste adecuado de parámetros y las combinaciones de indicadores aún dependen de la experiencia humana.


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

//@version=5
strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// 백테스팅 시작일과 종료일 입력
startYear = input(2020, title="Start Year")
startMonth = input(1, title="Start Month")
startDay = input(1, title="Start Day")

endYear = input(9999, title="End Year")
endMonth = input(12, title="End Month")
endDay = input(31, title="End Day")

// 백테스팅 시간 범위 확인
backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

var bool longCondition = false
var bool shortCondition = false

if backtestingTimeBool
    prevDirection = direction[1]
    if direction < 0
        longCondition := false
        shortCondition := true
    else if direction > 0
        longCondition := true
        shortCondition := false

if longCondition
    strategy.entry("My Long Entry Id", strategy.long)

if shortCondition
    strategy.entry("My Short Entry Id", strategy.short)

plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)

Más.