Эта стратегия сочетает в себе индикаторы VFI и скользящие средние показатели с индикатором реверсии Bollinger Bands для адаптивного отслеживания тенденций и реверсий на рынке.
Основными составляющими этой стратегии являются:
Индикатор VFI для определения тенденции. Он использует логарифмическую скорость изменения типичной цены и объема торговли для разумного сопоставления цены и объема.
Индикатор разницы EMA для определения тенденции. Он рассчитывает процентную разницу между 20-дневной EMA и 50-дневной EMA для оценки направления средне-долгосрочной тенденции.
Амплитуда VFI для обнаружения истощения. Когда VFI приближается к своим пределам (0, 20), вероятность обратного тренда считается более высокой.
Введение VFI делает соотношение цена-объем более разумным и избегает слепого следования ценам.
Сочетание разницы EMA и VFI делает определение тенденции более надежным.
Сочетание полос Боллинджера и VFI делает стратегию более адаптивной к двусторонним колебаниям на рынке.
Показатели объемных цен не могут полностью избежать риска ложных прорывов.
Дифференция EMA имеет некоторое отставание и не может своевременно реагировать на краткосрочные повороты.
Неправильные параметры полос Боллинджера могут привести к переоценке или захвату рынка.
Решения:
Для определения тенденции объедините несколько индикаторов, чтобы избежать зависимости от одного.
Настроить параметры EMA на нужные значения.
Проверить влияние параметров Боллинджера на стратегию в различных рыночных условиях.
Продолжайте оптимизировать параметры VFI, чтобы сделать его более чувствительным.
Добавьте расчетный вывод на основе ценовых каналов или индикатора конвертов.
Испытать внедрение большего количества показателей объемных цен, таких как OBV, PVT и т.д.
Внедрение машинного обучения и искусственного интеллекта для реализации динамической оптимизации параметров.
Эта стратегия всесторонне рассматривает наблюдение за тенденциями и обнаружение обратного движения с помощью 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")