
Esta estrategia permite la generación de señales de negociación mediante la selección dinámica de diferentes tipos de promedios móviles y su combinación con varios períodos de tiempo.
La estrategia permite elegir cinco indicadores de media móvil: SMA, EMA, TEMA, WMA, HMA, y establecer la duración del período de la línea media. La estrategia traza diferentes tipos de líneas medias según la dinámica elegida. Haga más cuando el precio de cierre sube por encima de la línea media; y haga un descuento cuando el precio de cierre baja por encima de la línea media.
En concreto, la estrategia primero define el ciclo de retraso en función de los parámetros de entrada. Luego se calculan los cinco indicadores medios:
De acuerdo con la elección, trazar la línea media correspondiente. Cuando el precio de cierre sea superior a la línea media, hacer más; Cuando el precio de cierre sea inferior a la línea media, hacer un vacío.
La estrategia utiliza diferentes tipos de líneas medias en combinación para suavizar los datos de precios, filtrar el ruido del mercado y generar una señal de negociación más confiable. La estrategia permite la personalización de la longitud del ciclo de la línea mediana, que se puede negociar en función de las tendencias de los diferentes períodos.
El riesgo puede reducirse optimizando:
La estrategia puede ser optimizada en las siguientes direcciones:
Por ejemplo, se puede agregar un indicador de capacidad de volumen, que genera señales de transacción solo en caso de que el volumen de transacción sea mayor, para filtrar algunos brechas falsas.
Se puede establecer un canal, que se abre solo cuando el precio rompe el canal; se puede establecer una línea de parada, que se cierra después de que el precio toque la línea de parada. Esto reduce las pérdidas innecesarias.
Se puede ajustar el ciclo de la media en función de la dinámica de la situación del mercado, usar la media de largo período cuando la tendencia es más evidente, y usar la media de corto período cuando se recoge.
Se puede ajustar el tamaño de la posición en función de la situación de retirada, reducir la posición en la retirada y aumentar la posición moderadamente cuando se gana.
La estrategia utiliza una combinación de varios indicadores de línea media, combinados con varios períodos de tiempo, para formar un efecto de seguimiento de tendencias más estable. El espacio de optimización de la estrategia es grande, y se puede mejorar desde el filtro de entrada, salida, optimización de parámetros, etc., para que la estrategia obtenga mejores resultados en el disco.
/*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 )