Sistema de Negociación Cuantitativa de Volatilidad y Momentum Adaptativos (AVMQTS)

ATR MACD SMA TP SL
Fecha de creación: 2024-11-27 14:20:24 Última modificación: 2024-11-27 14:20:24
Copiar: 1 Número de Visitas: 459
1
Seguir
1617
Seguidores

Sistema de Negociación Cuantitativa de Volatilidad y Momentum Adaptativos (AVMQTS)

Descripción general

La estrategia es un sistema de negociación auto-adaptativo que combina indicadores de volatilidad y dinámica para capturar las tendencias del mercado a través de la combinación de múltiples indicadores técnicos. La estrategia utiliza el indicador ATR para monitorear la volatilidad del mercado, el MACD para determinar la dinámica de la tendencia, mientras que combina el indicador de dinámica de precios para confirmar las señales de negociación, y establece un mecanismo de stop loss flexible.

Principio de estrategia

La estrategia se basa principalmente en un sistema de tres indicadores como lógica de negociación central: primero, el uso de ATR para medir el estado de la volatilidad del mercado, que proporciona una referencia de volatilidad para la toma de decisiones comerciales; segundo, el uso de un indicador MACD para capturar el punto de inflexión de la tendencia, el cruce de la línea rápida y lenta de la MACD se usa como la principal señal de activación de la transacción; tercero, la verificación de revalorización utiliza un indicador de movimiento de precios para confirmar la fuerza de la tendencia observando los cambios en los precios en el período anterior relativo. El sistema también incluye una media de 50 días como filtro de tendencia, solo se permite hacer más en la media de los precios, lo que permite hacer lo contrario.

Ventajas estratégicas

  1. Verificación cruzada de múltiples indicadores: mejora la fiabilidad de las señales de negociación mediante la combinación de indicadores en las tres dimensiones de la volatilidad, la tendencia y la dinámica.
  2. Adaptabilidad: Las estrategias pueden adaptarse a las fluctuaciones dinámicas de los mercados y a diferentes circunstancias.
  3. Control de riesgo: Percentaje de stop loss y stop loss para controlar el riesgo de una sola transacción.
  4. Frecuencia de operaciones controlada: evita el exceso de operaciones mediante la configuración de intervalos mínimos de operaciones y mecanismos de intercambio de señales.
  5. La estructura del sistema es clara: el código tiene un alto grado de modularización, los límites de los módulos funcionales están claros, lo que facilita el mantenimiento y la optimización.

Riesgo estratégico

  1. Riesgo de mercado de temblor: en un mercado de temblor horizontal, puede generarse una serie de falsas señales, lo que provoca una serie de paros.
  2. Riesgo de deslizamiento: en períodos de gran volatilidad, el precio de transacción real puede estar muy alejado del precio de la señal.
  3. Sensibilidad de parámetros: la estrategia utiliza varios indicadores técnicos y la racionalidad de la configuración de los parámetros afecta directamente el rendimiento de la estrategia.
  4. Dependencia del entorno del mercado: las estrategias funcionan mejor en mercados con tendencias evidentes, pero pueden ser menos efectivas en otras condiciones del mercado.

Dirección de optimización de la estrategia

  1. Introducción de un mecanismo de identificación del entorno del mercado: se puede agregar un indicador de intensidad de tendencia para configurar diferentes parámetros en diferentes entornos del mercado.
  2. Optimización del mecanismo de stop loss: se puede considerar ajustar la proporción de stop loss en función de la dinámica de ATR para adaptarla mejor a la volatilidad del mercado.
  3. Aumentar la gestión de posiciones: Se recomienda la introducción de un sistema de gestión de posiciones dinámico basado en la volatilidad, para reducir adecuadamente el tamaño de las transacciones durante los períodos de alta volatilidad.
  4. Añadir más condiciones de filtración: se puede considerar aumentar los indicadores de filtración como el volumen de tráfico, la fluctuación y mejorar la calidad de la señal.

Resumir

La estrategia es un sistema de comercio cuantificado, de diseño razonable y riguroso, que capta eficazmente las tendencias del mercado a través del uso combinado de múltiples indicadores técnicos. El sistema tiene una consideración minuciosa en el control del riesgo y la ejecución de las transacciones, y tiene una buena utilidad. Aunque existen algunos riesgos potenciales, la estabilidad y la rentabilidad de la estrategia se espera que se mejoren aún más con la orientación de optimización recomendada.

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