Осиллятор вихря - это стратегия отслеживания тренда, основанная на индикаторе вихря. Он использует скользящие средние нескольких временных рамок для построения индикатора вихря для выявления потенциальных ценовых тенденций и сочетается с скользящей средней за более короткий период в качестве вспомогательного суждения для достижения операций отслеживания тренда с низким риском.
Основным показателем этой стратегии является индикатор вихря. Индикатор вихря состоит из краткосрочных, среднесрочных и долгосрочных скользящих средних от нескольких временных рамок. В частности, стратегия использует скользящие средние от 6 дней, 27 дней, 72 дня и 234 дня. Краткосрочная скользящая средняя отражает последнюю тенденцию цен, а долгосрочная скользящая средняя отражает долгосрочную тенденцию. Основная логика индикатора заключается в том, что когда краткосрочная скользящая средняя пересекает долгосрочную скользящую среднюю, это указывает на то, что подъемный импульс укрепляется, и пришло время покупать. Когда краткосрочная скользящая средняя пересекает ниже долгосрочной средней, это указывает на то, что подъемный импульс ослабевает, и мы должны продавать.
Значительным преимуществом индикатора вихря является то, что он точно оценивает тенденции и эффективно отфильтровывает шум рынка. Однако его реакция недостаточно чувствительна, чтобы вовремя улавливать поворотные точки. Поэтому стратегия включает более чувствительную 6-дневную скользящую среднюю для построения вспомогательного индикатора суждения. Купить, когда как индикатор вихря, так и вспомогательный индикатор пересекают нулевую линию, и продавать, когда оба индикатора пересекают нулевую линию. Это образует логику многоподтверждения, где индикатор вихря определяет направление и силу тренда, а вспомогательный индикатор определяет конкретные точки входа и выхода, что фильтрует ложные сигналы, повышая чувствительность операций.
Наибольшее преимущество этой стратегии заключается в точности суждения и чувствительности операций. Сочетание индикатора вихря и вспомогательных индикаторов достигает органического единства суждения о тренде и определения конкретных точек входа / выхода, избегая помех друг с другом. Механизм многоподтверждения может эффективно фильтровать рыночный шум и избегать неправильных сделок. В то же время добавление вспомогательного индикатора также обеспечивает чувствительность операций стратегии.
В сравнении с стратегиями с одним индикатором преимущество этой стратегии заключается в том, что она сочетает в себе несколько индикаторов для достижения более сильных возможностей в выявлении и реагировании на изменения на рынке. При неизменной основной тенденции стратегия может достигать устойчивой прибыли. Когда основные тенденции меняются, стратегия также может быстро реагировать на снижение потерь.
Основные риски этой стратегии возникают из-за неправильного настройки параметров индикаторов и влияния экстремальных событий. Параметры скользящих средних должны сбалансировать чувствительность и сопротивление помехам шума. Неправильные настройки параметров приведут к ненормальному поведению стратегии. Кроме того, крупные события также могут вызвать экстремальную волатильность цен, которая отключает индикаторы, что приводит к неправильным сделкам.
Для смягчения этих рисков параметры должны быть оптимизированы и проверены для стабилизации показателей. Кроме того, обратите пристальное внимание на влияние на рынок от крупных событий, при необходимости приостановить стратегии, чтобы избежать ошибок во время периодов ненормальной волатильности. По мере снижения цен постепенное сокращение позиций также является эффективной мерой сохранения капитала.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать параметры скользящей средней для улучшения шумоустойчивости и чувствительности работы индикатора.
Добавьте механизмы остановки потери. Установите точки остановки потери, когда цены превышают ключевые уровни поддержки в неблагоприятном направлении, чтобы избежать дальнейших потерь.
Включить другие оценки показателей для повышения стабильности стратегии, например, принимать сигналы только при увеличении объемов торговли.
Используйте различные наборы параметров на основе различных этапов рынка. Например, более агрессивные параметры во время бычьих рынков и более стабильные настройки на медвежьих рынках.
Стратегия последовательности трендов с помощью вихревого осциллятора успешно сочетает в себе суждение о тренде и его исполнение с помощью индикатора вихревого индикатора, определяющего направление/силу тренда цены, и чувствительной краткосрочной скользящей средней, определяющей конкретное время входа/выхода.
/*backtest start: 2022-11-30 00:00:00 end: 2023-12-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //swap strategy line for study line to enable backtesting strategy(title="Vortex Ocillator" ) //study(title = "Vortex Oscillator", precision = 6) // Component Code Start // Example usage: // if testPeriod() // strategy.entry("LE", strategy.long) testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(01, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2048, "Backtest Stop Year") testStopMonth = input(7, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Code Stop //vortex histogram short_input = input(6, minval = 1) long_input = input(27, minval = 1) longer_input = input(72, minval = 1) longest_input = input(234, minval = 1) short = sma(close, short_input) long = sma(close, long_input) longer = sma(close, longer_input) longest = sma(close, longest_input) hist = short - long longhist = short - longer longesthist = short - longest hist_fractal = input(3, minval = 0) longhist_fractal = input(2, minval = 0) longesthist_fractal = input(4, minval = 0) vortexhist = avg((hist / hist_fractal), (longhist / longhist_fractal), (longesthist / longesthist_fractal)) crossover_calc = vortexhist > 0 and vortexhist[1] < 0 crossunder_calc = vortexhist < 0 and vortexhist[1] > 0 crossover2 = crossover(vortexhist, 0) crossunder2 = crossunder(vortexhist, 0) hist_color = hist > 0? fuchsia : purple longhist_color = longhist > 0? olive : orange longesthist_color = longesthist > 0? teal : blue vortexhist_color = vortexhist >= 0? green : red plot(longesthist, "Longest Ocillator", style = histogram, color = longesthist_color, transp = 5) plot(longhist, "Longer Ocillator", style = histogram, color = longhist_color, transp = 30) plot(hist, "Short Ocillator", style = histogram, color = hist_color, transp = 30) plot(vortexhist, "Vortex Ocillator", style = columns, color = vortexhist_color, transp = 40) plotshape(crossover_calc,title = "Crossover",location = location.bottom, style = shape.triangleup, size = size.small, color = green) plotshape(crossunder_calc,title = "Crossunder",location = location.bottom, style = shape.triangledown, size = size.small, color = red) //micro micro_ema_length = input(6,"Micro EMA Length") micro = ema(vortexhist, micro_ema_length) plot(micro, title = "micro", linewidth = 1, color = white) microup = crossover(vortexhist, micro) microdown = crossunder(vortexhist, micro) //new micro signals xmicroup = microup and vortexhist >=0 or crossover_calc xmicrodown = microdown and vortexhist >=0 or crossunder_calc plotshape(xmicroup, title = "Micro up", style = shape.circle, color = olive, location = location.bottom, size = size.tiny) plotshape(xmicrodown, title = "Micro down", style = shape.circle, color = fuchsia, location = location.bottom, size = size.tiny) //optional strategy options for backtesting, comment out the alertcondition rows and swap the top study row for the strategy row to compile as strategy if testPeriod() strategy.entry("buy", true, 1, when = xmicroup, limit = low) if testPeriod() strategy.close("buy", when = xmicrodown) //if (xmicroup) //strategy.entry("My Long Entry Id", strategy.long) //if (xmicroup) //strategy.exit("My Short Exit Id", "My Short Entry Id") //if (xmicrodown) //strategy.exit("My Long Exit Id", "My Long Entry Id")