
Esta estrategia permite la generación de señales de comercio de cruce de oro y cruce de muerte mediante el cálculo de la intersección de la línea rápida EMA y la línea lenta EMA. Cuando la línea rápida EMA atraviesa la línea lenta EMA, genera una señal de compra. Cuando la línea rápida EMA atraviesa la línea lenta EMA, genera una señal de venta.
El indicador central de esta estrategia es la línea EMA rápida y la línea EMA lenta. La estrategia se establece mediante la configuración de dos líneas EMA de diferentes parámetros, la línea EMA rápida se establece en 10 y la línea EMA lenta en 20. La línea EMA de 10 días responde más rápidamente a los cambios en los precios, mientras que la línea EMA de 20 días responde más lentamente.
Mediante el principio de cruce de las líneas de EMA rápidas y lentas, esta estrategia capta adecuadamente el momento de la transición de la tendencia del mercado y puede generar señales de negociación a tiempo. Al mismo tiempo, el indicador EMA en sí tiene la capacidad de filtrar falsas señales de fluctuación y evitar la apertura frecuente de posiciones en momentos de fluctuación del mercado. Esto permite a la estrategia capturar los puntos de inflexión del mercado y tener una mayor capacidad de rentabilidad al tiempo que reduce las operaciones erróneas.
Para los riesgos mencionados anteriormente, se puede optimizar mediante la introducción de indicadores adicionales, como aumentar las condiciones de filtración de las transacciones, evitar señales erróneas en combinación con los indicadores MACD, usar la velocidad de respuesta de los indicadores de aceleración de EMA de adaptación, etc. Además, también son necesarios los paros razonables y los paros activos.
La estrategia puede optimizarse aún más en:
Esta estrategia utiliza el principio de cruce de líneas rápidas y lentas de dos EMA para capturar los puntos de inflexión clave del mercado y tiene un fuerte efecto en el mercado. En combinación con los indicadores auxiliares y la optimización del stop loss, se puede mejorar aún más la estabilidad de la estrategia. La idea de la estrategia es simple y clara, vale la pena que los comerciantes de cuantificación la aprendan y la utilicen, y tiene un gran espacio para la expansión y el potencial de optimización.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Backtest single EMA cross", overlay=true)
qty = input(100000, "Buy quantity")
testStartYear = input(2019, "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=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
#00FF00 : na
testPeriod() => true
ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")
expo = ema(close, ema1)
ma = ema(close, ema2)
avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)
p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)
longCondition = crossover(expo, ma)
shortCondition = crossunder(expo, ma)
if testPeriod()
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)