En la carga de los recursos... Cargando...

Sistema de seguimiento de señales de negociación cuantitativa y optimización de estrategias de salida múltiple

El autor:¿ Qué pasa?, fecha: 2024-12-13 11:39:06
Las etiquetas:

img

Resumen general

Esta estrategia es un sistema de negociación cuantitativo basado en señales y superposiciones LuxAlgo®. Inicia principalmente posiciones largas capturando condiciones de alerta personalizadas y gestiona posiciones a través de múltiples señales de salida. El sistema emplea un diseño modular, que admite varias combinaciones de condiciones de salida, incluidas paradas de seguimiento inteligentes, confirmaciones de inversión de tendencia y pérdidas de parada tradicionales basadas en porcentajes. Además, el sistema admite el escalamiento de posiciones, proporcionando una mayor flexibilidad en la administración de dinero.

Principios de estrategia

La lógica central incluye los siguientes componentes clave:

  1. Sistema de señal de entrada: activa señales de entrada largas a través de condiciones de alerta LuxAlgo® personalizadas.
  2. Posiciones en la balanza: funcionalidad opcional para aumentar las posiciones de las tenencias existentes.
  3. Mecanismo de salida de múltiples capas:
    • Detención inteligente del seguimiento: monitoriza la relación de precios con la línea inteligente del seguimiento
    • Exit de confirmación de tendencia: incluye señales de confirmación bajistas básicas y mejoradas
    • Signales de salida incorporados: utiliza múltiples condiciones de salida inherentes al indicador
    • Solución de pérdidas fijas basadas en el porcentaje
  4. Gestión de ventanas de tiempo: Proporciona ajustes flexibles de rango de fechas de backtesting.

Ventajas estratégicas

  1. Gestión sistemática del riesgo: controla eficazmente el riesgo a la baja mediante mecanismos de salida de múltiples capas.
  2. Gestión flexible de posiciones: admite diversas estrategias de escalabilidad, adaptables a las condiciones del mercado.
  3. Alta personalizabilidad: Los usuarios pueden combinar libremente diferentes condiciones de salida para crear sistemas comerciales personalizados.
  4. Diseño modular: los módulos funcionales relativamente independientes facilitan el mantenimiento y la optimización.
  5. Soporte completo para pruebas de retroceso: proporciona configuraciones detalladas de parámetros de pruebas de retroceso y validación de datos históricos.

Riesgos estratégicos

  1. Riesgo de dependencia de la señal: la estrategia depende en gran medida de la calidad de las señales del indicador LuxAlgo®.
  2. Riesgo de adaptabilidad al entorno del mercado: el rendimiento de la estrategia puede variar significativamente según las diferentes condiciones del mercado.
  3. Riesgo de sensibilidad de parámetros: múltiples combinaciones de condiciones de salida pueden dar lugar a salidas prematuras o oportunidades perdidas.
  4. Riesgo de liquidez: los problemas de liquidez del mercado pueden afectar a la eficacia de la ejecución de entradas y salidas.
  5. Riesgo de aplicación técnica: Necesidad de garantizar el funcionamiento estable de los indicadores y de la estrategia para evitar fallos técnicos.

Direcciones para la optimización de la estrategia

  1. Optimización del sistema de señal:
    • Introducir más indicadores técnicos para la confirmación de señales
    • Desarrollar mecanismos adaptativos de ajuste del umbral de señal
  2. Mejora del control de riesgos:
    • Mecanismos de detención de pérdidas adaptados a la volatilidad
    • Desarrollar sistemas dinámicos de gestión de posiciones
  3. Optimización del rendimiento:
    • Optimizar la eficiencia del cálculo para reducir el consumo de recursos
    • Mejorar la lógica de procesamiento de señales para reducir la latencia
  4. Extensión de funcionalidad:
    • Añadir más herramientas de análisis del entorno de mercado
    • Desarrollar marcos de optimización de parámetros más flexibles

Resumen de las actividades

Esta estrategia proporciona una solución integral para la negociación cuantitativa mediante la combinación de señales de alta calidad de LuxAlgo® con un sistema de gestión de riesgos de múltiples capas. Su diseño modular y opciones de configuración flexibles proporcionan una buena adaptabilidad y escalabilidad. Si bien hay algunos riesgos inherentes, el rendimiento general de la estrategia tiene un margen de mejora significativo a través de la optimización y el refinamiento continuos. Se aconseja a los usuarios que presten atención a los cambios en las condiciones del mercado, ajusten los parámetros en consecuencia y mantengan un seguimiento continuo del riesgo en aplicaciones prácticas.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 1h
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/
// © Chart0bserver
// This strategy is NOT from the LuxAlgo® developers.  We created this to compliment their hard work.  No association with LuxAlgo® is intended nor implied.

// Please visit https://chart.observer to test your Tradingview Strategies in our paper-trading sandbox environment. Webhook your alerts to our API.
// Past performance does not ensure future results.  This strategy provided with absolutely no warranty and is for educational purposes only

// The goal of this strategy is to enter a long position using the Custom Alert condition feature of LuxAlgo® Signals & Overlays™ indicator
// To trigger an exit from the long position, use one or more of the common exit signals which the Signals & Overlays™ indicator provides.
// You will need to connect those signals to this strategy in the dialog box.  
// We're calling this a "piggyback" strategy because the LuxAlgo® Signals & Overlays indicator must be present, and remain on the chart.
// The Signals and Overlays™ indicator is invite-only, and requires a paid subscription from LuxAlgo® - https://luxalgo.com/?rfsn=8404759.b37a73

