Стратегии поиска импульса


Дата создания: 2024-01-25 12:34:59 Последнее изменение: 2024-01-25 12:34:59
Копировать: 1 Количество просмотров: 559
1
Подписаться
1617
Подписчики

Стратегии поиска импульса

Обзор

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

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

  1. Вычислите простое скользящее среднее для N-дневных цен на закрытие в зоне буринского пояса, M-кратное для N-дневных реальных колебаний на верхней полосе по каналу средней полосы + KC и M-кратное для N-дневных реальных колебаний на нижней полосе по каналу средней полосы - KC.

  2. Вычислить канал KC. Средний орбитальный путь в канале KC представляет собой простую подвижную среднюю цену закрытия на N дней, верхний орбитальный путь представляет собой M-кратный реальный диапазон волн на средний орбитальный путь + N дней, а нижний орбитальный путь представляет собой M-кратный реальный диапазон волн на средний орбитальный путь - N дней.

  3. Определение сжатия и высвобождения. Сжатие происходит, когда верхняя полоса буринского пояса находится ниже верхней полосы KC, а нижняя полоса буринского пояса находится выше нижней полосы KC. Освобождение происходит, когда верхняя полоса буринского пояса находится выше верхней полосы KC, а нижняя полоса буринского пояса находится ниже нижней полосы KC.

  4. Вычислить установление тренда. Принимая в качестве ввода средние цены на N-дневный конечный конец - N-дневные максимумы и минимумы, вычислить линейную регрессию на N-днев, значение которой больше 0 означает установление тренда вверх, меньше 0 означает установление тренда вниз.

  5. Торговые сигналы: при повышении установки, короткий солнечный и освободительный сигналы делают много; при падении установки, короткий солнечный и сжатый сигналы делают пустоту.

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

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

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

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

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

  1. Неправильная настройка параметров ленты Brin и каналов KC может привести к ошибкам сжатия и высвобождения.

  2. По мнению некоторых экспертов, это может быть связано с тем, что “establishment” отстает в оценке трендов и может пропустить поворотный момент”.

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

Методы оптимизации: корректировка параметров бурин-полосы и KC-путей с помощью таких показателей, как ADX; своевременное обновление цикла средней линии установки, снижение задержки; добавление буферной зоны при установке стоп-линии.

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

  1. В сочетании с другими техническими показателями, повышается точность сигналов для строительства складов. Например, KDJ, MACD и т. Д.

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

  3. Присоединяйте к ним показатели объема сделки, чтобы избежать ложных прорывов. Например, показатели энергетического потока, накопление/распределение и т. д.

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

  5. AI оптимизирует параметры, searched ввод и searched оптимальное сочетание параметров.

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

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

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

//Noro
//2017

//@version=2
strategy(shorttitle = "Squeeze str 1.1", title="Noro's Squeeze Momentum Strategy v1.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
mode2 = input(true, defval = true, title = "Mode 2")
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
fromyear = input(2018, defval = 2018, 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")

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)

bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray 

trend = val > 0 ? 1 : val < 0 ? -1 : 0

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
abody = sma(body, 10) / 3

//Indicator
bcol = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scol = noSqz ? blue : sqzOn ? black : gray 
plot(val, color=bcol, style=histogram, linewidth=4)
plot(0, color=scol, style=cross, linewidth=2)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = trend == 1 and (bar == -1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
dn1 = trend == -1 and (bar == 1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false

up2 = trend == 1 and val < val[1] and mode2 
dn2 = trend == -1 and val > val[1] and mode2

exit = (strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price) and mode2

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

if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if exit
    strategy.close_all()