Estrategia de trading de agregación de volumen y tendencias en múltiples marcos temporales

FRVP AVWAP EMA RSI ADX MACD SMA ATR
Fecha de creación: 2025-04-02 16:15:52 Última modificación: 2025-04-02 16:15:52
Copiar: 0 Número de Visitas: 375
2
Seguir
319
Seguidores

Estrategia de trading de agregación de volumen y tendencias en múltiples marcos temporales Estrategia de trading de agregación de volumen y tendencias en múltiples marcos temporales

Descripción general

Se trata de una estrategia de negociación compleja de múltiples indicadores, que combina varias herramientas de análisis técnico, como el precio promedio ponderado por volumen de transacción (AVWAP), la distribución de volumen de transacción de rango fijo (FRVP), el promedio móvil del índice (EMA), el índice de fuerza relativa (RSI), el índice de dirección promedio (ADX) y la dispersión de la media móvil (MACD), con el objetivo de identificar oportunidades de negociación de alta probabilidad a través de la agregación de indicadores.

Principio de estrategia

La estrategia se basa en una serie de condiciones para determinar la señal de entrada:

  1. El cruce de precios con AVWAP
  2. Posición del precio con respecto a la EMA
  3. Determinación de la intensidad del RSI
  4. Dinámica de la tendencia en el MACD
  5. Confirmación de la intensidad de la tendencia en el ADX
  6. Filtrador de cantidad de entrega

La estrategia se centra en las horas de negociación de Asia, Londres y Nueva York, que suelen ser más fluidas y las señales de negociación más confiables. La lógica de entrada incluye los dos modos de posición larga y posición vacía, y se establece un mecanismo de parada y pérdida de escala.

Ventajas estratégicas

  1. Combinación de múltiples indicadores para mejorar la precisión de la señal
  2. Filtración de volumen de transacciones dinámicas para evitar transacciones con poca liquidez
  3. Las estrategias flexibles para detener las pérdidas
  4. Optimización de estrategias basadas en diferentes momentos de negociación
  5. Mecanismo de gestión de riesgos dinámicos
  6. Las señales visuales ayudan a tomar decisiones

Riesgo estratégico

  1. La combinación de varios indicadores puede aumentar la complejidad de la señal
  2. Los datos de las respuestas podrían ser sobreadaptados
  3. El rendimiento puede ser inestable en diferentes condiciones de mercado
  4. Los costos de las transacciones y los puntos de deslizamiento pueden afectar los ingresos reales

Dirección de optimización de la estrategia

  1. Introducción de parámetros de ajuste dinámico para algoritmos de aprendizaje automático
  2. Aumentar la adaptabilidad de las horas de transacción
  3. Optimización de las estrategias de stop loss
  4. Introducir más condiciones de filtración
  5. Desarrollo de un modelo de estrategia para la universalidad entre especies

Resumir

Se trata de una estrategia de negociación altamente personalizada y multidimensional, que trata de mejorar la calidad y la precisión de las señales de negociación mediante la integración de varios indicadores técnicos y características de la fase de negociación. La estrategia muestra la complejidad de la agregación de indicadores y la gestión dinámica del riesgo en el comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2024-04-02 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=6
strategy("FRVP + AVWAP by Grok", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// User Inputs
frvpLength = input.int(20, title="FRVP Length", minval=1)
emaLength = input.int(75, title="EMA Length", minval=1) // Adjusted for stronger trend confirmation
rsiLength = input.int(14, title="RSI Length", minval=1)
adxThreshold = input.int(20, title="ADX Strength Threshold", minval=0, maxval=100)
volumeMultiplier = input.float(1.0, title="Volume Multiplier", minval=0.1)

// Stop Loss & Take Profit for XAUUSD
stopLossPips = 25 // 25 pips SL for Asian, London, NY Sessions
takeProfit1Pips = 35 // TP1 at 35 pips
takeProfit2Pips = 80 // Final TP at 80 pips

// Stop-Loss & Take-Profit Multipliers (XAUUSD: 1 pip = 0.1 points on most platforms)
stopMultiplier = float(stopLossPips) * 0.1
tp1Multiplier = float(takeProfit1Pips) * 0.1
tp2Multiplier = float(takeProfit2Pips) * 0.1

// Indicators
avwap = ta.vwap(close)  // Volume Weighted Average Price (VWAP)
ema = ta.ema(close, emaLength)     // Exponential Moving Average
rsi = ta.rsi(close, rsiLength)     // Relative Strength Index
macdLine = ta.ema(close, 12) - ta.ema(close, 26)  // MACD Line
signalLine = ta.ema(macdLine, 9)   // MACD Signal Line
atr = ta.atr(14)                   // Average True Range

// Average Directional Index (ADX)
adxSmoothing = 14
[diplus, diminus, adx] = ta.dmi(14, adxSmoothing)  // Corrected syntax for ta.dmi()

// Volume Profile (FRVP - Fixed Range Volume Profile Midpoint)
highestHigh = ta.highest(high, frvpLength)
lowestLow = ta.lowest(low, frvpLength)
frvpMid = (highestHigh + lowestLow) / 2  // Midpoint of the range

// Detect Trading Sessions
currentHour = hour(time, "UTC")  // Renamed to avoid shadowing built-in 'hour'
isAsianSession = currentHour >= 0 and currentHour < 8
isLondonSession = currentHour >= 8 and currentHour < 16
isNYSession = currentHour >= 16 and currentHour < 23

// Entry Conditions
longCondition = ta.crossover(close, avwap) and close > ema and rsi > 30 and macdLine > signalLine and adx > adxThreshold
shortCondition = ta.crossunder(close, avwap) and close < ema and rsi < 70 and macdLine < signalLine and adx > adxThreshold

// Volume Filter
avgVolume = ta.sma(volume, 20)     // 20-period Simple Moving Average of volume
volumeFilter = volume > avgVolume * volumeMultiplier  // Trade only when volume exceeds its moving average

// Trade Execution with SL/TP for Sessions
if (longCondition and volumeFilter and (isAsianSession or isLondonSession or isNYSession))
    strategy.entry("LongEntry", strategy.long, qty=100)
    strategy.exit("LongTP1", from_entry="LongEntry", limit=close + tp1Multiplier)
    strategy.exit("LongExit", from_entry="LongEntry", stop=close - stopMultiplier, limit=close + tp2Multiplier)

if (shortCondition and volumeFilter and (isAsianSession or isLondonSession or isNYSession))
    strategy.entry("ShortEntry", strategy.short, qty=100)
    strategy.exit("ShortTP1", from_entry="ShortEntry", limit=close - tp1Multiplier)
    strategy.exit("ShortExit", from_entry="ShortEntry", stop=close + stopMultiplier, limit=close - tp2Multiplier)

// Plotting for Debugging and Visualization
plot(avwap, "AVWAP", color=color.purple, style=plot.style_line, offset=0)
plot(ema, "EMA", color=color.orange, style=plot.style_line, offset=0)
// plot(rsi, "RSI", color=color.yellow, style=plot.style_histogram, offset=0)  // Better in a separate pane
// plot(macdLine, "MACD Line", color=color.blue, style=plot.style_histogram, offset=0)  // Better in a separate pane
// plot(signalLine, "Signal Line", color=color.red, style=plot.style_histogram, offset=0)  // Better in a separate pane
plot(adx, "ADX", color=color.green, style=plot.style_line, offset=0)

// Optional: Plot entry/exit signals for visualization
plotshape(longCondition and volumeFilter ? close : na, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(shortCondition and volumeFilter ? close : na, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)