Esta estrategia selecciona dinámicamente diferentes tipos de promedios móviles en múltiples marcos de tiempo para generar señales comerciales.
La estrategia permite seleccionar de las medias móviles SMA, EMA, TEMA, WMA y HMA, con longitudes de período personalizables.
Específicamente, la estrategia define primero el período de backtest basado en parámetros de entrada.
La media móvil correspondiente se traza en función de la selección.
Al combinar diferentes tipos de promedios móviles, la estrategia puede suavizar los datos de precios y filtrar el ruido del mercado para generar señales comerciales más confiables.
Los riesgos pueden reducirse:
La estrategia puede mejorarse en varios aspectos:
Añadir otros filtros para señales más estables
Por ejemplo, indicadores de volumen para evitar falsos breakouts sin confirmación de volumen.
Optimiza la lógica de entrada y salida
Establezca canales de precios y detenga las pérdidas para reducir las pérdidas innecesarias.
Periodos de media móvil dinámica
Utilice períodos más largos en tendencias fuertes y períodos más cortos durante las consolidaciones.
Mejorar la gestión del dinero
Ajustar el tamaño de las posiciones en función de las reducciones y la obtención de beneficios.
La estrategia combina varios promedios móviles a través de marcos de tiempo para generar efectos de seguimiento de tendencia relativamente estables.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000) qty = input(100000000, "Buy quantity") testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"]) len1 = input(7, minval=1, title="Period") s=sma(close,len1) e=ema(close,len1) xEMA1 = ema(close, len1) xEMA2 = ema(xEMA1, len1) xEMA3 = ema(xEMA2, len1) t = 3 * xEMA1 - 3 * xEMA2 + xEMA3 f_hma(_src, _length)=> _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length))) h = f_hma(close, len1) w = wma(close, len1) ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na buy= close>ma sell= close<ma alertcondition(buy, title='buy', message='buy') alertcondition(sell, title='sell', message='sell') ordersize=floor(strategy.equity/close) if testPeriod() strategy.entry("long",strategy.long,ordersize,when=buy) strategy.close("long", when = sell )