Эта стратегия является количественной торговой стратегией, основанной на индикаторах Bollinger Bands и MACD. Она сочетает в себе Bollinger Bands breakout trading и MACD trend tracking для улучшения качества торговых сигналов.
Стратегия в основном использует диапазоны Боллинджера и индикаторы MACD для определения торговых сигналов.
Болинджерские полосы состоят из средней полосы, верхней полосы и нижней полосы. Сигнал покупки генерируется, когда цена проходит через нижнюю полосу. Сигнал продажи генерируется, когда цена проходит через верхнюю полосу. Стратегия использует принцип прорыва Болинджерских полос для определения более сильных сигналов прорыва.
Индикатор MACD отражает взаимосвязь между краткосрочными и долгосрочными скользящими средними. Он использует перекрестки линии разницы и линии сигнала для определения точек входа и выхода. Эта стратегия интегрирует использование индикаторов MACD для фильтрации торговых сигналов полос Боллинджера и генерирования более эффективных сигналов покупки, когда линия разницы пересекает линию сигнала.
В целом, стратегия сочетает в себе отслеживание тенденций полос Боллинджера и перемещающиеся средние преимущества MACD, направленные на отслеживание больших колебаний рынка при сильных тенденциях.
Объединение диапазонов Боллинджера и индикаторов MACD делает торговые сигналы более надежными.
Отслеживание тренда полос Боллинджера и перекрестки скользящих средних MACD могут привести к более сильным сигналам входа на трендовые рынки.
Ложные сигналы могут быть эффективно отфильтрованы с помощью двойного показателя, что снижает риск торговли.
Существует большое пространство для оптимизации параметров стратегии, которая может быть скорректирована в соответствии с различными продуктами и циклами.
На рынках с ограниченным диапазоном торговые сигналы, генерируемые полосами Боллинджера и MACD, могут быть частыми, что приводит к риску переоценки.
Три последовательных золотых креста MACD на низких уровнях могут быть подвергнуты риску понижения.
Стратегия использует несколько индикаторов, что делает оптимизацию параметров и тестирование стратегии довольно сложными.
Для решения этих рисков, методы, такие как корректировка периодов хранения, установка остановки потерь, оптимизация параметров могут быть использованы для их контроля.
Проверьте параметры Болинджерских полос более длительного периода, чтобы уменьшить частоту торговли.
Оптимизировать параметры быстрой и медленной линии MACD для повышения чувствительности индикатора.
Добавить другие индикаторы для фильтрации, такие как KDJ, RSI и т. д., чтобы улучшить качество сигнала.
Установите динамические остановки для автоматического выхода из торгов и контроля рисков единой торговли.
Теоретически, путем интеграции торговли прорывом полос Боллинджера и фильтрации индикатора MACD, эта стратегия может производить высококачественные торговые сигналы. Благодаря оптимизации параметров и мерам контроля рисков могут быть достигнуты хорошие результаты бэкстеста. Однако ни одна стратегия не может полностью избежать потерь. Фактическая производительность торговли требует осторожной оценки.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Nabz-BBMACD-2022-V1.1", shorttitle="BBM-Nabz", overlay=true) // My 1st Pine Scrpt Indicator // Work on best on 1Hr Chart // Open for Help/Donations. var float lastentry=1 int result = 0 float x = 0 drawshape = false /////////////EMA shortest = ta.ema(close, 20) short = ta.ema(close, 50) longer = ta.ema(close, 100) longest = ta.ema(close, 200) plot(shortest, color = color.red) plot(short, color = color.orange) plot(longer, color = color.aqua) plot(longest, color = color.blue) ///////////// RSI RSIlength = input(6,title="RSI Period Length") RSIoverSold = 50 RSIoverBought = 50 price = close vrsi = ta.rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input.int(200, minval=1,title="Bollinger Period Length") BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation") BBbasis = ta.sma(price, BBlength) BBdev = BBmult * ta.stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close buyEntry = ta.crossover(source, BBlower) sellEntry = ta.crossunder(source, BBupper) ////////////// MACD fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD ///////////// Colors switch1=input(true, title="Enable Bar Color?") switch2=input(true, title="Enable Background Color?") TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na ///////////Strategy bool tcu = not (ta.crossunder(price[0],shortest[0])) if (((price[1]<BBlower[1]) and (ta.crossover(price,BBlower)))) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 1st IF") if (((ta.crossover(delta, 0.0) and (ta.crossover(price,BBlower))))) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 2nd IF") if (((ta.crossover(delta, 0.0)) and (low[0]>shortest[0])) and (price[1]<low)) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 3rd IF") //else if (((ta.crossover(delta, 0.01)) and (high[1]<BBupper)) and (tcu)) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 4th IF") if ((ta.crossunder(low[0],shortest[0]) and close<shortest)) strategy.close(id="RSI_BB_L", comment="Close by 1st IF") if (price<lastentry) drawshape := true if (price<strategy.opentrades.entry_price(0)/1.01175734321249) strategy.close(id="RSI_BB_L", comment="Close by 2nd IF") plot(strategy.opentrades.entry_price(0), color=color.yellow)