Эта стратегия сочетает в себе линию вихревого индикатора и линию скользящей средней для определения направления и силы ценовых тенденций с целью генерирования потенциальных длинных и коротких сигналов. Когда положительная линия вихре (VI+) пересекает линию вихревой отрицательной (VI-), каждый перекресток выделяется на графике. Если цена закрытия выше линии скользящей средней, генерируется длинный сигнал. Когда VI- пересекает линию скользящей средней, если цена закрытия ниже линии скользящей средней, генерируется короткий сигнал.
Индикатор вихря: состоит из двух линий - положительного вихря (VI+) и отрицательного вихря (VI-). Он используется для определения направления и силы ценовых тенденций.
Движущаяся средняя (MA): использует выбранный метод Движущейся средней (SMA, EMA, SMMA, WMA или VWMA) для сглаживания данных о ценах.
Определить длинные и короткие сигналы: когда VI+ пересекает VI-, каждый перекресток выделяется. Если закрытие находится выше линии сглаживания, генерируется длинный сигнал. Когда VI- пересекает VI+, если закрытие находится ниже линии сглаживания, генерируется короткий сигнал.
Сочетает в себе идентификацию трендов и сглаживание, чтобы улавливать тенденции на трендовых рынках, избегая ложных сигналов на нестабильных рынках.
Индикатор вихря эффективно определяет направление и силу тренда.
Простая и понятная логика стратегии, легко понятная и реализуемая.
Настраиваемые параметры, адаптируются к различным рыночным условиям.
Может генерировать ложные сигналы и срывы на рынках с диапазоном или без тренда.
Например, слишком короткая скользящая средняя имеет плохую способность к сглаживанию, а более длинная отстает в распознавании изменений тренда.
Невозможно защитить от экстремальных колебаний цен от крупных непредвиденных событий.
Включите другие показатели, такие как объем, чтобы определить надежность тренда.
Оптимизировать параметры для сбалансированного отслеживания тенденций и фильтрации шума скользящих средних.
Добавьте стоп-потери к контрольным потерям.
Использование машинного обучения для автоматической оптимизации параметров.
Включить модули управления рисками для корректировки размеров позиций.
Эта стратегия эффективно сочетает в себе индикатор вихря и скользящие средние для улавливания тенденций. Она определяет направление тренда, имея при этом некоторую способность фильтрации шума для уменьшения ложных сигналов. Логика проста и гибкая в использовании, хорошо работает на трендовых рынках. Дальнейшее улучшение контроля рисков может быть достигнуто путем включения большего количества фильтров, оптимизации параметров и добавления стоп-потерь.
/*backtest start: 2023-02-01 00:00:00 end: 2024-02-01 00:00:00 period: 1d basePeriod: 1h 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/ // © DraftVenture //@version=5 strategy("Vortex + Moving Average Strategy", overlay=true) //Vortex settings period_ = input.int(14, title="Vortex Length", minval=2) VMP = math.sum( math.abs( high - low[1]), period_ ) VMM = math.sum( math.abs( low - high[1]), period_ ) STR = math.sum( ta.atr(1), period_ ) VIP = VMP / STR VIM = VMM / STR plot(VIP, title="VI +", color=color.white) plot(VIM, title="VI -", color=color.white) len = input.int(9, minval=1, title="MA Length") src = input(close, title="Source") offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) out = ta.sma(src, len) plot(out, color=color.blue, title="MA", offset=offset) ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing") smoothingLine = ma(out, smoothingLength, typeMA) plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none) // Determine long and short conditions longCondition = ta.crossover(VIP, VIM) and close > smoothingLine shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP) // Strategy entry and exit logic if longCondition strategy.entry("Long", strategy.long) if shortCondition strategy.entry("Short", strategy.short) bgcolor(crossCondition ? color.new(color.white, 80) : na) // Strategy by KP