Sistema inteligente de comercio de tendencias adaptativo multidimensional

FVG RSI MACD VWAP EMA ATR supertrend
Fecha de creación: 2025-02-21 11:37:36 Última modificación: 2025-02-21 11:37:36
Copiar: 0 Número de Visitas: 483
2
Seguir
319
Seguidores

Sistema inteligente de comercio de tendencias adaptativo multidimensional Sistema inteligente de comercio de tendencias adaptativo multidimensional

Descripción general

La estrategia es un sistema de negociación inteligente que combina múltiples indicadores tecnológicos para identificar oportunidades de mercado a través de un análisis integral de la brecha de valor justo (FVG), las señales de tendencia y el comportamiento de los precios. El sistema utiliza un mecanismo de doble estrategia, que combina el seguimiento de tendencias y las características de las transacciones de banda, para optimizar el rendimiento de las operaciones a través de la gestión dinámica de la posición y el mecanismo de salida multidimensional.

Principio de estrategia

La lógica central de la estrategia se basa en las siguientes dimensiones:

  1. Identificación de la brecha FVG - Buscar oportunidades potenciales de negociación calculando el tamaño de la brecha de salto de precios
  2. Sistema de confirmación de tendencias - combina la media diaria de 200 días, el indicador SuperTrend y el MACD para confirmar las tendencias del mercado
  3. Confirmación de fondos inteligentes - utiliza el RSI para sobrecomprar, sobreventa, anomalías en el volumen de transacciones y patrones de comportamiento de precios como condiciones de activación de transacciones
  4. Gestión de posiciones dinámica - fluctuaciones basadas en el ATR para ajustar el tamaño de la posición y garantizar la consistencia de la abertura de riesgo
  5. Mecanismo de salida multicapa - Gestión de la salida de la operación mediante la combinación de seguimiento de stop loss y stop loss objetivo

Ventajas estratégicas

  1. Adaptabilidad: la estrategia puede ajustar automáticamente los parámetros y las posiciones en función de la volatilidad del mercado
  2. Control de riesgo perfecto - control de riesgo a través de múltiples filtros y una estricta gestión de posiciones
  3. La calidad de la señal es fiable - mejora la precisión de las señales de negociación mediante la confirmación de indicadores multidimensionales
  4. Modos de negociación flexibles - captura de tendencias y oportunidades de fluctuaciones al mismo tiempo
  5. La ciencia de la gestión de fondos - La gestión del riesgo porcentual para garantizar la racionalidad de la utilización de los fondos

Riesgo estratégico

  1. Sensibilidad de los parámetros - la configuración de varios parámetros puede afectar el rendimiento de la estrategia y requiere optimización continua
  2. Dependencia del entorno del mercado - puede haber falsas brechas en ciertos entornos del mercado
  3. Efecto de deslizamiento - los mercados con menos liquidez pueden enfrentar deslizamientos más grandes
  4. Complejidad de los cálculos - el cálculo de múltiples indicadores puede causar retrasos en la señal
  5. Requisitos financieros más elevados: la implementación completa de la estrategia requiere una mayor cantidad de capital inicial

Dirección de optimización de la estrategia

  1. Optimización de las ponderaciones de los indicadores - Se puede introducir un método de aprendizaje automático para ajustar dinámicamente las ponderaciones de los indicadores
  2. Mejora de la adaptabilidad del mercado - Mecanismo de adaptación para aumentar la volatilidad del mercado
  3. Mejoras en la filtración de señales - introducción de más indicadores de la microestructura del mercado
  4. Mecanismos de ejecución optimizados - Mecanismos de división de pedidos inteligentes para reducir los costos de impacto
  5. Actualización de los controles de riesgo - Aumento de un sistema dinámico de gestión de presupuestos de riesgo

Resumir

