En la carga de los recursos... Cargando...

Tendencia de doble canal de media móvil siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-09-26 16:28:19
Las etiquetas:La SMAEl EMAIndicador de riesgoEl MACD

img

Resumen general

Esta estrategia es un sistema de seguimiento de tendencias basado en medias móviles y canales duales. Utiliza señales cruzadas de medias móviles a corto y largo plazo, combinadas con canales formados por medias móviles exponenciales (EMA), para capturar tendencias del mercado y ejecutar operaciones. La estrategia es aplicable a posiciones largas y cortas, empleando mecanismos de stop-loss y take-profit para la gestión de riesgos y ganancias.

Principio de la estrategia

La lógica central de la estrategia incluye los siguientes componentes clave:

  1. Dos promedios móviles simples (SMA) como indicadores principales de tendencia: SMA de 55 y 300 períodos.
  2. Dos promedios móviles exponenciales (EMA) que forman un canal de negociación: EMA de 576 y 676 períodos.
  3. Las señales de entrada largas se activan cuando la SMA a corto plazo cruza por encima de la SMA o la EMA a largo plazo; las señales de entrada cortas se producen cuando la SMA a corto plazo cruza por debajo de la SMA o la EMA a largo plazo.
  4. Estrategia de stop-loss y take-profit de punto fijo, con stop-loss fijado en 1/70 del precio de entrada y take-profit en 1/140 del precio de entrada.
  5. Se activa un mecanismo de detención trasera cuando la ganancia alcanza los 300 puntos para proteger las ganancias acumuladas.
  6. La estrategia incluye condiciones de salida, como el cierre automático de la posición cuando el precio alcanza los niveles de stop-loss o take-profit.

Ventajas estratégicas

  1. Integración de múltiples indicadores: la combinación de múltiples medias móviles y canales EMA mejora la precisión de la identificación de tendencias.
  2. Comercio bidireccional: La estrategia puede obtener ganancias tanto en mercados alcistas como bajistas, mejorando la eficiencia del capital.
  3. Gestión de riesgos: emplea puntos fijos de stop-loss y take-profit, controlando eficazmente el riesgo para cada operación.
  4. Protección de ganancias: Utiliza el mecanismo de parada de seguimiento para bloquear ganancias parciales durante tendencias sostenidas.
  5. Flexibilidad: los parámetros de la estrategia son ajustables para adaptarse a las diferentes condiciones del mercado.

Riesgos estratégicos

  1. Riesgo de mercado variable: en los mercados laterales, las señales falsas frecuentes pueden dar lugar a pérdidas consecutivas.
  2. En los mercados altamente volátiles, los precios reales de ejecución pueden desviarse significativamente de los precios ideales.
  3. Exceso de negociación: las señales de negociación frecuentes pueden dar lugar a costes de transacción excesivos.
  4. Sensibilidad de parámetros: el rendimiento de la estrategia puede ser muy sensible a la configuración de parámetros, lo que puede requerir ajustes frecuentes para diferentes entornos de mercado.

Direcciones para la optimización de la estrategia

  1. Incorporar indicadores de volatilidad: considerar la posibilidad de añadir ATR (Average True Range) para ajustar dinámicamente los niveles de stop loss y take profit, adaptándose a la variación de la volatilidad del mercado.
  2. Mejorar el filtrado de la fuerza de la tendencia: Introduzca el ADX (Índice Direccional Medio) para filtrar las señales de tendencia débiles, reduciendo las pérdidas por fallas.
  3. Optimice el tiempo de entrada: Considere combinar RSI (Índice de Fuerza Relativa) o MACD (Divergencia de Convergencia de la Media Móvil) para mejorar el tiempo de entrada y aumentar la tasa de ganancia.
  4. Refinar la gestión del dinero: Implementar el tamaño dinámico de las posiciones, ajustando los tamaños de las operaciones en función del capital de la cuenta y la volatilidad del mercado.
  5. Prorrogar el período de backtesting: realizar backtests a más largo plazo para verificar la estabilidad de la estrategia en diferentes entornos de mercado.

Conclusión

Esta estrategia de seguimiento de tendencias de canal de media móvil dual proporciona un sistema de negociación integral mediante la combinación de múltiples indicadores técnicos. No solo captura las principales tendencias, sino que también incorpora mecanismos de gestión de riesgos y protección de ganancias. Si bien existen algunos riesgos potenciales, a través de la optimización continua y el ajuste de parámetros, la estrategia tiene el potencial de funcionar bien en diversas condiciones de mercado. La optimización futura debe centrarse en mejorar la calidad de la señal, mejorar la gestión de riesgos y aumentar la adaptabilidad de la estrategia.


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

Más.