Эта стратегия основана на перекрестке долгосрочных и краткосрочных скользящих средних объемов торговли. Она использует EMA различных периодов для расчета долгосрочных и краткосрочных тенденций объема торговли и строит осциллятор на основе их разницы. Она длинна, когда осциллятор пересекает нулевой уровень, и коротка, когда пересекает ниже. Она также включает в себя предыдущие высокие и низкие цены для определения конкретного направления.
Основным показателем этой стратегии является осциллятор объема. Он отражает тенденцию изменения объема торговли путем расчета разницы между долгосрочными и краткосрочными экспоненциальными скользящими средними. Конкретная формула:
Объемный осциллятор = (ShortEMA - LongEMA) / LongEMA * 100
Здесь ShortEMA и LongEMA относятся к краткосрочным и долгосрочным EMA соответственно. Когда ShortEMA пересекает LongEMA, индикатор становится положительным, что означает увеличение объема торговли. Когда ShortEMA пересекает LongEMA, индикатор становится отрицательным, что означает сокращение объема торговли.
После вычисления осциллятора эта стратегия использует свой перекресток с нулевым уровнем для генерации торговых сигналов. Он длинный, когда осциллятор переходит от отрицательного к положительному, то есть пересекает уровень выше нуля, и короткий, когда переходит от положительного к отрицательному, то есть пересекает ниже нулевого уровня. Это отражает преобразование импульса объема торговли.
Кроме того, стратегия также включает в себя предыдущие высокие и низкие цены для определения конкретных направлений. То есть, когда осциллятор пересекает уровень выше нуля, если предыдущая высокая цена больше абсолютного значения предыдущей низкой цены, это подразумевает длинный сигнал, в противном случае короткий сигнал. Эта особенность помогает судить о силе расширения объема.
Эта стратегия имеет следующие преимущества:
Использование объема торговли в качестве базового показателя может эффективно определить готовность участников рынка и является очень практичным.
Включение как долгосрочных, так и краткосрочных EMA позволяет одновременно отслеживать среднесрочные и долгосрочные тенденции и краткосрочную динамику.
Сигналы пересечения, сформированные индикатором и нулевым уровнем, просты и понятны для принятия решений.
Добавление предыдущих максимумов и минимумов для определения направлений может хорошо использовать размер импульса объемов торговли.
Логика стратегии проста, параметры гибки для корректировки и она имеет относительно высокую адаптивность.
Необходимо отметить некоторые риски этой стратегии:
Индикатор объема может быть под влиянием ложных рыночных прорывов, генерирующих неправильные сигналы.
На рынках с ограниченным диапазоном часто могут происходить перекрестки объемов.
Предыдущие максимумы и минимумы отражают только последнюю экспансию и не могут определить ее устойчивость.
Параметры требуют отдельной оптимизации для разных продуктов и временных периодов.
Индикатор объема медленно реагирует на высокочастотную алгоритмическую торговлю, возможно, пропуская лучшее время входа.
Стратегия может быть оптимизирована в следующих аспектах:
Добавление фильтров для предотвращения ложных сигналов, например, подтверждение с помощью ценовых показателей.
Оптимизация периодов долгосрочных и краткосрочных EMA для соответствия характеристикам различных продуктов.
Установка параметров периода для предыдущих максимумов и минимумов с использованием максимальных и минимальных цен периода.
Определение диапазона для области поворота индикаторов вместо одного уровня, чтобы избежать переоценки.
Добавление стратегий стоп-лосса для контроля одиночных потерь.
Включение других показателей, основанных на объеме, таких как VRP.
Использование методов машинного обучения для автоматической оптимизации параметров.
В целом, стратегия длинного короткосрочного скользящего среднего перекрестка объемного осциллятора хорошо использует функции обратного движения объема и обладает сильной способностью судить на начальной стадии трендов. Добавление предыдущих максимумов и минимумов для определения направлений делает торговые решения более точными. Контроль рисков также важен для предотвращения потерь от ложных сигналов.
/*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)