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

Sistema de negociación cuantitativo de volatilidad y impulso adaptativos (AVMQTS)

El autor:¿ Qué pasa?, Fecha: 2024-11-27 14:20:24
Las etiquetas:El ATREl MACDLa SMATPSL

img

Resumen general

Esta estrategia es un sistema de negociación adaptativo que combina los indicadores de volatilidad e impulso para capturar las tendencias del mercado a través de la coordinación de múltiples indicadores técnicos. La estrategia utiliza el indicador ATR para monitorear la volatilidad del mercado, el MACD para juzgar el impulso de la tendencia y combina los indicadores de impulso de precios para confirmar las señales de negociación, con un mecanismo flexible de stop-loss y take-profit. El sistema tiene una fuerte adaptabilidad y puede ajustar automáticamente la frecuencia de negociación y el control de posición de acuerdo con las condiciones del mercado.

Principios de estrategia

La estrategia se basa en un sistema de indicadores triples como su lógica de negociación central: primero, ATR se utiliza para medir las condiciones de volatilidad del mercado para proporcionar referencia de volatilidad para las decisiones comerciales; segundo, los indicadores MACD de oro y cruces de muerte se utilizan para capturar los puntos de inflexión de tendencia, con cruces rápidos y lentos de la línea MACD utilizados como las principales señales desencadenantes de negociación; tercero, los indicadores de impulso de precios se utilizan para la verificación, observando los cambios de precios en relación con los períodos anteriores para confirmar la fuerza de la tendencia. El sistema también incorpora un promedio móvil de 50 días como un filtro de tendencia, permitiendo solo posiciones largas cuando el precio está por encima del promedio móvil y posiciones cortas cuando está por debajo. Para evitar el sobrecomercio, la estrategia de señales impone intervalos mínimos de negociación y opcionalmente alterna la ejecución.

Ventajas estratégicas

  1. Validación cruzada de múltiples indicadores: A través de la coordinación de indicadores en tres dimensiones: volatilidad, tendencia e impulso, mejorando en gran medida la confiabilidad de las señales comerciales.
  2. Gran adaptabilidad: La estrategia puede ajustarse dinámicamente de acuerdo con las condiciones de volatilidad del mercado, adaptándose a diferentes entornos de mercado.
  3. Control integral del riesgo: los parámetros de stop loss y take profit basados en el porcentaje controlan eficazmente el riesgo del comercio único.
  4. Frecuencia de negociación controlable: evita el exceso de negociación mediante la configuración de intervalos mínimos de negociación y el mecanismo de alternancia de señales.
  5. Estructura del sistema clara: alto grado de modularidad del código con límites claros entre los módulos funcionales, facilitando el mantenimiento y la optimización.

Riesgos estratégicos

  1. El riesgo de mercado oscilante: en los mercados laterales, pueden generarse múltiples señales falsas, lo que conduce a pérdidas consecutivas.
  2. El riesgo de deslizamiento: durante los períodos de intensa volatilidad, los precios reales de las transacciones pueden desviarse significativamente de los precios de activación de la señal.
  3. Sensibilidad de los parámetros: la estrategia utiliza múltiples indicadores técnicos, y la razonabilidad de la configuración de los parámetros afecta directamente al rendimiento de la estrategia.
  4. Dependencia del entorno del mercado: la estrategia tiene un mejor rendimiento en mercados con tendencias claras, pero puede tener un rendimiento inferior en otras condiciones de mercado.

Direcciones para la optimización de la estrategia

  1. Introducir un mecanismo de reconocimiento del entorno de mercado: añadir indicadores de fuerza de tendencia para utilizar diferentes configuraciones de parámetros en diferentes entornos de mercado.
  2. Optimizar el mecanismo de stop-loss y take-profit: considerar el ajuste dinámico de los ratios de stop-loss y take-profit basados en el ATR para adaptarse mejor a la volatilidad del mercado.
  3. Añadir la gestión de posiciones: Recomendar la introducción de un sistema dinámico de gestión de posiciones basado en la volatilidad, reduciendo adecuadamente el tamaño de las operaciones durante los períodos de alta volatilidad.
  4. Añadir más condiciones de filtrado: Considere agregar volumen, volatilidad y otros indicadores de filtrado para mejorar la calidad de la señal.

Resumen de las actividades

Esta estrategia es un sistema de trading cuantitativo bien diseñado y lógicamente riguroso que logra una captura efectiva de las tendencias del mercado mediante el uso de múltiples indicadores técnicos.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[ETH] Volatility & Momentum Adaptive Strategy", shorttitle="Definitive 1 day Ethereum Signal", overlay=true, initial_capital=10000, currency=currency.USD)

// === Input Parameters === //
trade_size = input.float(5, title="Trade Size (ETH)")
atr_length = input.int(8, minval=1, title="ATR Length")
macd_fast = input.int(8, minval=1, title="MACD Fast Length")
macd_slow = input.int(7, minval=1, title="MACD Slow Length")
macd_signal = input.int(9, minval=1, title="MACD Signal Length")
momentum_length = input.int(37, title="Momentum Length")
stop_loss_percent = input.float(9.9, title="Stop Loss Percentage (%)")
take_profit_percent = input.float(9.0, title="Take Profit Percentage (%)")
alternate_signal = input.bool(true, title="Alternate Buy/Sell Signals")

// === Indicators === //
// ATR to measure volatility
atr = ta.atr(atr_length)

// MACD for trend momentum
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
macd_cross_up = ta.crossover(macd_line, signal_line)
macd_cross_down = ta.crossunder(macd_line, signal_line)

// Momentum
momentum = ta.mom(close, momentum_length)

// === Signal Control Variables === //
var bool last_signal_long = na
var int last_trade_bar = na
min_bars_between_trades = 5 // Adjust for minimal trade frequency control
time_elapsed = na(last_trade_bar) or (bar_index - last_trade_bar) >= min_bars_between_trades

// === Buy and Sell Conditions === //
// Buy when:
buy_signal = (macd_cross_up and momentum > 0 and close > ta.sma(close, 50) and time_elapsed)

// Sell when:
sell_signal = (macd_cross_down and momentum < 0 and close < ta.sma(close, 50) and time_elapsed)

// Enforce alternate signals if selected
if alternate_signal
    buy_signal := buy_signal and (na(last_signal_long) or not last_signal_long)
    sell_signal := sell_signal and (not na(last_signal_long) and last_signal_long)

// === Trade Execution === //
// Buy Position
if (buy_signal)
    if strategy.position_size < 0
        strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=trade_size)
    last_signal_long := true
    last_trade_bar := bar_index

// Sell Position
if (sell_signal)
    if strategy.position_size > 0
        strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=trade_size)
    last_signal_long := false
    last_trade_bar := bar_index

// === Stop Loss and Take Profit === //
if strategy.position_size > 0
    long_take_profit = strategy.position_avg_price * (1 + take_profit_percent / 100)
    long_stop_loss = strategy.position_avg_price * (1 - stop_loss_percent / 100)
    strategy.exit("TP/SL Long", from_entry="Long", limit=long_take_profit, stop=long_stop_loss)

if strategy.position_size < 0
    short_take_profit = strategy.position_avg_price * (1 - take_profit_percent / 100)
    short_stop_loss = strategy.position_avg_price * (1 + stop_loss_percent / 100)
    strategy.exit("TP/SL Short", from_entry="Short", limit=short_take_profit, stop=short_stop_loss)

// === Visual Signals === //
plotshape(series=buy_signal and time_elapsed, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_signal and time_elapsed, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")


Relacionados

Más.