Стратегия силы волатильности, основанная на долгосрочном расчете объема-цены


Дата создания: 2023-10-30 17:03:02 Последнее изменение: 2023-10-30 17:03:02
Копировать: 0 Количество просмотров: 669
1
Подписаться
1617
Подписчики

Стратегия силы волатильности, основанная на долгосрочном расчете объема-цены

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

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

Показатель VB отражает динамику изменения объема сделок в ценах.

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

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

  3. Значение показателя колеблется вниз по 0-й оси, а измерение плюсовой силы основано на положительном отрицательном значении показателя.

Эта стратегия создает VB-индикатор и устанавливает сигнальную линию. При прохождении сигнальной линии над VB-индикатором образуется сигнал покупки; при прохождении сигнальной линии под VB-индикатором образуется сигнал продажи.

Основные шаги кода:

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

  2. Установите пересекающий диапазон колебательных сил coef, а колебательные силы, превышающие этот диапазон, относятся к coef。

  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)