Стратегия VB, основанная на объемных балансах

Автор:Чао Чжан, Дата: 2023-10-30 17:03:02
Тэги:

img

Эта стратегия разработана на основе показателя объемного сальдо для определения покупательной и продажной способности на рынке.

Логика стратегии

Индикатор объемных остатков (VB) отражает движущую силу изменений объема цен.

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

  2. Судите о покупательной и продажной силе по произведению объема и динамики цен.

  3. Критерием измерения покупательной и продажной способности является положительное и отрицательное значение показателя.

Эта стратегия строит индикатор VB и устанавливает линию сигнала. Сигнал покупки генерируется, когда индикатор VB пересекает линию сигнала. Сигнал продажи генерируется, когда индикатор VB пересекает линию сигнала.

Основными этапами кодекса являются:

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

  2. Установите коэффициент отсечения диапазона для импульса. Избыток импульса выше диапазона принимается в качестве коэффициента.

  3. Вычислить количественный импульс vcp после прерывания.

  4. Сумма vcp для получения количественного показателя vfi.

  5. Установите длину линии сигнала SignalLength и получите ее vfima.

  6. Сравните индикатор VB vfi с сигнальной линией vfima для получения торговых сигналов.

Преимущества

Преимущества этой стратегии:

  1. Используйте соотношение объем-цена, чтобы судить о покупательной способности, не влияющей на саму цену.

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

  3. Сочетание сравнения между самим индикатором VB и линией сигнала может установить разумное время входа.

  4. Метод расчета показателя прост и понятен, его легко использовать в режиме реального времени.

  5. Настраиваемые параметры индикаторов и параметры сигнальных линий для оптимизации эффективности стратегии.

Риски

В этой стратегии также есть некоторые риски:

  1. Индикатор VB чувствителен к аномальным колебаниям цен.

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

  3. Параметры индикатора и параметры сигнальной линии нуждаются в надлежащей оптимизации для предотвращения ложных сигналов.

  4. Более подходит для продуктов с очевидными характеристиками объема и цены. Не подходит для продуктов с низкой ликвидностью.

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

Риски могут контролироваться путем регулирования диапазона параметров, использования других фильтров, обеспечения надлежащей свободной стоп-потери и т.д.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

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

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

  3. Добавить другие показатели, такие как анализ объема распространения для проверки.

  4. Добавить индикаторы тренда и поддержки/сопротивления, чтобы избежать неблагоприятных сделок.

  5. Установка динамического стоп-лосса на основе волатильности рынка.

  6. Используйте машинное обучение, чтобы найти оптимальную комбинацию параметров.

  7. Проверка на различных продуктах и сроках для оценки надежности.

  8. Сравните параметры показателя с влиянием на кривую прибыли, чтобы найти оптимальный показатель.

Резюме

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


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("VB Strategy", overlay=true)

length = input(130, title="거래량 길이")
coef = input(0.2, title="계수")
vcoef = input(2.5, title="최대 계수")
signalLength=input(5)
smoothVFI=input(false, type=bool, title="부드럽게")
//볼밴
length2 = input(20, minval=1, title="볼밴 길이")

ma(x,y) => smoothVFI ? 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)
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 )
d=vfi-vfima

upper = vfima + stdev(vfi, length2)
lower = vfima - stdev(vfi, length2)

buysignal = cross(vfi, lower) and crossunder(vfi, lower) == 1 ? vfima : na

sellsignal = cross(vfi, upper) and crossover(vfi, upper) == 1 ? vfima : na

//times = timestamp("GMT+6", 2017, 12, 6, 00, 00)

//if (buysignal and times <= time)
if (buysignal)
    if(strategy.position_size < 0)
        strategy.close("SHORT")
        
    if(strategy.position_size > 0)
        strategy.order("LONG", true, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("LONG", strategy.long, when = (low+high)/2)

//if (sellsignal and times <= time)
if (sellsignal)
    if(strategy.position_size > 0)
        strategy.close("LONG")
        
    if(strategy.position_size < 0)
        strategy.order("SHORT", false, 1, when = (low+high)/2)
        
    if(strategy.position_size == 0)
        strategy.entry("SHORT", strategy.short, when = (low+high)/2)


Больше