Sistema de optimización de estrategia de salida diversificada y seguimiento de señales comerciales cuantitativas


Fecha de creación: 2024-12-13 11:39:06 Última modificación: 2024-12-13 11:39:06
Copiar: 2 Número de Visitas: 367
1
Seguir
1617
Seguidores

Sistema de optimización de estrategia de salida diversificada y seguimiento de señales comerciales cuantitativas

Descripción general

La estrategia es un sistema de comercio cuantitativo basado en señales de LuxAlgo® y indicadores de superposición. Inicia posiciones de varios titulares principalmente mediante la captura de condiciones de alerta personalizadas y combina varias señales de salida para administrar las posiciones. El sistema adopta un diseño modular que admite el uso combinado de varias condiciones de salida, incluido el seguimiento inteligente de las pérdidas, la confirmación de la reversión de la tendencia y el porcentaje de pérdidas tradicionales.

Principio de estrategia

La lógica central de la estrategia incluye las siguientes partes clave:

  1. Sistema de señal de entrada: activa una señal de entrada múltiple a través de las condiciones de alerta de LuxAlgo®.
  2. Administración de posicionamiento: se puede activar selectivamente la función de posicionamiento para aumentar la posición sobre la base de la posición existente.
  3. El mecanismo de salida a varios niveles:
    • Detención de seguimiento inteligente: relación entre el precio de la monitorización y la línea de seguimiento inteligente
    • Confirmación de tendencia de salida: señal de confirmación en blanco de las versiones básica y mejorada
    • Señales de salida integradas: utiliza las múltiples condiciones de salida de la banda de indicadores
    • Detención tradicional: soporte para paradas fijas basadas en porcentajes
  4. Administración de ventanas de tiempo: ofrece una función de configuración flexible del rango de fechas de retroalimentación.

Ventajas estratégicas

  1. Gestión de riesgos sistematizada: control eficaz del riesgo descendente a través de un mecanismo de salida en varios niveles.
  2. Gestión de posiciones flexible: soporta múltiples estrategias de aumento y disminución de posiciones, que se pueden ajustar dinámicamente según las condiciones del mercado.
  3. Alta personalización: los usuarios pueden combinar libremente diferentes condiciones de salida para crear un sistema de transacciones personalizado.
  4. Diseño modular: los módulos funcionales son relativamente independientes para facilitar el mantenimiento y la optimización.
  5. Soporte completo de retroalimentación: proporciona configuraciones detalladas de los parámetros de retroalimentación y admite la verificación de datos históricos.

Riesgo estratégico

  1. Riesgo de dependencia de la señal: la estrategia depende en gran medida de la calidad de la señal del indicador LuxAlgo®.
  2. Riesgo de adaptabilidad al entorno de mercado: el rendimiento de las estrategias puede variar considerablemente en diferentes entornos de mercado.
  3. Riesgo de sensibilidad de parámetros: la combinación de varias condiciones de salida puede causar una salida prematura o una oportunidad perdida.
  4. Riesgo de liquidez: puede afectar a la ejecución de entradas y salidas cuando la liquidez del mercado es insuficiente.
  5. Riesgo de realización técnica: Necesidad de asegurar el funcionamiento estable de los indicadores y estrategias para evitar fallas técnicas.

Dirección de optimización de la estrategia

  1. Optimización del sistema de señales:
    • Introducción de más indicadores técnicos para la detección de señales
    • Desarrollo de un mecanismo de ajuste de la señal adaptativa
  2. Mejora en el control de riesgos:
    • Mecanismo de pérdidas que se adapta a la fluctuación
    • Desarrollo de un sistema de gestión de posiciones dinámico
  3. Optimización de rendimiento:
    • Optimizar la eficiencia de la computación y reducir el consumo de recursos
    • Mejora de la lógica de procesamiento de señales para reducir la latencia
  4. Extensión de las funciones:
    • Añadir más herramientas para analizar el entorno del mercado
    • Desarrollo de un marco de optimización de parámetros más flexible

Resumir

La estrategia ofrece una solución completa para el comercio cuantitativo mediante la combinación de señales de alta calidad de LuxAlgo® y un sistema de gestión de riesgos en varios niveles. Su diseño modular y opciones de configuración flexibles lo hacen muy adaptable y extensible. Aunque existen algunos riesgos inherentes, el rendimiento general de la estrategia aún tiene mucho espacio para mejorar mediante la optimización y el perfeccionamiento continuos.

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