Estrategia de negociación de ruptura de canal de media móvil

El autor:¿ Qué pasa?, Fecha: 2024-01-29 14:31:25
Las etiquetas:

img

Resumen general

Esta estrategia se basa en los principios de cruz de oro y cruz de muerte de promedios móviles simples, tomando decisiones de compra y venta basadas en el cruce de promedios móviles de 7 días y 14 días. Genera una señal de compra cuando el MA de 7 días cruza por encima del MA de 14 días desde abajo, y una señal de venta cuando el MA de 7 días cruza por debajo del MA de 14 días desde arriba. La estrategia también cuenta con funciones de stop loss, take profit y trailing stop para bloquear las ganancias y controlar los riesgos.

Estrategia lógica

La lógica de negociación central de esta estrategia se basa en los principios de cruce de los promedios móviles de 7 días y 14 días. El MA de 7 días refleja las tendencias de precios a corto plazo, mientras que el MA de 14 días refleja las tendencias a mediano plazo. Cuando el MA a corto plazo cruza por encima del MA a mediano plazo desde abajo, indica que la tendencia a corto plazo se está fortaleciendo, lo que hace que sea un buen momento para ir largo. Por el contrario, cuando el MA a corto plazo cruza por debajo del MA a mediano plazo desde arriba, indica que la tendencia a corto plazo se está debilitando, por lo que uno debe cerrar posiciones o ir corto.

Específicamente, esta estrategia calcula los promedios móviles simples de 7 días y 14 días utilizando el indicador SMA. Después de que cada candelero se forme, compara los valores actuales de la línea de 7 días y la línea de 14 días. Si la línea de 7 días cruza por encima de la línea de 14 días, se genera una señal larga para ir largo. Si la línea de 7 días cruza por debajo de la línea de 14 días, se genera una señal corta para ir corta.

Además, la estrategia también establece funciones de stop loss, take profit y trailing stop para bloquear las ganancias y controlar los riesgos.

Ventajas

Esta estrategia tiene las siguientes ventajas:

  1. Reglas simples y claras, fáciles de entender y aplicar, adecuadas para que los principiantes aprendan.
  2. Los principios de cruce de promedios móviles han sido probados en el tiempo y son efectivos, con tasas de ganancia relativamente altas.
  3. Equipado con stop loss, take profit y trailing stop para controlar eficazmente los riesgos.
  4. Pocos parámetros, convenientes para pruebas y optimización.

Riesgos y contramedidas

También hay algunos riesgos con esta estrategia:

  1. Los promedios móviles pueden retrasarse en reflejar los cambios de tendencia, lo que puede causar grandes pérdidas cuando las tendencias se invierten.
  2. Las señales cruzadas frecuentes en mercados diferentes generan más señales falsas, lo que socava la eficacia de la estrategia.

Para hacer frente a estos riesgos, pueden considerarse las siguientes contramedidas:

  1. Agregue otros indicadores como MACD y KDJ para filtrar las señales de cruce y evitar señales incorrectas en los puntos de inflexión de la tendencia.
  2. Ampliar el rango de stop loss, acortar el período de espera para reducir el impacto de una sola pérdida.
  3. Optimizar los parámetros de las medias móviles en función de las condiciones de mercado variables, utilizando períodos más largos para mercados variables.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Prueba diferentes combinaciones y parámetros de MA para encontrar la configuración óptima.
  2. Añadir otros indicadores para filtrar señales para mejorar la eficacia de la estrategia.
  3. Optimizar el stop loss, tomar parámetros de ganancias para reducir la reducción y aumentar la relación de ganancias.
  4. Ajuste de parámetros basados en diferentes productos y sesiones comerciales.

Conclusión

En conclusión, esta estrategia es muy adecuada para que los principiantes aprendan. La lógica es simple y fácil de entender e implementar. También tiene una adaptabilidad del mercado relativamente buena, con un amplio margen para el ajuste de parámetros y la optimización para lograr ganancias constantes.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)






Más.