Tendencia del canal de media móvil triple siguiendo la estrategia

El autor:¿ Qué pasa?, fecha: 2023-11-06 16:58:57
Las etiquetas:

img

Resumen general

Esta estrategia utiliza una triple combinación de promedios móviles para determinar la dirección de la tendencia basada en el orden de los promedios móviles, para lograr el seguimiento de la tendencia.

Principio de la estrategia

La estrategia utiliza tres promedios móviles con períodos diferentes, incluidos un promedio móvil rápido, un promedio móvil medio y un promedio móvil lento.

Condiciones de entrada:

  1. Long: cuando el MA rápido > el MA medio > el MA lento, se considera que el mercado está en una tendencia alcista, se va a largo.
  2. Corto: cuando el MA lento < mediano MA < rápido MA, se considera que el mercado está en una tendencia a la baja, ir corto.

Condiciones de salida:

  1. Exit MA: cierre de la posición cuando el orden de las tres medias móviles se invierte.
  2. Exit TP/SL: Puntos fijos de toma de ganancias y stop loss, como el 12% para TP y el 1% para SL, salida cuando el precio alcanza TP o SL.

La estrategia es simple y directa, utilizando tres medias móviles para determinar la dirección de la tendencia del mercado para la tendencia después de la negociación, adecuada para los mercados con una fuerte tendencia.

Análisis de ventajas

  • Utilice tres promedios móviles para determinar la tendencia y filtrar el ruido del mercado.
  • Las medias móviles de diferentes períodos pueden determinar con mayor precisión los puntos de inversión de tendencia.
  • Combinar indicadores de media móvil y TP/SL fijo para gestionar el riesgo de capital.
  • La lógica de la estrategia es simple e intuitiva, fácil de entender e implementar.
  • Los parámetros del período de admisión pueden optimizarse fácilmente para adaptarse a las condiciones del mercado de los diferentes ciclos.

Riesgos y mejoras

  • En los mercados de ciclo largo, las medias móviles pueden tener más señales falsas, lo que conduce a pérdidas innecesarias.
  • Considere la posibilidad de añadir otros indicadores o filtros para mejorar la rentabilidad.
  • Optimizar la combinación de los parámetros de la media móvil de los períodos para adaptarse a condiciones de mercado más amplias.
  • Combine con los indicadores de fuerza de tendencia para evitar comprar picos y vender fondos.
  • Añadir paradas automáticas para evitar mayores pérdidas.

Conclusión

La estrategia de seguimiento de tendencia de la media móvil triple tiene una lógica clara y fácil de entender, utilizando promedios móviles para determinar la dirección de la tendencia para la tendencia simple después de la negociación. La ventaja es que es fácil de implementar, y el ajuste de los parámetros del período de MA puede adaptarse a las condiciones del mercado de diferentes ciclos. Sin embargo, también hay ciertos riesgos de señales falsas, que se pueden mejorar agregando otros indicadores o condiciones para reducir pérdidas innecesarias y mejorar la rentabilidad de la estrategia. En general, esta estrategia es adecuada para principiantes interesados en el comercio de tendencias para aprender y practicar.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Jompatan

//@version=5
strategy('Strategy Triple Moving Average', overlay=true, initial_capital = 1000, commission_value=0.04, max_labels_count=200)

//INPUTS
mov_ave = input.string(defval="EMA", title='Moving Average type:', options= ["EMA", "SMA"])

period_1 = input.int(9,  title='Period 1', inline="1", group= "============== Moving Average Inputs ==============")
period_2 = input.int(21, title='Period 2', inline="2", group= "============== Moving Average Inputs ==============")
period_3 = input.int(50, title='Period 3', inline="3", group= "============== Moving Average Inputs ==============")

source_1 = input.source(close, title='Source 1', inline="1", group= "============== Moving Average Inputs ==============")
source_2 = input.source(close, title='Source 2', inline="2", group= "============== Moving Average Inputs ==============")
source_3 = input.source(close, title='Source 3', inline="3", group= "============== Moving Average Inputs ==============")


