Стратегия торговли на основе прорыва импульса полосы Боллинджера


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

Стратегия торговли на основе прорыва импульса полосы Боллинджера

Обзор

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

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

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

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

Стратегические преимущества

  1. Торговые сигналы являются точными, чтобы избежать ложных прорывов. В сочетании с показателями объема торгов, покупайте только в реальных сильных ситуациях, чтобы снизить риск позиции.

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

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

  4. Ясная структура кода, повышение читабельности стратегии. Подразделенные модули организуют вычисление показателей, торговые сигналы, логику открытия позиций и т. Д., Что облегчает последующее обслуживание.

Стратегический риск

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

  2. Когда объемы торгов недостаточны, стратегия не может быть прибыльной. Если объемы торгов в целом недостаточны, даже если генерируется сигнал о покупке, стратегия не может быть прибыльной.

  3. В качестве индикатора трендов, скользящие средние могут быть неэффективными и не могут гарантировать полную остановку потерь.

  4. Неправильная настройка параметров также может повлиять на стратегическую прибыль. Например, слишком короткое время в окне торговли может привести к пропуску обратного хода.

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

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

  2. Повышение вероятности истинного прорыва в моделях машинного обучения и снижение частоты ложных сигналов.

  3. Оптимизация стратегий управления капиталом, таких как динамическая корректировка позиций, отслеживание стоп-линий и т. д. │ уменьшение влияния одиночных потерь │

  4. Тестирование большего количества сортов и временных циклов. Настройка параметров Брин-полосы, параметров объема сделок и т. Д., оптимизация стратегии адаптации к рынку.

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

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

Исходный код стратегии
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 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/
// © KAIST291

//@version=4
initial_capital=1000
strategy("prototype", overlay=true)
length1=input(1)
length3=input(3)
length7=input(7)
length9=input(9)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma9= sma(close,length9)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
mult4= input(2.5, minval=0.001, maxval=50, title="exp2")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
dev4= mult4 * stdev(src, length)
upper2=basis + dev4
lower2=basis - dev4
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=( BV>SV and BV>Davgvol)
bull2=(BV>SV and BV>Davgvol)
bux =(close>Supper and close>Slower and volume<Davgvol)
bear=(SV>BV and SV>Davgvol)
con=(BV>Wavgvol and rsi>80)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>upper1 and close>Supper and high>upper and rsi<80)
    strategy.entry("Long",strategy.long)

if (strategy.position_avg_price*1.02<close)
    strategy.close("Long")
else if (low<ma9 and strategy.position_avg_price<close)
    strategy.close("Long")
else if (ma20>close and strategy.position_avg_price<close )
    strategy.close("Long")
else if (rsi>80 and strategy.position_avg_price<close)
    strategy.close("Long")
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
    strategy.close("Long")
else if (high<upper and strategy.position_avg_price<close)
    strategy.close("Long")
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////
strategy.entry("Short",strategy.short,when=low<ma20 and low<lower1 and close<Slower and crossunder(ma60,ma120))

if (close<strategy.position_avg_price*0.98)
    strategy.close("Short")

else if (rsi<20)
    strategy.close("Short")