Sistema de negociação quantitativa de volatilidade adaptável e momentum (AVMQTS)

ATR MACD SMA TP SL
Data de criação: 2024-11-27 14:20:24 última modificação: 2024-11-27 14:20:24
cópia: 1 Cliques: 136
1
focar em
1166
Seguidores

Sistema de negociação quantitativa de volatilidade adaptável e momentum (AVMQTS)

Visão geral

A estratégia é um sistema de negociação auto-adaptável que combina indicadores de volatilidade e dinâmica para capturar tendências de mercado por meio da combinação sincronizada de vários indicadores técnicos. A estratégia usa o indicador ATR para monitorar a flutuação do mercado, o MACD para determinar a dinâmica da tendência e, ao mesmo tempo, combina o indicador de dinâmica de preços para confirmar os sinais de negociação e configura um mecanismo de stop-loss flexível. O sistema é altamente adaptável e pode ajustar automaticamente a frequência de negociação e o controle de posição de acordo com a situação do mercado.

Princípio da estratégia

A estratégia baseia-se principalmente em um sistema de três indicadores como lógica de negociação central: primeiro, o ATR mede a volatilidade do mercado, fornecendo referência à volatilidade para a decisão de negociação; segundo, o MACD é usado para capturar os pontos de reversão da tendência, e o cruzamento entre a linha rápida e a lenta do MACD é usado como o principal sinal de ação; terceiro, a verificação reversa usa o indicador de volume de movimento do preço para confirmar a força da tendência, observando as mudanças nos preços em relação ao período anterior. O sistema também inclui a média de 50 dias como filtro de tendência, permitindo apenas que o instrumento faça mais na linha média do preço, ao contrário.

Vantagens estratégicas

  1. Verificação cruzada de vários indicadores: a fiabilidade dos sinais de negociação é significativamente aumentada por meio da sinergia de indicadores nas três dimensões de volatilidade, tendência e dinâmica.
  2. Adaptabilidade: A estratégia pode ser adaptada a diferentes condições de mercado, de acordo com a dinâmica de flutuação do mercado.
  3. Controle de risco perfeito: Percentagem de stop loss e stop loss definida, controle efetivo do risco de uma única transação.
  4. Frequência de negociação controlada: evita o excesso de negociação, configurando intervalos de negociação mínimos e mecanismos de troca de sinais.
  5. A estrutura do sistema é clara: o código é altamente modulado, e os limites dos módulos funcionais são claros, facilitando a manutenção e otimização.

Risco estratégico

  1. Risco de mercado de choque: Em mercados de choque horizontal, pode haver múltiplos falsos sinais, resultando em perdas contínuas.
  2. Risco de deslizamento: Em períodos de forte volatilidade, o preço de transação real pode estar muito diferente do preço de ação do sinal.
  3. Sensibilidade de parâmetros: a estratégia usa vários indicadores técnicos e a racionalidade da configuração de parâmetros afeta diretamente o desempenho da estratégia.
  4. Dependência do cenário de mercado: a estratégia tem um bom desempenho em mercados onde há uma tendência evidente, mas pode ser menos eficaz em outras condições de mercado.

Direção de otimização da estratégia

  1. Introdução do mecanismo de identificação do cenário de mercado: pode ser adicionado um indicador de intensidade de tendência, com configurações de parâmetros diferentes em diferentes cenários de mercado.
  2. Otimização do mecanismo de stop loss: pode-se considerar o ajuste da proporção de stop loss de acordo com a dinâmica do ATR, para torná-la mais adaptada às flutuações do mercado.
  3. Aumentar o gerenciamento de posições: Recomenda-se a introdução de um sistema de gerenciamento de posições dinâmico baseado na volatilidade, reduzindo adequadamente o volume de negociação durante períodos de alta volatilidade.
  4. Adicionar mais condições de filtragem: pode-se considerar o aumento do volume de tráfego, oscilação e outros indicadores de filtragem para melhorar a qualidade do sinal.

Resumir

A estratégia é um sistema de negociação quantitativa concebido de forma racional e logicamente rigorosa, que capta eficazmente as tendências do mercado através da utilização conjunta de múltiplos indicadores técnicos. O sistema tem uma consideração meticulosa em termos de controle de risco e execução de negociações, com uma melhor praticidade. Embora existam alguns riscos potenciais, a estabilidade e a rentabilidade da estratégia devem ser ainda melhoradas com a orientação de otimização recomendada.

Código-fonte da estratégia
/*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")