Эта стратегия рассчитывает самый высокий и самый низкий объем транзакций за определенный недавний период, чтобы сформировать адаптивный диапазон колебаний. Когда объем транзакций текущего цикла проходит через этот диапазон, генерируются торговые сигналы. Направление сигнала определяется свечой Инь Ян, которая является простой и эффективной стратегией отслеживания внезапных крупных единичных транзакций на рынке.
Основная логика заключается в расчете наивысших и самых низких значений положительных и отрицательных объемов транзакций в последних N циклах для формирования адаптивного диапазона флуктуации.
Конкретный процесс расчета:
Основными преимуществами этой стратегии являются:
Стратегия также сопряжена с некоторыми рисками:
Настройка параметров цикла и включение других индикаторов для фильтрации может оптимизировать.
Стратегия может быть оптимизирована несколькими способами:
Стратегия в целом проста и практична. Сочетая адаптивный диапазон и объемный анализ цен, она может эффективно захватить односторонние взрывные рынки. Однако существует также определенный риск ложных сигналов, требующих соответствующих изменений параметров и дополнительных инструментов, прежде чем она сможет достичь максимального эффекта.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m 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/ // © EvoCrypto //@version=4 strategy("Ranged Volume Strategy - evo", shorttitle="Ranged Volume", format=format.volume) // INPUTS { Range_Length = input(5, title="Range Length", minval=1) Heikin_Ashi = input(true, title="Heikin Ashi Colors") Display_Bars = input(true, title="Show Bar Colors") Display_Break = input(true, title="Show Break-Out") Display_Range = input(true, title="Show Range") // } // SETTINGS { Close = Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close Open = Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open Positive = volume Negative = -volume Highest = highest(volume, Range_Length) Lowest = lowest(-volume, Range_Length) Up = Highest > Highest[1] and Close > Open Dn = Highest > Highest[1] and Close < Open Volume_Color = Display_Break and Up ? color.new(#ffeb3b, 0) : Display_Break and Dn ? color.new(#f44336, 0) : Close > Open ? color.new(#00c0ff, 60) : Close < Open ? color.new(#000000, 60) : na // } //PLOTS { plot(Positive, title="Positive Volume", color=Volume_Color, style=plot.style_histogram, linewidth=4) plot(Negative, title="Negative Volume", color=Volume_Color, style=plot.style_histogram, linewidth=4) plot(Display_Range ? Highest : na, title="Highest", color=color.new(#000000, 0), style=plot.style_line, linewidth=2) plot(Display_Range ? Lowest : na, title="Lowest", color=color.new(#000000, 0), style=plot.style_line, linewidth=2) barcolor(Display_Bars ? Volume_Color : na) // } if (Up) strategy.entry("Long Entry", strategy.long) if (Dn) strategy.entry("Short Entry", strategy.short)