La estrategia utiliza una combinación de indicadores técnicos y técnicas de negociación para construir un sistema de negociación completo. Su ventaja radica en la capacidad de adaptarse a los cambios en el mercado, mientras se mantiene un control estricto del riesgo. Aunque hay cierto espacio para la optimización, en general, es una estrategia de negociación cuantitativa de diseño razonable.

Código Fuente de la Estrategia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("Adaptive Trend Signals", overlay=true, margin_long=100, margin_short=100, pyramiding=1, initial_capital=50000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

// 1. Enhanced Inputs with Debugging Options

fvgSize = input.float(0.25, "FVG Size (%)", minval=0.1, step=0.05)
atrPeriod = input.int(14, "ATR Period")  // Increased for better stability
rsiPeriod = input.int(7, "RSI Period")
useSuperTrend = input.bool(true, "Use SuperTrend Filter")
useTrendFilter = input.bool(false, "Use 200 EMA Trend Filter")  // Disabled by default
volatilityThreshold = input.float(1.0, "Volatility Threshold (ATR%)", step=0.1)  // Increased threshold
useVolume = input.bool(true, "Use Volume Confirmation")
riskPercentage = input.float(2.0, "Risk %", minval=0.1, maxval=5)

// 2. Advanced Market Filters with Trend Change Detection
var int marketTrend = 0
var bool trendChanged = false
ema200 = ta.ema(close, 200)
prevMarketTrend = marketTrend
marketTrend := close > ema200 ? 1 : close < ema200 ? -1 : 0
trendChanged := marketTrend != prevMarketTrend

// 3. Enhanced FVG Detection with Adjusted Volume Requirements
bullishFVG = (low[1] > high[2] and (low[1] - high[2])/high[2]*100 >= fvgSize) or 
             (low > high[1] and (low - high[1])/high[1]*100 >= fvgSize)

bearishFVG = (high[1] < low[2] and (low[2] - high[1])/low[2]*100 >= fvgSize) or 
             (high < low[1] and (low[1] - high)/low[1]*100 >= fvgSize)

// 4. Smart Money Confirmation System with Signal Debugging
rsi = ta.rsi(close, rsiPeriod)
[macdLine, signalLine, _] = ta.macd(close, 5, 13, 5)
[supertrendLine, supertrendDir] = ta.supertrend(3, 10)

// Script 2 Indicators
[macdLine2, signalLine2, _] = ta.macd(close, 4, 11, 3)
[supertrendLine2, supertrendDir2] = ta.supertrend(3, 7)
vWAP = ta.vwap(close)
ema21 = ta.ema(close, 21)

// 5. Price Action Filters from Script 2
breakoutLong = close > ta.highest(high, 5) and (useVolume ? volume > ta.sma(volume, 10)*1.8 : true)
breakdownShort = close < ta.lowest(low, 5) and (useVolume ? volume > ta.sma(volume, 10)*1.8 : true)
bullishRejection = low < vWAP and close > (high + low)/2 and close > open
bearishRejection = high > vWAP and close < (high + low)/2 and close < open

// 6. Combined Entry Conditions
longBaseCond = (bullishFVG and rsi < 35 and macdLine > signalLine) or
              (bullishFVG and rsi < 38 and supertrendDir2 == 1) or
              (breakoutLong and macdLine2 > signalLine2) or
              (bullishRejection and close > ema21)

shortBaseCond = (bearishFVG and rsi > 65 and macdLine < signalLine) or
               (bearishFVG and rsi > 62 and supertrendDir2 == -1) or
               (breakdownShort and macdLine2 < signalLine2) or
               (bearishRejection and close < ema21)

longSignal = longBaseCond and (not useSuperTrend or supertrendDir == 1) and (not useTrendFilter or marketTrend == 1)

shortSignal = shortBaseCond and (not useSuperTrend or supertrendDir == -1) and (not useTrendFilter or marketTrend == -1)

// 7. Position Sizing with Minimum Quantity
var float longEntryPrice = na
var float shortEntryPrice = na
atr = ta.atr(atrPeriod)
positionSizeScript1 = math.max(strategy.equity * riskPercentage / 100 / (atr * 1.5), 1)
positionSizeScript2 = strategy.equity * riskPercentage / 100 / (atr * 2)

// 8. Dynamic Exit System with Dual Strategies
var float trailPrice = na
if longSignal or trendChanged and marketTrend == 1
    trailPrice := close
if shortSignal or trendChanged and marketTrend == -1
    trailPrice := close

trailOffset = atr * 0.75

// Script 1 Exit Logic
if strategy.position_size > 0
    trailPrice := math.max(trailPrice, close)
    strategy.exit("Long Exit", "Long", stop=trailPrice - trailOffset, trail_offset=trailOffset)
    
if strategy.position_size < 0
    trailPrice := math.min(trailPrice, close)
    strategy.exit("Short Exit", "Short", stop=trailPrice + trailOffset, trail_offset=trailOffset)

// Script 2 Exit Logic
longStop = close - atr * 1.2
shortStop = close + atr * 1.2
strategy.exit("Long Exit 2", "Long", stop=longStop, limit=na(longEntryPrice) ? na : longEntryPrice + (atr * 4), trail_points=not na(longEntryPrice) and close > longEntryPrice + atr ? atr * 3 : na, trail_offset=atr * 0.8)
strategy.exit("Short Exit 2", "Short", stop=shortStop, limit=na(shortEntryPrice) ? na : shortEntryPrice - (atr * 4), trail_points=not na(shortEntryPrice) and close < shortEntryPrice - atr ? atr * 3 : na, trail_offset=atr * 0.8)

// 9. Trend Change Signals and Visuals
// plot(supertrendLine, "SuperTrend", color=color.new(#2962FF, 0))
// plot(supertrendLine2, "SuperTrend 2", color=color.new(#FF00FF, 0))
// plot(ema200, "200 EMA", color=color.new(#FF6D00, 0))
// plot(ema21, "21 EMA", color=color.new(#00FFFF, 0))

bgcolor(marketTrend == 1 ? color.new(color.green, 90) : 
       marketTrend == -1 ? color.new(color.red, 90) : na)

plotshape(trendChanged and marketTrend == 1, "Bullish Trend", shape.labelup, 
         location.belowbar, color=color.green, text="▲ Trend Up")
plotshape(trendChanged and marketTrend == -1, "Bearish Trend", shape.labeldown, 
         location.abovebar, color=color.red, text="▼ Trend Down")

// 10. Signal Visualization for Both Strategies
// plotshape(longSignal, "Long Entry", shape.triangleup, location.belowbar, 
//          color=color.new(#00FF00, 0), size=size.small)
// plotshape(shortSignal, "Short Entry", shape.triangledown, location.abovebar, 
//          color=color.new(#FF0000, 0), size=size.small)
// plotshape(breakoutLong, "Breakout Long", shape.flag, location.belowbar, 
//          color=color.new(#00FF00, 50), size=size.small)
// plotshape(breakdownShort, "Breakdown Short", shape.flag, location.abovebar, 
//          color=color.new(#FF0000, 50), size=size.small)

// 11. Order Execution with Dual Entry Systems
if trendChanged and marketTrend == 1
    strategy.entry("Long Trend", strategy.long, qty=positionSizeScript1)
    longEntryPrice := close
    
if trendChanged and marketTrend == -1
    strategy.entry("Short Trend", strategy.short, qty=positionSizeScript1)
    shortEntryPrice := close

if longSignal and strategy.position_size == 0
    strategy.entry("Long Signal", strategy.long, qty=positionSizeScript2)
    longEntryPrice := close
    
if shortSignal and strategy.position_size == 0
    strategy.entry("Short Signal", strategy.short, qty=positionSizeScript2)
    shortEntryPrice := close