
La idea principal de esta estrategia es la de utilizar las señales de compra y venta de los indicadores EMA para realizar operaciones de compra y venta. Se trazan simultáneamente varios grupos de EMA rápidos y lentos, y se utilizan sus cruces para juzgar las señales de negociación.
Esta estrategia define primero un conjunto de líneas medias EMA, incluyendo las líneas medias EMA rápidas de ema1 a ema6 y las líneas medias EMA lentas de ema7 a ema12. Luego define las señales de compra buy_signal y las señales de venta sell_signal:
Así, cuando el corto plazo EMA cruza la línea media de la EMA de largo plazo, indica que el mercado está en una tendencia ascendente, comprar; cuando el corto plazo EMA cruza la línea media de la EMA de largo plazo, indica que el mercado está en una tendencia descendente, vender.
Las estrategias para determinar la dirección de la tendencia a través de la supervisión de la intersección de la línea media EMA para tomar decisiones de compra y venta.
Esta estrategia tiene las siguientes ventajas:
Utilizando el indicador de la línea media de la EMA para determinar la tendencia, la línea media de la EMA es más suave para los cambios de precio y puede filtrar el ruido del mercado a corto plazo, lo que hace que las señales de negociación sean más confiables.
Al mismo tiempo, se pueden trazar varios conjuntos de líneas medias EMA para determinar con mayor precisión los cambios en la tendencia. El cruce de líneas EMA rápidas y lentas evita perder puntos importantes de cambio de tendencia.
Las estrategias son simples y claras, emiten señales de transacción a través de la cruz EMA, son fáciles de entender y se implementan para el comercio cuantitativo.
Los parámetros del ciclo EMA son personalizables y se pueden ajustar según las diferentes variedades y mercados, con flexibilidad para responder a los cambios en el mercado.
La estrategia también tiene los siguientes riesgos:
La línea media de la EMA es retrasada y puede retrasar la emisión de señales de negociación.
La selección de la combinación incorrecta de parámetros de EMA puede generar una señal de negociación incorrecta.
La intersección de la EMA no puede filtrar eficazmente las señales falsas producidas entre las zonas de oscilación.
Existe el riesgo de sobreadaptación, y el espacio para optimizar los parámetros EMA es limitado.
Respuesta:
El filtro, en combinación con otros indicadores, evita la emisión de señales erróneas en la zona de vibración.
Prueba la estabilidad de los diferentes parámetros de ciclo para evitar que se produzca una sobreajuste.
Ajuste adecuado de la combinación de parámetros de la estrategia o aumento de los mecanismos de salida para controlar el riesgo.
La estrategia también puede ser optimizada en los siguientes aspectos:
Aumentar las estrategias de stop loss y salir de ellas cuando las pérdidas alcanzan un cierto nivel.
El mecanismo de reingreso al mercado consiste en la configuración de señales de re-compra y venta.
Optimización de la combinación de parámetros de ciclo cruzado EMA de compra y venta para encontrar el parámetro óptimo.
Añadir otros indicadores a la evaluación, realizar una verificación multifactorial y mejorar la calidad de la señal.
Prueba de la optimización de los parámetros de las diferentes variedades para encontrar el mejor ámbito de aplicación.
Tenga en cuenta los factores de deslizamiento en las operaciones de disco duro y realice un ajuste de retroalimentación.
Esta estrategia utiliza la dirección de la tendencia de los cruces rápidos y lentos de la línea media de la EMA, para comprar y vender en función de las señales de cruce, y es una estrategia de seguimiento de tendencias más simple. Tiene la ventaja de determinar los cambios de tendencia, pero también existe el riesgo de retraso y oscilación.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Companion Strategy script to my Cloud Study. Enjoy! -MP
// study("MP's Cloud Study", overlay=true)
strategy(title="MP's Cloud Strat'", shorttitle="MP's Cloud Strat", overlay=true, precision=6, pyramiding=0, initial_capital=10000, currency="USD", default_qty_type=strategy.percent_of_equity,calc_on_order_fills= false, calc_on_every_tick=false, default_qty_value=100.0, commission_type=strategy.commission.percent, commission_value=0.05)
//bgcolor ( color=black, transp=20, title='Blackground', editable=true)
src = close, len1 = input(2, minval=1, title="Short EMA")
src2 = close, len3 = input(7, minval=1, title="Long EMA")
emaShort = ema(src, len1)
emaLong = ema(src2, len3)
StartYear = input(2018, "Start Year")
StartMonth = input(01, "Start Month")
StartDay = input(18, "Start Day")
StopYear = input(2018, "Stop Year")
StopMonth = input(12, "Stop Month")
StopDay = input(26, "Stop Day")
tradeStop = timestamp(StopYear,StopMonth,StopDay,0,0)
//src = close,
//len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(3, minval=1, title="Fast EMA 2")
//len3 = input(8, minval=1, title="Fast EMA 3")
len4 = input(5, minval=1, title="Fast EMA 4")
len5 = input(8, minval=1, title="Fast EMA 5")
len6 = input(10, minval=1, title="Fast EMA 6")
//Slow EMA
len7 = input(30, minval=1, title="Slow EMA 7")
len8 = input(35, minval=1, title="Slow EMA 8")
len9 = input(40, minval=1, title="Slow EMA 9")
len10 = input(45, minval=1, title="Slow EMA 10")
len11 = input(50, minval=1, title="Slow EMA 11")
len12 = input(60, minval=1, title="Slow EMA 12")
//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
//Slow EMA
ema7 = ema(src, len7)
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
//Fast EMA Color Rules
//colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6)
//Slow EMA Color Rules
//colslowL = ema7 > ema8 and ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12
//colslowS = ema7 < ema8 and ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12
//Fast EMA Final Color Rules
//colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
//colFinal2 = colslowL ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=silver)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=silver)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=silver)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=silver)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=silver)
p2=plot(ema6, title="Fast EMA 6", style=line, linewidth=2, color=silver)
fill(p1,p2,color=silver, transp=60)
//Slow EMA Plots
//p3=plot(ema7, title="Slow EMA 7", style=line, linewidth=4, color=colFinal2)
//plot(ema8, title="Slow EMA 8", style=line, linewidth=3, color=colFinal2)
//plot(ema9, title="Slow EMA 9", style=line, linewidth=3, color=colFinal2)
//plot(ema10, title="Slow EMA 10", style=line, linewidth=3, color=colFinal2)
//plot(ema11, title="Slow EMA 11", style=line, linewidth=3, color=colFinal2)
//p4=plot(ema12, title="Slow EMA 12", style=line, linewidth=4, color=colFinal2)
//fill(p3,p4, color=silver, transp=60)
//Plot the Ribbon
ma1=plot( emaShort,color=rising(emaShort,2)?green:red,linewidth=1,join=true,transp=20,title="Short")
ma2=plot( emaLong,color=rising(emaLong,2)?green:red,linewidth=1,join=true,transp=20,title="Long")
fcolor = emaShort>emaLong?green:red
fill(ma1,ma2,color=fcolor,transp=80,title="Ribbon Fill")
//fast = 4, slow = 16
//fastMA = ema(close, fast)
//slowMA = ema(close, slow)
//plot(fastMA, color=green, title = "buy/sell")
//plot(slowMA, color=red, title = "base")
//Conditions
buy_signal = crossover(ema1,ema3)
sell_signal = crossunder(ema1,ema3)
plotshape(sell_signal, style=shape.triangleup, color = red, text="Start Short")
plotshape(buy_signal, style=shape.triangledown, color = green, text="Start Long")
alertcondition(sell_signal, title = 'Sell/Short', message = 'e= s= c=position b=long t=market l= | delay=30 | e= s= b=short l= t=market q=0.01')
alertcondition(buy_signal, title = 'Buy/Long', message = 'e= s= c=position b=short t=market l= | delay=30 | e= s= b=long l= t=market q=0.01')
//alertcondition(sell_signal, title = 'Sell/Short', message = 'e= s= c=order b=buy | delay=3 | e= b=sell q=99% p=0.70% u=currency')
//alertcondition(buy_signal, title = 'Buy/Long', message = 'e= s= c=order b=sell | delay=30 | e= b=buy q=80 p=0.1% u=currency')
testStartYear = input(2018, "From Year")
testStartMonth = input(1, "From Month")
testStartDay = input(1, "From Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2019, "To Year")
testStopMonth = input(1, "To Month")
testStopDay = input(1, "To Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
if testPeriod()
if buy_signal
strategy.entry("Long", true)
if sell_signal
strategy.close("Long")