
Стратегия использует EMA, Bollinger Bands и MACD, чтобы определить время покупки и продажи в сочетании с диапазоном ценового распределения и динамическим индикатором.
Вычислите 3-дневную, 9-дневную и 30-дневную ЭМА.
Вычислите 20-дневный стандартный разрыв цены и нарисуйте полосы Боллинджера в пределах 1- и 2-кратного стандартного разрыва.
Вычислите 12-й, 26-й MACD и 9-й сигнальные линии.
Когда 9-дневная ЭМА пересекает 30-дневную ЭМА, и цена превышает верхний предел полосы Боллинджера в 1 раз больше стандартного отклонения, посылается сигнал покупки.
Сигнал продажи подается, когда 30-дневная ЭМА пересекает 9-дневную ЭМА и цена находится ниже нижней границы нижней границы Bollinger Bands в 1 раз больше стандартной разницы.
Эта стратегия, в сочетании с среднелинейным и динамическим индикаторами, позволяет лучше понимать тенденции и моменты рынка и имеет следующие преимущества:
EMA - быстро реагирует на изменения цен и определяет рыночные тенденции; MACD - способность судить, предотвращая ложные прорывы.
Bollinger Bands SDI в сочетании с EMA позволяет более точно определить время покупки или продажи.
Несколько комбинаций показателей могут дополнять друг друга. В одном прорыве различные показатели могут подтвердить суждение.
Однако есть некоторые риски, связанные с этой стратегией, и необходимо обратить внимание на следующие моменты:
EMA может быть скорректирована и оптимизирована, и различные циклы могут лучше отслеживать тенденции.
Bollinger Bands Parameters можно оптимизировать, изменение коэффициентов стандарта плохо отфильтровывает фальшивые сигналы.
Параметры индикатора MACD могут быть оптимизированы и комбинированы, эффективность суждения может быть улучшена.
Эта стратегия включает в себя средний показатель EMA для определения больших тенденций, а также индикатор Bollinger Bands, который позволяет точно уловить точки покупки и продажи при большей интенсивности; индикатор MACD дополняет подтверждение тенденции и может эффективно отфильтровывать ложные сигналы. С помощью оптимизации параметров эта стратегия может еще больше повысить эффективность.
/*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)