//@version=6
strategy("Simple Backtester for LuxAlgo® Signals & Overlays™", "Simple Backtester for LuxAlgo® S&O ", true, pyramiding=3, default_qty_type = 'percent_of_equity', calc_on_every_tick = true, process_orders_on_close=false, calc_on_order_fills=true, default_qty_value = 33, initial_capital = 10000, currency = currency.USD, commission_type = format.percent, commission_value = 0.10 )

// Initialize a flag to track order placement
var bool order_placed = false

// Reset the flag at the start of each new bar
if (not na(bar_index) and bar_index != bar_index[1])
    order_placed := false

// === Inputs which the user needs to change in the configuration dialog to point to the corresponding LuxAlgo alerts === //
// === The Signals & Overlays indicator must be present on the chart in order for this to work === //
la_EntryAlert = input.source(close, "LuxAlgo® Custom Alert signal", "Replace 'close' with your LuxAlgo® entry signal. For example, try using their Custom Alert.", display=display.none, group="Enter Long Position")
useAddOnTrades = input.bool(false, "Add to your long position on LuxAlgo® signals", display=display.none, group="Add-On Trade Signal for Longs")
la_AddOnAlert = input.source(close, "Add to open longs with this signal", "Replace 'close' with your desired Add-On Trade Signal", display=display.none, group="Add-On Trade Signal for Longs")
la_SmartTrail = input.source(close, "LuxAlgo® Smart Trail", "Replace close with LuxAlgo® Smart Trail", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BearishConfirm = input.source(close, "LuxAlgo® Any Bearish Confirmation", "Replace close with LuxAlgo® Any Bearish Confirmation", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BearishConfirmPlus = input.source(close, "LuxAlgo® Bearish Confirmation+", "Replace close with LuxAlgo® Bearish Confirmation+", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_BuiltInExits = input.source(close, "LuxAlgo® Bullish Exit", "Replace close with LuxAlgo® Bullish Exit", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")
la_TrendCatcherDn = input.source(close, "LuxAlgo® Trend Catcher Down", "Replace close with LuxAlgo® Trend Catcher Down", display=display.none, group="LuxAlgo® Signals & Overlays™ Alerts")

// === Check boxes alowing the user to select exit criteria from th long position === //
exitOnSmartTrail = input.bool(true, "Exit long trade on Smart Trail Switch Bearish", group="Exit Long Conditions")
exitOnBearishConf = input.bool(false, "Exit on Any Bearish Confirmation", group="Exit Long Conditions")
exitOnBearishConfPlus = input.bool(true, "Exit on Bearish Confirmation+", group="Exit Long Conditions")
exitOnBuiltInExits = input.bool(false, "Exit on Bullish Exits", group="Exit Long Conditions")
exitOnTrendCatcher = input.bool(false, "Exit on Trend Catcher Down", group="Exit Long Conditions")

// === Optional Stop Loss ===//
useStopLoss = input.bool(false, "Use a Stop Loss", group="Optional Stop Loss")
stopLossPercent = input.float(0.25, "Stop Loss %", minval=0.25, step=0.25, group="Optional Stop Loss")

// Use Lux Algo's signals as part of your strategy logic
buyCondition = la_EntryAlert > 0 

if useAddOnTrades and la_AddOnAlert > 0 and strategy.opentrades > 0 and not buyCondition
    buyCondition := true

sellCondition = false
sellComment = ""

if exitOnSmartTrail and ta.crossunder(close, la_SmartTrail)
    sellCondition := true
    sellComment := "Smart Trail"

if exitOnBearishConf and la_BearishConfirm == 1
    sellCondition := true
    sellComment := "Bearish"

if exitOnBearishConfPlus and la_BearishConfirmPlus == 1
    sellCondition := true
    sellComment := "Bearish+"

if exitOnBuiltInExits and la_BuiltInExits == 1
    sellCondition := true
    sellComment := "Bullish Exit"

if exitOnTrendCatcher and la_TrendCatcherDn == 1
    sellCondition := true
    sellComment := "Trnd Over"

// Stop Loss Calculation
stopLossMultiplyer = 1 - (stopLossPercent / 100)
float stopLossPrice = na
if strategy.position_size > 0
    stopLossPrice := strategy.position_avg_price * stopLossMultiplyer

// -----------------------------------------------------------------------------------------------------------//
// Back-testing Date Range code  ----------------------------------------------------------------------------//
// ---------------------------------------------------------------------------------------------------------//
fromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12, group='Back-Testing Date Range')
fromDay = input.int(defval=1, title='From Day', minval=1, maxval=31, group='Back-Testing Date Range')
fromYear = input.int(defval=2024, title='From Year', minval=1970, group='Back-Testing Date Range')
thruMonth = 1 
thruDay = 1 
thruYear = 2112 

// === START/FINISH FUNCTION ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time
    time >= start and time <= finish ? true : false
// End Date range code -----//

if buyCondition and window() and not order_placed
    strategy.entry("Long", strategy.long)
    order_placed := true

if sellCondition and window() and not order_placed
    strategy.close("Long", comment=sellComment)
    order_placed := true

if useStopLoss and window()
    strategy.exit("Stop", "Long", stop=stopLossPrice)

Más.