Estrategia de seguimiento de tendencia de canal de media móvil doble

SMA EMA RSI MACD
Fecha de creación: 2024-09-26 16:28:19 Última modificación: 2024-09-26 16:28:19
Copiar: 2 Número de Visitas: 748
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de canal de media móvil doble

Descripción general

Esta estrategia es un sistema de seguimiento de tendencias basado en dos líneas medias y canales. Utiliza las señales cruzadas de las medias móviles a corto y largo plazo, combinadas con los canales formados por las medias móviles del índice (EMA), para capturar las tendencias del mercado y realizar operaciones. La estrategia se aplica tanto a los mercados de tiendas múltiples como a los de tiendas en blanco, para administrar el riesgo y las ganancias mediante el establecimiento de paradas y paradas.

Principio de estrategia

La lógica central de la estrategia incluye las siguientes partes clave:

  1. Se utilizan dos promedios móviles simples (SMA) como indicadores principales de tendencias, el SMA de 55 y el SMA de 300 períodos respectivamente.
  2. El canal de negociación se forma utilizando dos promedios móviles indexados ((EMA) de 576 y 676 períodos respectivamente.
  3. Cuando el SMA corto lleva el SMA largo o el EMA, se activa la señal de multiplicación; cuando el SMA corto lleva el SMA largo o el EMA, se activa la señal de brecha.
  4. Se utiliza una estrategia de stop loss y stop loss de un número fijo de puntos, con el stop loss establecido en 170 del precio de entrada y el stop loss establecido en 1140 del precio de entrada.
  5. Cuando los beneficios alcanzan los 300 puntos, se activa el mecanismo de stop loss móvil para proteger los beneficios obtenidos.
  6. La estrategia también incluye condiciones de liquidación, como la liquidación automática cuando el precio toca el punto de parada o de pérdida.

Ventajas estratégicas

  1. Combinación de múltiples indicadores: mejora la precisión de la determinación de tendencias mediante la combinación de varias medias móviles y canales EMA.
  2. Negociación bidireccional: estrategias que permiten obtener ganancias tanto en el mercado de capitales como en el de capitales, lo que mejora la eficiencia de la utilización de los fondos.
  3. Gestión de riesgos: el uso de puntos fijos de stop loss y stop-loss para controlar el riesgo de cada operación.
  4. Protección de ganancias: el uso de un mecanismo de stop loss móvil para bloquear parte de las ganancias mientras la tendencia continúa.
  5. Flexibilidad: los parámetros de la estrategia se pueden ajustar para adaptarse a las diferentes condiciones del mercado.

Riesgo estratégico

  1. Riesgo de mercado en movimiento: en mercados en movimiento horizontal, puede desencadenar frecuentemente señales falsas, lo que lleva a pérdidas continuas.
  2. Riesgo de deslizamiento: en un mercado altamente volátil, el precio de transacción real puede estar muy alejado del precio ideal.
  3. Exceso de transacciones: Las frecuentes señales de transacciones pueden generar costos de transacción excesivos.
  4. Sensibilidad de parámetros: la actuación de la estrategia puede ser altamente sensible a los ajustes de parámetros, que pueden requerir ajustes frecuentes en diferentes entornos de mercado.

Dirección de optimización de la estrategia

  1. Introducción de indicadores de volatilidad: Considere la adición de ATR (rango real promedio) para ajustar dinámicamente los puntos de parada y parada para adaptarse a diferentes situaciones de volatilidad en el mercado.
  2. Aumentar la intensidad de la tendencia de filtración: se puede introducir el ADX (indice de dirección promedio) para filtrar las señales de tendencia débil, reduciendo la pérdida de falsas rupturas.
  3. Optimización de la hora de entrada: Considere la combinación de RSI (indicador de fuerza relativa) o MACD (diferencia de convergencia de las medias móviles) para optimizar la hora de entrada y aumentar la tasa de victoria.
  4. Optimización de la gestión de fondos: Implementa la gestión dinámica de posiciones, ajustando la proporción de fondos en cada transacción según el valor neto de la cuenta y la volatilidad del mercado.
  5. Extensión del ciclo de retrospectiva: retrospectiva de la estrategia en períodos de tiempo más largos para verificar su estabilidad en diferentes entornos de mercado.

Resumir

Esta estrategia de seguimiento de tendencias de doble canal uniforme ofrece un sistema de negociación integral mediante la combinación de varios indicadores técnicos. No solo es capaz de capturar las principales tendencias, sino que también cuenta con un mecanismo de gestión de riesgos y protección de ganancias. Si bien existen algunos riesgos potenciales, la estrategia tiene el potencial de funcionar bien en una variedad de condiciones de mercado mediante la optimización continua y el ajuste de los parámetros.

Código Fuente 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)