Индикаторная стратегия PB «Пересечение полос Боллинджера»


Дата создания: 2024-01-17 17:10:53 Последнее изменение: 2024-01-17 17:10:53
Копировать: 0 Количество просмотров: 661
1
Подписаться
1617
Подписчики

Индикаторная стратегия PB «Пересечение полос Боллинджера»

Обзор

Эта стратегия производит сигнал покупки и продажи, рассчитывая соотношение между средним значением PB и низким значением Брин-Бенда. Когда PB пробивается вверх, он производит сигнал покупки; когда PB падает вниз, он производит сигнал продажи.

Стратегический принцип

Основным показателем стратегии является средний показатель ПБ. Средний показатель ПБ объединяет стабильность системы средних линий и чувствительность показателя ПБ, который использует разницу между двумя различными периодическими средними линиями для выражения тенденций изменения цены, чтобы определить, можно ли смотреть на пустоту.

Эта стратегия также использует индикатор пояса Бурин, чтобы определить перекуп и перепродажу цен на акции. Индикатор пояса Бурин состоит из трёх кривых: средней, верхней и нижней полос. Средняя полоса представляет собой движущуюся среднюю за n дней; верхняя и нижняя полосы рассчитываются с помощью средней полосы и исторических колебаний.

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

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

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

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

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

Основные риски этой стратегии:

  1. Индекс средней стоимости PB и индикатор Брин-Бенд опираются на исторические данные, что может привести к ошибочным сигналам при значительных колебаниях цен на акции.
  2. Указатели PB и ленты Бринга чувствительны к параметрам, неправильная настройка может привести к слишком большому количеству ошибочных сделок
  3. В период реализации стратегии изменения в макроэкономической среде могут оказать значительное влияние на цены акций, например, экономический кризис, изменения в политике и т. д., что может привести к неэффективности стратегии

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

Направление оптимизации

Оптимизируемые направления стратегии включают:

  1. Оптимизация параметров средней величины ПБ и Бринской полосы, чтобы найти оптимальную комбинацию параметров
  2. Добавление фильтров на другие показатели, такие как MACD, KDJ и т. Д., для улучшения эффективности стратегии
  3. Увеличение механизмов сдерживания убытков и эффективный контроль одиночных убытков
  4. В сочетании с более крупными показателями временного цикла, чтобы определить направление и избежать обратной торговли

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BandPass EOS", overlay=false, initial_capital = 1000)

src = input(close, "Source", input.source)
Period1 = input(41, "Fast Period", input.integer)
Period2 = input(54, "Slow Period", input.integer)
showBG = input(false, "Show crosses on background?", input.bool)
UseReversalStop = input(true, "Use additional triggers?", input.bool)

//Super Passband Filter
a1 = 0.0
a2 = 0.0
PB = 0.0
RMS = 0.0
if bar_index > Period1
    a1 := 5 / Period1
    a2 := 5 / Period2
    PB := (a1 - a2) * src + (a2 * (1 - a1) - a1 * (1 - a2)) * src[1] + 
       (1 - a1 + 1 - a2) * nz(PB[1]) - (1 - a1) * (1 - a2) * nz(PB[2])
    for i = 0 to 49 by 1
        RMS := RMS + PB[i] * PB[i]
        RMS
    RMS := sqrt(RMS / 40)
    RMS
z = 0

buy = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
sell = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
signal = buy ? 1 : sell ? -1 : 0
bg = buy ? color.green : sell ? color.red : color.white
bg := showBG ? bg : na
upperFill = PB>RMS ? color.lime : na
lowerFill = PB<-RMS ? color.red : na

p1 = plot(PB,"PB",color.red)
p2 = plot(RMS,"+RMS",color.blue)
p3 = plot(-RMS,"-RMS",color.blue)
bgcolor(bg)
fill(p1,p2,upperFill)
fill(p1,p3,lowerFill)
hline(0)



//PERIOD
testStartYear = input(2018, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true
    
lcolor = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
scolor = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)

c1 = (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
c2 = (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))

plot (c1 ? PB : na, style = plot.style_circles, color = color.red, linewidth = 3)
plot (c2 ? PB : na, style = plot.style_circles, color = color.green, linewidth = 3)

if (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
    strategy.entry("long", strategy.long, when = testPeriod())


if (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
    strategy.entry("short", strategy.short, when = testPeriod())