
La estrategia de triple SMA es una estrategia para determinar tendencias y entradas basadas en una media móvil simple de tres períodos diferentes. Puede seguir automáticamente las tendencias y aprovechar las reveses en las tendencias para aumentar la posición.
La estrategia utiliza tres diferentes períodos de SMA como indicadores principales para determinar la tendencia, incluidos los SMA de 200 períodos, 400 períodos y 600 períodos. Si el precio está por encima de los tres SMA, se considera una tendencia alcista y, a la inversa, una tendencia alcista.
Como indicador de entradas, la estrategia se combina con el uso de precios cerrados y el oscilador StochClose. La señal se emite solo cuando el precio coincide con la dirección del triple SMA. El indicador StochClose se usa para determinar si se ha sobrevendido o sobrevendido, cuando StochClose hace más cuando se lleva 95 y vacío cuando se lleva 5.
El estándar de stop loss es el stop loss cuando el precio toca el SMA más lento.
La estrategia puede ser incrementada hasta 10 veces. Y se establece un límite de tres diferentes proporciones, el 1%, 2% y 6%, respectivamente.
La mayor ventaja de la estrategia de triple SMA es que, mediante la combinación de tres diferentes períodos de SMA, se puede determinar mejor la dirección y la fuerza de la tendencia. Tiene una mayor capacidad de filtrar falsas señales que un solo SMA.
Además, en combinación con el indicador StochClose para determinar si se está sobrecomprando o sobrevendido, se puede evitar ingresar cerca del punto de inflexión de la tendencia, lo que reduce las entradas erróneas.
El criterio de stop loss es simple y directo, con el SMA de ciclo más lento como línea de stop loss, para evitar al máximo el stop loss prematuro.
El posicionamiento permitido también permite a la estrategia seguir la tendencia y obtener beneficios.
El principal riesgo de esta estrategia es que los tres SMA no pueden filtrar completamente todas las señales falsas y pueden causar pérdidas si no se forma una tendencia de reajuste después de una ruptura. Esto generalmente ocurre cerca de resistencias de soporte importantes.
Además, el propio indicador StochClose puede generar señales erróneas, lo que lleva a entradas inadecuadas. Esto suele ocurrir en zonas de fluctuación de precios.
Para reducir estos riesgos, se puede ajustar adecuadamente la frecuencia de la SMA; o agregar otros indicadores para un juicio de combinación, como KDJ, MACD, etc., para garantizar la calidad de la señal ingresada.
La estrategia puede ser optimizada en los siguientes aspectos:
Aumentar o ajustar el número de ciclos de la SMA para encontrar el parámetro de ciclo más adecuado para una variedad específica
Añadir otros indicadores para el juicio combinado, como KDJ, MACD, etc., para mejorar la calidad de las entradas
Optimización de los parámetros de stop loss para adaptarlos mejor a la amplitud de fluctuación del mercado
Optimice la cantidad y proporción de acumulaciones para encontrar la estrategia de acumulación más adecuada
Prueba diferentes parámetros de variedades para adaptar los parámetros de la estrategia a más variedades
La estrategia de triple SMA es una estrategia de seguimiento de tendencias muy práctica en general. Al combinar la aplicación de tres diferentes períodos de SMA y el indicador StochClose, se logra un mejor efecto de juicio de tendencias, que evita eficazmente las señales erróneas. Al mismo tiempo, se permite un alza de posición adecuada, lo que permite seguir siempre la tendencia a participar en el profit.
/*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
strategy(title="Tripla Sma with entries based on sma price closes ", shorttitle="TRIPLE SMA STRATEGY", overlay=true) ////resolution=""
len = input(200, minval=1, title="sma 1 length")
len1 = input(400, minval=1, title="sma 2 length")
len2 = input(600, minval=1, title="sma 3 length")
src = input(close, title="Source")
////////////////////////////////////////////
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len
up = smma > smma [1]
down =smma < smma[1]
mycolor = up ? #64b5f6 : down ? #d32f2f : na
fastma = sma(hl2, 1)
fastplot = plot(fastma, color=#000000, transp=100, title='sma on candle')
slowplot = plot(smma, color=mycolor, transp=55, title='sma1')
////////////////////////////////////////////
smma1 = 0.0
smma1 := na(smma1[1]) ? sma(src, len1) : (smma1[1] * (len1 - 1) + src) / len1
up2 = smma1 > smma1 [1]
down2 =smma1 < smma1[1]
mycolor2 = up2 ? #64b5f6 : down2 ? #d32f2f : na
slowplot2 = plot(smma1, color=mycolor2, transp=45, title='sma2')
////////////////////////////////////////////
smma2 = 0.0
smma2 := na(smma2[1]) ? sma(src, len2) : (smma2[1] * (len2 - 1) + src) / len2
up3 = smma2 > smma2 [1]
down3 =smma2 < smma2[1]
mycolor3 = up3 ? #64b5f6 : down3 ? #d32f2f : na
slowplot3 = plot(smma2, color=mycolor3, transp=35, title='sma3')
////////////////////////////////////////////////////////////////////////////////////////
//Fill gaps
fillData = smma > fastma
fillData2 = smma < fastma
fillDtat = smma1 > smma
fillDtat2 = smma1 < smma
fillDat = smma2 > smma1
fillDat2 = smma2 < smma1
fillCol1 = fillData ? #ef5350 : fillData2 ? #64b5f6 : na
fillCol2 = fillDtat ? #ef5350 : fillDtat2 ? #64b5f6 : na
fillCol3 = fillDat ? #ef5350 : fillDat2 ? #64b5f6 : na
fill(slowplot, fastplot, color=fillCol1, transp=90, title="sma1 fill")
fill(slowplot, slowplot2, color=fillCol2, transp=80, title="sma2 fill")
fill(slowplot2, slowplot3, color=fillCol3, transp=60, title="sma3 fill")
uc = (close > smma) and (close > smma1)
dc = (close < smma) and (close < smma1)
barColor = uc ? #64b5f6 : dc ? #e91e63 : #b2b5be
barcolor(color=barColor)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//StochClose from @trendinvestpro
periods = input(50, minval=1, title="length for the oscillator")
smooth = input(5, minval=1, title="oscillator smoothing")
hhc=highest(close,periods)
llc=lowest(close,periods)
StochClose = sma((close-llc)/(hhc-llc)*100, smooth)
shortline = input(95, minval=0, title="signal when oscillator crosses above")
longline = input(5, minval=0, title="signal when oscillator crosses below")
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
longs = close > smma2
shorts = close < smma2
long = longs == true and crossunder(StochClose, longline)
short = shorts == true and crossover(StochClose, shortline)
stoplong = close < smma and close < smma1 and close < smma2
stopshort = close > smma and close > smma1 and close > smma2
p1 = strategy.position_avg_price / 100 / syminfo.mintick
maxx = input(2500, title="max orders filled on a day", minval=0)
takeprofit1 = input(1, title="take profit level 1", minval=0)
takeprofit2 = input(2, title="take profit level 2", minval=0)
takeprofit3 = input(6, title="take profit level 3", minval=0)
takeprofitqt1 = input(30, title="take profit quantity first", minval=0)
takeprofitqt2 = input(30, title="take profit quantity second", minval=0)
takeprofitqt3 = input(30, title="take profit quantity third", minval=0)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////Strategy entries/////////////////////////////////////////////////////////////////////////////////////////
// strategy.risk.max_intraday_filled_orders(maxx)
strategy.entry("long", strategy.long, when=long)
strategy.exit("tpl1", "long", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "long", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "long", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("long", when=stoplong == true)
strategy.entry("short", strategy.short, when=short)
strategy.exit("tpl1", "short", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "short", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "short", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("short", when=stopshort == true)