//EXIT CONDITIONS
exit_ma   = input.bool(true, title= "Exit by Moving average condition", group="================ EXIT CONDITIONS ================")
exit_TPSL = input.bool(false, title= "Exit by Take Profit and StopLoss", group="================ EXIT CONDITIONS ================")
TP        = input.int(12, title='Take Profit', step=1, group="================ EXIT CONDITIONS ================")
SL        = input.int(1, title='Stop Loss', step=1, group="================ EXIT CONDITIONS ================")
plot_TPSL = input.bool(false, title='Show TP/SL lines', group="================ EXIT CONDITIONS ================")


//Date filters
desde = input(defval= timestamp("01 Jan 2023 00:00 -3000"), title="From", inline="12", group= "============= DATE FILTERS =============")
hasta = input(defval= timestamp("01 Oct 2099 00:00 -3000"), title="To  ", inline="13", group= "============= DATE FILTERS =============")
enRango = true

//COMMENTS
//entry_long_comment  = input.string(defval=" ", title="Entry Long comment: ", inline="14", group="============= COMMENTS =============")
//exit_long_comment   = input.string(defval=" ", title="Exit Long comment:  ", inline="15", group="============= COMMENTS =============")
//entry_short_comment = input.string(defval=" ", title="Entry Short comment:", inline="16", group="============= COMMENTS =============")
//exit_short_comment  = input.string(defval=" ", title="Exit Short comment: ", inline="17", group="============= COMMENTS =============")

//============================================================

//Selecting Moving average type
ma1 = mov_ave == "EMA" ? ta.ema(source_1, period_1) : ta.sma(source_1, period_1)
ma2 = mov_ave == "EMA" ? ta.ema(source_2, period_2) : ta.sma(source_2, period_2)
ma3 = mov_ave == "EMA" ? ta.ema(source_3, period_3) : ta.sma(source_3, period_3)

//============================================================
//Entry Long condition: Grouped Moving average from: (ma fast > ma middle > ma slow)
long_condition = (ma1 > ma2) and (ma2 > ma3)

//Entry Short condition: Grouped Moving average from: (ma fast < ma middle < ma slow)
short_condition = (ma1 < ma2) and (ma2 < ma3)

//============================================================

cantidad       = strategy.equity / close
comprado_long  = strategy.position_size > 0
comprado_short = strategy.position_size < 0

var long_profit_price  = 0.0
var long_stop_price    = 0.0
var short_profit_price = 0.0
var short_stop_price   = 0.0

//============================================================

//ENTRY LONG
if not comprado_long and not comprado_short and long_condition and not long_condition[1] and enRango
    strategy.entry('Long', strategy.long, qty=cantidad, comment= "Entry Long")
    if exit_TPSL
        long_profit_price := close * (1 + TP/100)
        long_stop_price   := close * (1 - SL/100)
    else
        long_profit_price := na
        long_stop_price   := na
//============================================================


//ENTRY SHORT
if not comprado_long and not comprado_short and short_condition and not short_condition[1] and enRango
    strategy.entry('Short', strategy.short, qty=cantidad, comment= "Entry Short")
    if exit_TPSL
        short_profit_price := close * (1 - TP/100)
        short_stop_price   := close * (1 + SL/100)
    else
        short_profit_price := na
        short_stop_price   := na
//============================================================


//EXIT LONG 
if comprado_long and exit_ma and long_condition[1] and not long_condition
    strategy.close('Long', comment='Exit-Long(MA)')
if comprado_long and exit_TPSL
    strategy.exit('Long', limit=long_profit_price, stop=long_stop_price, comment='Exit-Long(TP/SL)')
//============================================================


//EXIT SHORT 
if comprado_short and exit_ma and short_condition[1] and not short_condition
    strategy.close('Short', comment='Exit-Short(MA)')
if comprado_short and exit_TPSL
    strategy.exit('Short', limit=short_profit_price, stop=short_stop_price, comment='Exit-Short(TP/SL)')
//============================================================



//PLOTS
plot(ma1, linewidth=2, color=color.rgb(255, 255, 255))
plot(ma2, linewidth=2, color=color.rgb(144, 255, 252))
plot(ma3, linewidth=2, color=color.rgb(49, 167, 255))
//Plot Take Profit line
plot(plot_TPSL ? comprado_long  ? long_profit_price : comprado_short ? short_profit_price : na : na, color=color.new(color.lime, 30), style= plot.style_linebr)
//Plot StopLoss line
plot(plot_TPSL ? comprado_long ? long_stop_price : comprado_short ? short_stop_price : na : na, color=color.new(color.red, 30), style= plot.style_linebr)









Más.