O recurso está a ser carregado... Carregamento...

Tendência de canal de média móvel dupla seguindo a estratégia

Autora:ChaoZhang, Data: 2024-09-26 16:28:19
Tags:SMAEMARSIMACD

img

Resumo

Esta estratégia é um sistema de seguimento de tendências baseado em médias móveis e canais duplos. Utiliza sinais cruzados de médias móveis de curto e longo prazo, combinados com canais formados por médias móveis exponenciais (EMA), para capturar tendências de mercado e executar negócios. A estratégia é aplicável a posições longas e curtas, empregando mecanismos de stop-loss e take-profit para gerenciamento de risco e lucro.

Princípio da estratégia

A lógica central da estratégia inclui os seguintes componentes essenciais:

  1. Duas médias móveis simples (SMA) como indicadores de tendência primários: SMA de 55 e 300 períodos.
  2. Duas médias móveis exponenciais (EMA) que formam um canal de negociação: EMAs de 576 e 676 períodos.
  3. Os sinais de entrada longa são acionados quando a SMA de curto prazo cruza acima da SMA ou da EMA de longo prazo; os sinais de entrada curta ocorrem quando a SMA de curto prazo cruza abaixo da SMA ou da EMA de longo prazo.
  4. Estratégia de stop-loss e take-profit de ponto fixo, com stop-loss fixado em 1/70 do preço de entrada e take-profit em 1/140 do preço de entrada.
  5. Um mecanismo de trailing stop é ativado quando o lucro atinge 300 pontos para proteger os ganhos acumulados.
  6. A estratégia inclui condições de saída, como o fechamento automático da posição quando o preço atingir níveis de stop-loss ou take-profit.

Vantagens da estratégia

  1. Integração de múltiplos indicadores: a combinação de múltiplas médias móveis e canais EMA aumenta a precisão da identificação de tendências.
  2. Negociação bidirecional: A estratégia pode lucrar em mercados de alta e baixa, melhorando a eficiência do capital.
  3. Gerenciamento de riscos: emprega stop-loss e take-profit de ponto fixo, controlando efetivamente o risco para cada negociação.
  4. Protecção de lucros: utiliza o mecanismo de trailing stop para bloquear lucros parciais durante tendências sustentadas.
  5. Flexibilidade: os parâmetros da estratégia são ajustáveis para se adaptarem às diferentes condições do mercado.

Riscos estratégicos

  1. Risco de mercado variável: nos mercados laterais, sinais falsos frequentes podem conduzir a perdas consecutivas.
  2. Risco de deslizamento: em mercados altamente voláteis, os preços de execução reais podem desviar-se significativamente dos preços ideais.
  3. Excesso de negociação: os sinais de negociação frequentes podem resultar em custos de transação excessivos.
  4. Sensibilidade dos parâmetros: o desempenho da estratégia pode ser altamente sensível às definições dos parâmetros, o que pode exigir ajustes frequentes para diferentes ambientes de mercado.

Orientações para a otimização da estratégia

  1. Incorporar indicadores de volatilidade: considerar a adição de ATR (Average True Range) para ajustar dinamicamente os níveis de stop-loss e take-profit, adaptando-se à variação da volatilidade do mercado.
  2. Melhorar a filtragem da força da tendência: Introduzir o ADX (Índice Direcional Médio) para filtrar sinais de tendência fracos, reduzindo as perdas de falhas.
  3. Otimizar o tempo de entrada: considere combinar o RSI (Índice de Força Relativa) ou o MACD (Divergência de Convergência da Média Móvel) para melhorar o tempo de entrada e aumentar a taxa de vitória.
  4. Refinar a gestão de fundos: implementar o dimensionamento dinâmico das posições, ajustando os tamanhos das transacções com base no capital da conta e na volatilidade do mercado.
  5. Prolongar o período de backtesting: realizar backtests a longo prazo para verificar a estabilidade da estratégia em diferentes ambientes de mercado.

Conclusão

Esta estratégia de seguimento de tendências de canal de média móvel dupla fornece um sistema de negociação abrangente, combinando vários indicadores técnicos. Ele não só captura as principais tendências, mas também incorpora mecanismos de gerenciamento de risco e proteção de lucros. Embora existam alguns riscos potenciais, através da otimização contínua e ajuste de parâmetros, a estratégia tem o potencial de ter um bom desempenho em várias condições de mercado.


/*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)


Relacionados

Mais.