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