Адаптивные прорывы волатильности для трендов и разворотов


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

Адаптивные прорывы волатильности для трендов и разворотов

Обзор

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

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

Стратегия состоит из следующих частей:

  1. Показатель VFI определяет тенденцию. В сочетании с параметрической изменчивостью типичной цены и изменением объема сделки определяет тенденцию цены, обеспечивая рациональное сопоставление цены.

  2. Показатель разрыва EMA определяет тенденцию. Расчет разрыва между 20-й и 50-й линией, чтобы определить направление тренда средней длинной линии.

  3. Полоса буринского индикатора определяется обратным образом. Средний путь буринского пояса - 20-дневная простая скользящая средняя, а полоса пропускания - средний путь в 1,5 раза от стандартного разрыва.

  4. VFI-индикатор оценивает разницу в обратном направлении. Приближаясь к верхнему и нижнему пределам VFI-индикатора (от 0 до 20), считается, что вероятность обратной тенденции выше.

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

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

  1. Введение показателя VFI позволило более рационально сопоставить количественные и ценовые отношения и избежать слепого следования за ценами.

  2. Суждение о разнице в EMA в сочетании с VFI делает суждение о тренде более стабильным и надежным.

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

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

  1. Показатели цены не могут полностью избежать риска ложного прорыва.

  2. Промежуточные значения EMA задерживаются и не могут своевременно реагировать на краткосрочные изменения.

  3. Неправильная настройка параметров по Брин-полосе может привести к риску частых сделок или захвата рынка.

Решение риска:

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

  2. Параметры EMA не должны быть слишком большими или слишком маленькими, а параметры следует корректировать.

  3. Испытание влияния изменения параметров буринской полосы на стратегию в различных рыночных условиях.

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

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

  2. Добавить прорывные оценки, основанные на ценовых каналах или показателях Envelopes.

  3. Проверьте внедрение дополнительных стоимостных показателей, таких как OBV, PVT и т. д.

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

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

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

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

//@version=4

strategy(title="Super Bollinger Band Breakout", shorttitle = "Super BB-BO", overlay=true)
source = close

length = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(5)


// session 


pre = input( type=input.session, defval="0400-0935")
trade_session = input( type=input.session, defval="0945-1700")
use_trade_session = true
isinsession = use_trade_session ? not na(time('1', trade_session)) : true


is_newbar(sess) =>
    t = time("D", sess)
    not na(t) and (na(t[1]) or t > t[1])


is_session(sess) =>
    not na(time(timeframe.period, sess))

preNew = is_newbar(pre)
preSession = is_session(pre)

float preLow = na
preLow := preSession ? preNew ? low : min(preLow[1], low) : preLow[1]

float preHigh = na
preHigh := preSession ? preNew ? high : max(preHigh[1], high) : preHigh[1]



//   vfi 9lazybear 
ma(x,y) => 0 ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )


//ema diff


ema20 = ema(close,20)
ema50 = ema(close,50)


diff = (ema20-ema50)*100/ema20
ediff = ema(diff,20)

//
basis = sma(source, 20)
dev = 1.5 * stdev(source, 20)

upper = basis + dev
lower = basis - dev


ema9 = ema(source, 9)

if ( ((crossover(source, upper) and diff>ediff and diff>0) or (close>upper and (vfi >0 or vfima>0 or ediff>0.05) and (vfi<14 or vfima<14)) ))
    strategy.entry("Long", strategy.long)


if (crossunder(source, lower) or vfi>19 or vfima>19 or diff<(ediff+0.01) )
    strategy.close("Long")