
La estrategia utiliza un conjunto de EMA, Bollinger Bands y MACD para determinar la hora de comprar y vender, en combinación con el rango de distribución de precios y el indicador de movimiento, sobre la base de la realización de EMA 9 y la línea de 30 puntos.
Se calculan los EMAs de 3 días, 9 días y 30 días.
Calcular la diferencia estándar de los precios en 20 días y trazar bandas de Bollinger de 1x y 2x la diferencia estándar.
Calcula el MACD de los días 12, 26 y 9 de la línea de señal.
Cuando el EMA del día 9 atraviesa el EMA del día 30 y el precio supera el límite superior de la banda de Bollinger por encima de la diferencia estándar, se emite una señal de compra.
Cuando un EMA de 30 días atraviesa un EMA de 9 días y el precio está por debajo de la brecha de la banda inferior de Bollinger, emite una señal de venta.
Esta estrategia, combinada con el indicador de la línea media y el indicador de la dinámica, permite una mejor comprensión de las tendencias y los momentos del mercado, con las siguientes ventajas:
Los indicadores EMA responden rápidamente a los cambios en los precios para juzgar la tendencia del mercado; el MACD es un indicador de juicio para evitar falsos breaks.
El índice de diferencia estándar de Bollinger Bands combinado con la EMA permite determinar con mayor precisión cuándo comprar o vender.
La combinación de varios indicadores puede ser complementaria. En una brecha, los diferentes indicadores pueden verificar el juicio.
La estrategia también presenta algunos riesgos, y hay que tener en cuenta los siguientes puntos para optimizar:
La combinación de EMAs medias se puede ajustar y optimizar para capturar mejor las tendencias en diferentes períodos.
Los parámetros de las bandas de Bollinger pueden ser optimizados, y el estándar de multiplicadores de variación es malo para filtrar señales falsas.
Los parámetros del indicador MACD se pueden optimizar y combinar para mejorar la eficacia del juicio.
La estrategia integra el indicador de la línea media EMA para determinar la gran tendencia, con la ayuda del indicador de las bandas de Bollinger para capturar con precisión los puntos de compra y venta cuando la fuerza es mayor; El indicador MACD complementa la confirmación de la tendencia y puede filtrar eficazmente las señales falsas.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("emabb_collab", shorttitle="emabb", overlay=true)
// Input parameters
ema3 = input(3, title="3 EMA")
ema9 = input(9, title="9 EMA")
ema30 = input(30, title="30 EMA")
macdShort = input(12, title="MACD Short")
macdLong = input(26, title="MACD Long")
macdSignal = input(9, title="MACD Signal")
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev1 = mult * ta.stdev(src, length)
upper1 = basis + dev1
lower1 = basis - dev1
dev2 = mult * 2 * ta.stdev(src, length)
upper2 = basis + dev2
lower2 = basis - dev2
plot(basis, "Basis", color=#FF6D00)
p1 = plot(upper1, "Upper1", color=#2962FF)
p2 = plot(lower1, "Lower1", color=#2962FF)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
plot(basis, "Basis", color=#FF6D00)
p3 = plot(upper2, "Upper2", color=#00FF8C)
p4 = plot(lower2, "Lower2", color=#00FF8C)
fill(p3, p4, title = "Background", color=color.rgb(0, 153, 140, 95))
// Calculate EMAs
ema3Value = ta.ema(close, ema3)
ema9Value = ta.ema(close, ema9)
ema30Value = ta.ema(close, ema30)
// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)
// Conditions for buy signal
buyCondition = ta.crossover(ema9Value, ema30Value) and ta.stdev(close, 20) > ta.stdev(close, 20)[1]
//Conditions for sell signal
sellCondition = ta.crossover(ema30Value, ema9Value) and ta.stdev(close, 20) < ta.stdev(close, 20)[1]
// Plot signals on the chart
plotshape(buyCondition, title='Buy Label', style=shape.triangleup, location=location.belowbar, size=size.normal, text='Buy', textcolor=color.new(color.white, 0), color=color.new(color.green, 0))
plotshape(sellCondition, title='sell Label', style=shape.triangledown, location=location.abovebar, size=size.normal, text='sell', textcolor=color.new(color.white, 0), color=color.new(color.red, 0))
// Plot EMAs
plot(ema3Value, title="3 EMA", color=color.orange)
plot(ema9Value, title="9 EMA", color=color.purple)
plot(ema30Value, title="30 EMA", color=color.red)
if buyCondition
strategy.entry('Long', strategy.long)
if sellCondition
strategy.entry('Short', strategy.short)