Стратегия прорыва динамического диапазона


Дата создания: 2023-11-21 15:03:19 Последнее изменение: 2023-12-01 15:00:31
Копировать: 0 Количество просмотров: 691
1
Подписаться
1617
Подписчики

Стратегия прорыва динамического диапазона

Обзор

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

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

Расчет показателя

Во-первых, основной и нижний рельсы Брин-Бенда, рассчитанные на основе низких точек:

src = low 
basis = sma(src, length)
dev = mult * stdev(src, length) 
lower = basis - dev

где src - низкая точка, length - расчетный цикл, basis - средняя линия, dev - стандартное отклонение, lower - нижняя линия.

Обычно mult устанавливается на 2, что означает, что нижняя полоса имеет стандартное отклонение.

Условия фильтрации

Политики добавляют два фильтра:

Фильтрация сущностей K-линии Используя величину объекта nbody и его среднее значение abody, только тогда, когда nbody больше половины abody, образуется торговый сигнал.

Цветовые фильтры Не делайте много повторений, когда K-линия заканчивается ((close > open). Это позволяет избежать ложного прорыва в голове hbox.

Торговые сигналы

Многосигналный сигнал возникает при выполнении следующих условий:

low < lower  // 价格突破下轨
close < open or usecol == false // 色彩过滤
nbody > abody / 2 or usebod == false // 实体过滤

Прямая позиция возникает, когда размер объекта снова превышает половину среднего значения:

close > open and nbody > abody / 2

Управление позицией

Стратегия автоматического подсчета количества сделок для достижения индекса роста:

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]  

Контроль риска

Условия присоединения по годам, месяцам и дням, ограничивающие торговлю только в пределах указанных дат:

when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

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

Динамические торговые зоны

Брин с задней рельсой - это динамическая зона поддержки, которая может поймать рыночные шансы на отскок после тенденции.

Двойная фильтрация

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

Автоматическое управление позициями

Позиции растут по индексу до 100%, автоматически управляя рисками.

Укажите временной диапазон сделки

Настройка диапазона дат снижает риски, связанные с волатильностью рынка в определенное время.

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

Продолжительность пустоты

Когда рынок находится в состоянии длительного бычьего рынка, средняя и верхняя полоса Брин-пояса быстро поднимаются вверх, что может привести к длительному времени пустоты.

Решение проблемы

Если вы считаете, что средняя и длинная линии являются бычьими, приостановите стратегию, чтобы избежать длительного открытия позиции.

Прорыв провалился

После прорыва подземного пути возможны отклонения и повторные подземные попытки.

Решение проблемы

Присоедините стоп-линию, в которой есть определенный пропорциональный стоп ниже поддержки. Или присоедините логику решения о повторном провале, быстрый стоп.

Оптимизация стратегии

Добавление логики стоп-лоста

В зависимости от отслеживаемых данных, устанавливается разумная стоп-позиция ниже поддержки.

Оптимальные параметры условий фильтрации

Настройка цикла abody для фильтрации объектов, использование фильтрации COLOR и т. Д.; Найти оптимальную комбинацию параметров;

Вместе с оценкой тенденций

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

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

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

Исходный код стратегии
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Wizard Strategy v1.0", shorttitle = "Wizard str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(25, defval = 25, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
showar = input(false, defval = false, title = "Show Arrows")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Bollinger
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false

//Signals
up1 = low < lower and (close < open or usecol == false) and body
exit = close > open and nbody > abody / 2

//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()