Стратегия следования тренду Vortex Oscillator


Дата создания: 2023-12-07 16:48:45 Последнее изменение: 2023-12-07 16:48:45
Копировать: 0 Количество просмотров: 678
1
Подписаться
1621
Подписчики

Стратегия следования тренду Vortex Oscillator

Обзор

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

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

Ключевым показателем стратегии является водоворотный индикатор. Водоворотный индикатор состоит из краткосрочных, среднесрочных и долгосрочных движущихся средних за несколько различных периодов. В частности, в стратегии используются четыре цикла движущихся средних за 6, 27, 72 и 234 дня.

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

Анализ преимуществ

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

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

Анализ рисков

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

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

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

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

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

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

  3. В сочетании с другими показателями, увеличивает стратегическую стабильность. Например, добавление показателя объема сделок, который создает торговый сигнал только в случае увеличения объема сделок.

  4. Используйте различные комбинации параметров в зависимости от стадии рынка. Например, более активные параметры используются в бычьем рынке, а более стабильные - в медвежьем.

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

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

Исходный код стратегии
/*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")