Estratégia de acompanhamento de tendência de canal de média móvel dupla

SMA EMA RSI MACD
Data de criação: 2024-09-26 16:28:19 última modificação: 2024-09-26 16:28:19
cópia: 2 Cliques: 748
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de canal de média móvel dupla

Visão geral

Esta estratégia é um sistema de acompanhamento de tendências baseado em binários e canais. Utiliza os sinais de cruzamento de médias móveis de curto e longo prazo, combinadas com os canais formados pela média móvel do índice (EMA), para capturar tendências de mercado e negociar. A estratégia é aplicável a mercados de múltiplos e ativos, para gerenciar riscos e ganhos, configurando stop-loss e stop-loss.

Princípio da estratégia

A lógica central da estratégia inclui as seguintes partes principais:

  1. Usando duas médias móveis simples (SMAs) como principais indicadores de tendência, o SMA de 55 e o SMA de 300 períodos respectivamente.
  2. O canal de negociação é formado por duas médias móveis indexadas ((EMA) com 576 e 676 ciclos de EMA respectivamente.
  3. Quando o SMA curto está em cima de um SMA ou EMA longo, um sinal de multiplicação é acionado; quando o SMA curto está em baixo de um SMA ou EMA longo, um sinal de decaimento é acionado.
  4. A estratégia de stop loss e stop-loss usa um número fixo de pontos, com o stop loss definido como 170 do preço de entrada e o stop-loss definido como 1140 do preço de entrada.
  5. Quando o lucro atinge 300 pontos, o mecanismo de stop loss móvel é ativado para proteger o lucro obtido.
  6. A estratégia também inclui condições de liquidação, como a liquidação automática quando o preço toca o ponto de parada ou de perda.

Vantagens estratégicas

  1. Combinação de múltiplos indicadores: aumenta a precisão do julgamento de tendências através da combinação de várias médias móveis e canais EMA.
  2. Negociação bidirecional: estratégias que permitem lucrar em mercados de ativos e passivos, aumentando a eficiência do uso de fundos.
  3. Gerenciamento de riscos: o uso de pontos fixos de stop loss e stop-loss para controlar efetivamente o risco de cada transação.
  4. Proteção de lucros: o uso de um mecanismo de stop loss móvel para bloquear parte dos lucros enquanto a tendência persiste.
  5. Flexibilidade: os parâmetros da estratégia podem ser ajustados para se adaptar a diferentes condições de mercado.

Risco estratégico

  1. Risco de mercado de choque: em mercados de choque horizontal, pode desencadear frequentemente sinais falsos, resultando em perdas contínuas.
  2. Risco de deslizamento: em mercados altamente voláteis, o preço de transação real pode estar muito distante do preço ideal.
  3. Transações excessivas: sinais de transações frequentes podem levar a custos excessivos de transações.
  4. Sensibilidade de parâmetros: a performance da estratégia pode ser altamente sensível à configuração de parâmetros, podendo necessitar de ajustes frequentes em diferentes ambientes de mercado.

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

  1. Introdução de indicadores de volatilidade: Considere a adição de ATR (Average True Range) para ajustar dinamicamente o ponto de parada e o ponto de parada para adaptar-se a diferentes situações de volatilidade do mercado.
  2. Aumentar o filtro de força de tendência: pode ser introduzido o ADX (indice de direção média) para filtrar os sinais de tendência fraca, reduzindo os danos causados por falsas rupturas.
  3. Otimizar o tempo de entrada: Considere a combinação de RSI (indicador de força relativa) ou MACD (diversidade de convergência da média móvel) para otimizar o tempo de entrada e aumentar a taxa de vitória.
  4. Otimização de gestão de fundos: Realização de gestão de posições dinâmicas, ajustando a proporção de fundos em cada transação de acordo com o valor líquido da conta e as flutuações do mercado.
  5. Extensão do ciclo de retrospectiva: retrospectiva de uma estratégia em períodos de tempo mais longos para verificar sua estabilidade em diferentes ambientes de mercado.

Resumir

Esta estratégia de rastreamento de tendências de canal duplo uniforme, através da combinação de vários indicadores técnicos, oferece um sistema de negociação abrangente. Não só é capaz de capturar as principais tendências, mas também possui mecanismos de gestão de risco e proteção de lucros. Embora haja alguns riscos potenciais, a estratégia tem potencial para funcionar bem em várias condições de mercado através de otimização contínua e ajuste de parâmetros.

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

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)