Стратегия пересечения длинных и коротких позиций, основанная на осцилляторе объема


Дата создания: 2023-12-12 11:19:04 Последнее изменение: 2023-12-12 11:19:04
Копировать: 0 Количество просмотров: 855
1
Подписаться
1621
Подписчики

Стратегия пересечения длинных и коротких позиций, основанная на осцилляторе объема

Обзор

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

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

Центральным показателем стратегии является индикатор колебаний объема торгов (Volume Oscillator). Он отражает тенденцию изменения объема торгов через разницу в долгосрочных и краткосрочных скользящих средних показателях объема торгов. Конкретная формула расчета такова:

Volume Oscillator = (ShortEMA - LongEMA) / LongEMA * 100

Среди них ShortEMA и LongEMA представляют собой соответственно краткосрочные и долгосрочные скользящие средние индексов. Когда ShortEMA проходит через LongEMA, показатель является положительным, что означает, что объем торгов расширяется; когда ShortEMA проходит через LongEMA, показатель является отрицательным, что означает, что объем торгов сокращается.

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

Кроме того, стратегия также объединяет предыдущие высокие и низкие точки для определения конкретного направления операции. То есть, когда показатель проходит нулевую ось, если предыдущая высокая точка больше абсолютного значения предыдущей низкой точки, то смотрите больше; наоборот, смотрите ниже. Используя эту особенность, можно судить о силе расширения объема торгов.

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

Эта стратегия имеет следующие преимущества:

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

  2. В сочетании с долгосрочными и краткосрочными EMA можно одновременно отслеживать среднесрочные и долгосрочные тенденции и краткосрочные динамики.

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

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

  5. Ясность стратегии, гибкость в регулировании параметров, адаптивность.

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. Показатели объема торгов подвержены влиянию ложных рыночных прорывов, которые могут создавать ошибочные сигналы. Можно установить стоп-лосс, чтобы контролировать риск.

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

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

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

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

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

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

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

  2. Оптимизация циклических параметров долгосрочных и краткосрочных ЭМА, чтобы они соответствовали характеристикам разных сортов.

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

  4. Для предотвращения частых сделок настройка зоны конвертации показателя на интервалы.

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

  6. В сочетании с другими техническими показателями, такими как VRP.

  7. Автоматическая оптимизация параметров с использованием методов машинного обучения.

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

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

Исходный код стратегии
/*backtest
start: 2022-12-05 00:00:00
end: 2023-03-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("SB_Volume_oscillator_Prev_high_low", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

shortlen = input(5, minval=1)
longlen = input(10, minval=1)
short = ema(volume, shortlen)
long = ema(volume, longlen)
osc = 100 * (short - long) / long
//hline(0, title="Zero")
//plot(osc)
zero=input(0.0)

low_val=input(0.0)
high_val=input(0.0)
prev_high_val=input(0.0)
prev_low_val=input(0.0)
where=input(0)
where:=nz(where[1])
low_val:=nz(low_val[1])
high_val:=nz(high_val[1])
prev_high_val:=nz(prev_high_val[1])
prev_low_val:=nz(prev_low_val[1])
if(crossover(osc,zero))
    high_val:=osc
    where:=1
    prev_low_val:=low_val
    low_val:=osc

if(crossunder(osc,zero))
    low_val:=osc
    where:=-1
    prev_high_val:=high_val
    high_val:=osc

if(where==1)
    if(high_val<osc)
        high_val:=osc
        
if(where==-1)
    if(low_val>osc)
        low_val:=osc


if (crossover(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)

if (crossunder(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)