
Стратегия, рассчитывающая изменение курса изменения объема сделок, чтобы судить о переходе в многоциклические периоды, относится к категории стратегий отклонения от стоимости. Она объединяет динамический индикатор объема сделок и бриндо цены, чтобы судить о ведущем эффекте изменения объема сделок на цены, чтобы захватить поворотные точки тенденции.
Вычислить изменение коэффициента изменения объема сдачи (изменение коэффициента изменения показателя разрыва объема сдачи), получив показатель nresult, основанный на динамике объема сдачи.
Для nresult рассчитывается полоса Бурина, получается bbr, которая представляет собой разницу между стандартом движения заданной массы.
Для ценообразования на закрытие рассчитывается буринская полоса, получающая bbr1, которая представляет собой разницу в ценовом стандарте.
Рассчитайте разницу между ними hist, то есть разница между стандартом объема поставок и стандартом цены, как конечный показатель.
При ношении 0 вверху hist является пустой точкой входа, а при ношении 0 внизу - многоголовой точкой входа.
Эта стратегия увеличивает ведущий эффект изменения объема сделок на цену, рассчитывая изменяющуюся скорость изменения объема сделок. Когда объем сделок переворачивается, а цена еще не переворачивается, hist будет пробиваться вверх или вниз, создавая торговый сигнал. Он может заранее определить поворотную точку ценовой тенденции.
Эта стратегия основана на количественном отклонении от стратегии, основанной на изменении объема сделок, что позволяет заранее отразить тенденцию цены.
Расчет изменения в объеме сделок увеличивает влияние изменения объема сделок на цены, что повышает эффективность сделки.
Брин-полоса, объединяющая динамический индикатор трафика и ценовой индикатор, делает торговые сигналы более надежными.
Трехкратная индексная обработка данных Hist, чтобы сделать сигнал более точным и гладким.
Установка линий сверхпокупок и сверхпродаж, в сочетании с лимитом на остановку и убыток, позволяет эффективно контролировать риск.
Для оптимизации стратегии можно использовать множество настраиваемых параметров, таких как длина ленты Брин, кратность стандартного отклонения, параметры сглаживания данных Hist.
Данные об объемах сделок не всегда отражают реальную ситуацию на рынке, и они могут быть манипулированы.
Отклонение от величины цены не обязательно будет длительным, но может произойти прорыв и необратимость.
Неправильная настройка параметров может привести к частоте или недопустимости сигналов.
Необходимо следить за ложными сигналами, чтобы предотвратить аномалию.
Необходимо быть бдительным, когда сильный тренд вызывает ошибочную торговлю.
Можно оптимизировать параметры, в сочетании с другими показателями фильтровать, установить стоп-стоп, чтобы риск был контролируемым.
Оптимизация параметров пояса Бурин, чтобы сделать сигнал более стабильным.
В сочетании с трендовыми индикаторами фильтруйте сигналы, чтобы избежать обратной торговли.
Добавление подтверждения других показателей, таких как MACD, для предотвращения ложных сигналов.
Использование технологий искусственного интеллекта для адаптивной оптимизации параметров.
Добавление модуля динамической коррекции Stop Loss Stop Stop и оптимизация управления капиталом.
В сочетании с машинным обучением рассуждение о количестве отклонений от успешности, повышение качества сигнала.
Эта стратегия позволяет заранее определить обратный тренд ценового тренда, рассчитывая изменяющийся уровень изменения объема сделок, увеличивая ведущий эффект изменения объема сделок на цену. Она имеет более высокую надежность и точность по сравнению с одним показателем объема сделок. Но также необходимо обратить внимание на то, чтобы предотвратить риск манипулирования объемом сделок и отклонения от цены от прорыва, контролировать риск в будущем с помощью оптимизации параметров, фильтрации показателей и т. Д.
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
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/
// © tathal and special thanks to oakwhiz for his porting of my custom volume indicator
//@version=5
strategy('Volume Difference Delta Cycle Oscillator', 'VDDC Osc', default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=5000)
startDate = input.int(title='Start Date', defval=1, minval=1, maxval=31)
startMonth = input.int(title='Start Month', defval=1, minval=1, maxval=12)
startYear = input.int(title='Start Year', defval=2010, minval=1800, maxval=2100)
endDate = input.int(title='End Date', defval=31, minval=1, maxval=31)
endMonth = input.int(title='End Month', defval=12, minval=1, maxval=12)
endYear = input.int(title='End Year', defval=2021, minval=1800, maxval=2100)
// Normalize Function
normalize(_src, _min, _max) =>
// Normalizes series with unknown min/max using historical min/max.
// _src : series to rescale.
// _min, _min: min/max values of rescaled series.
var _historicMin = 10e10
var _historicMax = -10e10
_historicMin := math.min(nz(_src, _historicMin), _historicMin)
_historicMax := math.max(nz(_src, _historicMax), _historicMax)
_min + (_max - _min) * (_src - _historicMin) / math.max(_historicMax - _historicMin, 10e-10)
// STEP 2:
// Look if the close time of the current bar
// falls inside the date range
inDateRange = true
// Stop loss & Take Profit Section
l_sl_inp = input(2.0, title='Long Stop Loss %') / 100
l_tp_inp = input(4.0, title='Long Take Profit %') / 100
l_stop_level = strategy.position_avg_price * (1 - l_sl_inp)
l_take_level = strategy.position_avg_price * (1 + l_tp_inp)
s_sl_inp = input(2.0, title='Short Stop Loss %') / 100
s_tp_inp = input(4.0, title='Short Take Profit %') / 100
s_stop_level = strategy.position_avg_price * (1 + s_sl_inp)
s_take_level = strategy.position_avg_price * (1 - s_tp_inp)
src = close
// Volume Differnce Indicator Delta
float change_src = ta.change(src)
float i_obv = ta.cum(change_src > 0 ? volume : change_src < 0 ? -volume : 0 * volume)
float i_pvt = ta.pvt
float result = ta.change(i_obv - i_pvt)
float nresult = ta.ema(normalize(result, -1, 1), 20)
// Volume Differnce Indicator Delta %B
length = input.int(20, minval=1, title='Volume Bands Length')
mult = input.float(2.0, minval=0.001, maxval=50, title='Volume Bands StdDev')
basis = ta.ema(nresult, length)
dev = mult * ta.stdev(nresult, length)
upper = basis + dev
lower = basis - dev
bbr = (nresult - lower) / (upper - lower)
// Normal %B, Based on close
l1 = input.int(20, minval=1, title='Bollinger Bands Length')
src2 = close
mult1 = input.float(2.0, minval=0.001, maxval=50, title='Bollinger Bands StdDev')
basis1 = ta.sma(src2, l1)
dev1 = mult1 * ta.stdev(src2, l1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
bbr1 = (src - lower1) / (upper1 - lower1)
/// Final Output Line
hist = ta.ema(ta.ema(ta.ema(bbr1 - bbr, input(2, title='Hist Smoothing Factor #1')), input(2, title='Hist Smoothing Factor #2')), input(2, title='Hist Smoothing Factor #3'))
/// Overbought / Oversold Line Creation
oversold = input(-.1)
overbought = input(.4)
hline(oversold, linewidth=2, color=color.new(#81c784, 62))
hline(overbought, linewidth=2, color=color.new(#c2185b, 38))
/// Long & Short Conditions
short = hist > overbought
long = hist < oversold
/// Colors & Plotting
histColor = hist >= 0 ? hist[1] < hist ? #26A69A : #B2DFDB : hist[1] < hist ? #FFCDD2 : #EF5350
plot(hist, title='Histogram', style=plot.style_columns, color=color.new(histColor, 0))
CrossBgColor = long ? color.new(#81c784, 62) : short ? color.new(#c2185b, 38) : na
bgcolor(color.new(CrossBgColor, 90))
/// Strategy Methodology
if inDateRange
strategy.entry('long', strategy.long, when=long, stop=l_stop_level, limit=l_take_level)
if inDateRange and strategy.position_size > 0
strategy.close_all(when=short)
if inDateRange
strategy.entry('short', strategy.short, when=short, stop=s_stop_level, limit=s_take_level)
if inDateRange and strategy.position_size < 0
strategy.close_all(when=long)