Estrategia de stop-profit y stop-loss para trading con balance de retroceso adaptable

OCA GAP
Fecha de creación: 2024-12-12 14:25:36 Última modificación: 2024-12-12 14:25:36
Copiar: 2 Número de Visitas: 413
1
Seguir
1617
Seguidores

Estrategia de stop-profit y stop-loss para trading con balance de retroceso adaptable

Descripción general

La estrategia es un sistema de negociación auto-adaptativo basado en brechas y cambios de precios, que permite obtener ganancias estables mediante la configuración de puntos de entrada flexibles y un stop-loss dinámico. La estrategia utiliza un método de alza de posición piramidal, mientras que se combina con el sistema de gestión de órdenes OCA para controlar el riesgo. El sistema ajusta automáticamente la dirección de la posición de acuerdo con la evolución del mercado y cierra las pérdidas de posición a tiempo en caso de una señal de reversión.

Principio de estrategia

La estrategia funciona principalmente a través de los siguientes mecanismos centrales:

  1. Mecanismo de negociación de la brecha: identificación de brechas hacia arriba y hacia abajo, establecimiento de la entrada de stop loss en la posición de la brecha
  2. Seguimiento de tendencias: determina la dirección de la tendencia según la relación entre el precio de apertura y el precio de cierre
  3. Posicionamiento piramidal: Permiten hasta 100 órdenes en la misma dirección
  4. Detención de pérdidas dinámicas: Detención de pérdidas dinámicas basadas en el precio promedio de la posición
  5. Gestión de órdenes OCA: el uso de órdenes de cartera OCA para asegurar la ejecución de órdenes de stop y stop loss mutuamente excluyentes
  6. Limitación de transacciones diarias: controla el riesgo estableciendo el número máximo de órdenes de transacción diarias

Ventajas estratégicas

  1. Adaptabilidad: la estrategia puede ajustar automáticamente la dirección de las operaciones y el volumen de las posiciones en función de las condiciones del mercado
  2. Riesgo controlado: el riesgo se controla a través de múltiples mecanismos, incluidos el stop loss, las órdenes OCA y las restricciones de transacción intradía
  3. Alta flexibilidad: apoya el alza de posiciones piramidal para obtener más ganancias en situaciones de tendencia
  4. Eficiencia de ejecución: el uso de la entrada de stop loss permite la creación rápida de posiciones a precios clave
  5. Alta sistematización: las decisiones de transacción están completamente sistematizadas, lo que reduce el impacto emocional de la intervención humana

Riesgo estratégico

  1. Riesgo de deslizamiento: Un deslizamiento grave puede ocurrir en un viaje rápido
  2. Riesgo de exceso de transacciones: entradas y salidas frecuentes pueden generar costos de transacción más altos
  3. Riesgo sistémico: puede sufrir grandes pérdidas en mercados muy volátiles
  4. Riesgo de gestión de fondos: la hipoteca piramidal podría llevar a una utilización excesiva de fondos
  5. Riesgo técnico: interrupciones en el funcionamiento de la aplicación que pueden causar problemas en la gestión de pedidos

Dirección de optimización de la estrategia

  1. Introducción de un indicador de volatilidad: ajuste de los parámetros de stop loss en función de la dinámica de la volatilidad del mercado
  2. Mecanismos de optimización de la acumulación: diseñar reglas de acumulación más detalladas para evitar el uso excesivo de fondos
  3. Mejorar el sistema de control de viento: agregar más indicadores de control de viento, como el límite máximo de retirada en un día
  4. Mejorar la ejecución de pedidos: optimizar el mecanismo de entrega de pedidos y reducir el impacto de los puntos de deslizamiento
  5. Aumentar el juicio de la emoción del mercado: la combinación de indicadores como el volumen de negocios para optimizar el momento de entrada

Resumir

Se trata de una estrategia de negociación diseñada de manera racional y lógica, que garantiza la estabilidad y seguridad de las operaciones a través de múltiples mecanismos. La ventaja central de la estrategia reside en su capacidad de adaptación y control de riesgos, pero al mismo tiempo se debe tener en cuenta el riesgo que conlleva la volatilidad del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-12-04 00:00:00
end: 2024-12-11 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Greedy Strategy - maclaurin", pyramiding = 100, calc_on_order_fills=false, overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
backtestStartDate = input(timestamp("1 Jan 1990"),
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("1 Jan 2023"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
inTradeWindow = true
tp = input(10)
sl = input(10)
maxidf = input(title="Max Intraday Filled Orders", defval=5)
// strategy.risk.max_intraday_filled_orders(maxidf)
upGap = open > high[1]
dnGap = open < low[1]
dn = strategy.position_size < 0 and open > close
up = strategy.position_size > 0 and open < close
if inTradeWindow and upGap
    strategy.entry("GapUp", strategy.long, stop = high[1])
else
    strategy.cancel("GapUp")
if inTradeWindow and dn
    strategy.entry("Dn", strategy.short, stop = close)
else
    strategy.cancel("Dn")
if inTradeWindow and dnGap
    strategy.entry("GapDn", strategy.short, stop = low[1])
else
    strategy.cancel("GapDn")
if inTradeWindow and up
    strategy.entry("Up", strategy.long, stop = close)
else
    strategy.cancel("Up")
XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size
dir = strategy.position_size < 0 ? -1 : 1
lmP = strategy.position_avg_price + dir*tp*syminfo.mintick
slP = strategy.position_avg_price - dir*sl*syminfo.mintick
float nav = na
revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false)
if inTradeWindow and not revCond and XQty > 0
    strategy.order("TP", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, "TPSL",  "TPSL")
    strategy.order("SL", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, nav, slP, "TPSL", "TPSL")
if XQty == 0 or revCond
    strategy.cancel("TP")
    strategy.cancel("SL")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)