Продвинутая стратегия отслеживания тренда сетки движущихся средних полос Боллинджера

Автор:Чао Чжан, Дата: 2023-11-24 14:48:28
Тэги:

img

Обзор

Стратегия называется Advanced Bollinger Band Moving Average Grid Trend Tracking Strategy. Это стратегия, которая использует полосы Боллинджера и скользящие средние для определения тренда и устанавливает позиции сетки для отслеживания направления тренда.

Принцип

Основная идея этой стратегии заключается в следующем:

  1. Используйте полосы Боллинджера, чтобы судить о текущем диапазоне волатильности рынка.

  2. Четыре линии за пределами полос Боллинджера являются ненормальными кратниками средних истинных линий амплитуды волатильности.

  3. Быстрые и медленные скользящие средние показатели EMA определяют направление тренда большого цикла.

  4. Отслеживать и строить позиции в направлении тренда, закрывать позиции для получения прибыли, когда видишь штифты.

В частности, основными частями этой стратегии являются:

  1. Определить параметры полос Боллинджера. Средняя рельса полос Боллинджера - это движущаяся средняя SMA на n дней, а ширина полос Боллинджера - это n-day ATR. Длина Боллинджера n в стратегии равна 20.

  2. Установите четыре расширенные линии за пределами полос Боллинджера. Расстояние между линиями и средней рельсой равняется 1,236 раз, 2,382 раз, 3,618 раз и 4,236 раз средней истинной амплитуды волатильности.

  3. Установите быстрое и медленное скользящее среднее EMA, чтобы определить тенденцию большого цикла.

  4. Устанавливайте длинные позиции постепенно, когда вы пробиваете четыре линии ниже в большом цикле восходящего тренда.

  5. Когда появляется пин-бар или цена снова пересекает большую циклическую скользящую среднюю, это рассматривается как сигнал окончания пин-бара для закрытия позиций с целью получения прибыли.

Вышеперечисленный основной технический принцип этой стратегии. Судя по текущему диапазону волатильности через полосы Боллинджера и устанавливая позиции в соответствии с трендом большого цикла, можно достичь конечного эффекта позиций с высокой вероятностью.

Анализ преимуществ

Основными преимуществами этой стратегии являются:

  1. В полной мере использовать характеристики тренда, определить направление тренда в больших циклах, построить позиции в направлении тренда, чтобы уменьшить ненужные обратные операции.

  2. Использование нескольких линий Боллинджера позволяет более четко оценить текущий диапазон волатильности, что способствует обнаружению большинства тенденций.

  3. Метод сетевой позиции позволяет равномерно распределить риски на каждую единицу средств для получения стабильной доходности.

  4. Использование высокоэффективных сигналов для закрытия позиций может быстро закрепить прибыль.

  5. Общая стратегия включает определение тренда, позиции сетки и закрытие конкретной позиции сигнала.

Анализ рисков

В этой стратегии также есть некоторые риски:

  1. Существует некоторая вероятность ошибки в быстрых и медленных скользящих средних, что может привести к ненужным обратным операциям.

  2. Вероятность неудачного прорыва линии Боллинджера.

  3. Сигналы из штифтовой панели могут появиться поздно и не обеспечить прибыль вовремя.

  4. Во время больших циклов скорректировки ударов легко сформировать слишком много перекрывающихся позиций.

Соответствующие решения:

  1. Регулировать параметры быстрого и медленного скользящего среднего, чтобы уменьшить вероятность ошибок.

  2. Настроить параметры линии Боллинджера, чтобы сделать линии Боллинджера придерживаться большинства колебаний как можно больше.

  3. Проверить более чувствительные специфические модели для получения прибыли сигналов.

  4. Увеличьте расстояние интервала до размера позиции управления.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих направлениях:

  1. Испытывайте различные параметры скользящих средних для оптимизации определения тренда больших циклов. Например, тестируйте другие индикаторы, такие как EMA, RSI и т. Д.

  2. Проверьте различные множественные параметры ATR для оптимизации настройки ширины канала Боллинджера.

  3. Проверьте другие эффективные сигналы получения прибыли, например, SAR, линии Калмана и т.д.

  4. Оптимизировать интервал сетки, чтобы сделать интервалы волатильности более равномерными, чтобы уменьшить перекрытие позиций.

  5. Увеличьте механизмы стоп-лосса, избегайте больших потерь в экстремальных рыночных условиях.

Резюме

Стратегия интегрирует использование канала Боллинджера, показателей скользящей средней, конкретных моделей K-линии и других технических средств. Под предпосылкой определения тенденции большого цикла, она строит стратегию отслеживания тренда на основе скользящих средних и полос Боллинджера. По сравнению с традиционными прорывами полос Боллинджера, эта стратегия добавляет тенденционные характеристики суждения, которые могут уменьшить ненужные обратные позиции. В то же время, метод позиции сетки диверсифицирует риски для каждой единицы средств для получения стабильной доходности. Стратегия может быть оптимизирована с нескольких углов, таких как определение тренда, ширина Боллинджера, сигналы получения прибыли, методы остановки потери и т. д., чтобы получить более стабильные стратегические эффекты.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 plot

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy1)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend 
buy3=ta.crossunder(close,bott3) and longTrend 
buy4=ta.crossunder(close,bott4) and longTrend 
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")
     

Больше