Estratégia de negociação de preço limite dinâmico de combinação de múltiplos indicadores SMA-RSI-MACD

SMA RSI MACD EMA
Data de criação: 2024-12-11 15:15:49 última modificação: 2024-12-11 15:15:49
cópia: 2 Cliques: 435
1
focar em
1617
Seguidores

Estratégia de negociação de preço limite dinâmico de combinação de múltiplos indicadores SMA-RSI-MACD

Visão geral

A estratégia é um sistema de negociação que combina vários indicadores técnicos, principalmente baseado em EMA cruzamento de linha média, RSI oversell e MACD Gold Fork triplo sinal de confirmação para abrir posições, através de um único preço de entrada e de saída múltiplos mecanismo de gestão de risco. A estratégia utiliza o índice de 9 ciclos e 21 ciclos de média móvel (EMA) como o principal indicador de tendência, combinado com um índice relativamente forte (RSI) e a média móvel de tendência atrás do indicador (MACD) para filtrar os sinais de negociação, através da definição de um único limite de preço e um número fixo de pontos de stop loss para controlar o risco.

Princípio da estratégia

A lógica de negociação central da estratégia inclui as seguintes partes-chave:

  1. O sinal de entrada é baseado em um EMA de 9 ciclos e é acionado quando atravessa um EMA de 21 ciclos.
  2. O preço de entrada define um limite de preço com um número de pontos especificado abaixo do EMA de 9 ciclos
  3. A confirmação de transação precisa simultaneamente atender ao RSI abaixo do limiar definido e ao MACD Gold Fork
  4. Os sinais de saída incluem o MACD dead fork, o stop loss fixado e o fechamento da posição forçada.
  5. O horário de negociação é limitado a 9:30 da manhã até 15:10 da tarde.

A estratégia de admissão a um único preço limitado permite a construção de posições em melhores posições de preços, aumentando a precisão da negociação através da combinação de vários indicadores técnicos.

Vantagens estratégicas

  1. Mecanismo de confirmação de múltiplos sinais aumenta a confiabilidade das transações
  2. A entrada limitada oferece melhores preços
  3. Ponto de parada fixo para o controle de risco
  4. O encerramento da liquidação obrigatória evita o risco da noite.
  5. O limite de tempo de negociação evita oscilações de abertura
  6. Os indicadores da EMA reagem mais rapidamente às tendências
  7. A combinação de RSI e MACD pode filtrar falsos sinais

Risco estratégico

  1. Confirmação de múltiplos sinais pode levar a oportunidades de negociação perdidas
  2. O preço limite pode não ser negociado devido ao rápido aumento dos preços
  3. Ponto fixo de parada pode ter maiores perdas em períodos de alta volatilidade
  4. Os sinais do MACD podem estar atrasados
  5. A estratégia não leva em consideração as variações na volatilidade do mercado
  6. Optimização de parâmetros pode ter risco de overfitting

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

  1. Introdução de pontos de parada de perda adaptáveis, ajustados dinamicamente à volatilidade do mercado
  2. Aumento do volume de transações como sinal de confirmação auxiliar
  3. Considere adicionar um filtro de intensidade de tendência
  4. Otimização da metodologia de cálculo da distância única de preço limite, considerando o ajuste dinâmico do ATR
  5. Aumentar os indicadores de sentimento de mercado para filtrar situações adversas
  6. Adição ao mecanismo de gerenciamento de posições, ajustando o volume de abertura de acordo com a intensidade do sinal

Resumir

Trata-se de uma estratégia de negociação multi-indicadores, estruturada e com lógica clara, que identifica tendências por meio de um sistema uniforme, filtra os sinais RSI e MACD, limita os pedidos e controla o risco por meio de vários mecanismos de parada. A vantagem da estratégia reside na alta confiabilidade do sinal e no controle perfeito do risco, mas há também problemas de atraso do sinal e otimização de parâmetros.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SMA 9 & 21 with RSI and MACD Buy Strategy", overlay=true)

// Inputs for Simple Moving Averages
sma_short = ta.ema(close, 9)
sma_long = ta.ema(close, 21)

// Plotting SMA
plot(sma_short, color=color.green, title="SMA 9")
plot(sma_long, color=color.red, title="SMA 21")

// RSI Calculation
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(70, title="RSI Threshold")
rsi = ta.rsi(close, rsi_length)

// MACD Calculation
macd_fast = input.int(8, title="MACD Fast Length")
macd_slow = input.int(18, title="MACD Slow Length")
macd_signal = input.int(6, title="MACD Signal Length")
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)

// Inputs for Limit Order Offset
limit_offset = input.int(50, title="Limit Order Offset", minval=1)  // 50 points below 9 EMA

// User input for specific date
simulationStartDate = input(timestamp("2024-12-01 00:00"), title="Simulation Start Date", group = "Simulation Dates")
simulationEndDate = input(timestamp("2024-12-30 00:00"), title="Simulation End Date", group = "Simulation Dates")

// Declare limit_price as float
var float limit_price = na

// Calculate Limit Order Price
if (sma_short[1] < sma_long[1] and sma_short > sma_long)  // 9 EMA crosses above 21 EMA
    limit_price := sma_short - limit_offset

// Buy Signal Condition (only on the specified date)
buy_condition = not na(limit_price) and rsi < rsi_threshold and ta.crossover(macd_line, signal_line) 

// Sell Signal Condition (MACD crossover down)
sell_condition = ta.crossunder(macd_line, signal_line)

// Track Entry Price for Point-Based Exit
var float entry_price = na

if (buy_condition )
    strategy.order("Buy", strategy.long, comment="Limit Order at 9 EMA - Offset", limit=limit_price)
    label.new(bar_index, limit_price, "Limit Buy", style=label.style_label_up, color=color.green, textcolor=color.white)
    entry_price := limit_price  // Set entry price

// Exit Conditions
exit_by_macd = sell_condition
exit_by_points = not na(entry_price) and ((close >= entry_price + 12) or (close <= entry_price - 12))  // Adjust as per exit points

// Exit all positions at the end of the day
if hour == 15 and minute > 10 and strategy.position_size > 0
    strategy.close_all()  // Close all positions at the end of the day
    strategy.cancel_all()  

// Exit based on sell signal or point movement
if (exit_by_macd or exit_by_points  and strategy.position_size > 0 )
    strategy.close("Buy")
    label.new(bar_index, close, "Close", style=label.style_label_down, color=color.red, textcolor=color.white)