Спиральная стратегия с подтверждением скользящей средней

Автор:Чао Чжан, Дата: 2024-02-02 14:50:08
Тэги:

img

Обзор

Эта стратегия сочетает в себе линию вихревого индикатора и линию скользящей средней для определения направления и силы ценовых тенденций с целью генерирования потенциальных длинных и коротких сигналов. Когда положительная линия вихре (VI+) пересекает линию вихревой отрицательной (VI-), каждый перекресток выделяется на графике. Если цена закрытия выше линии скользящей средней, генерируется длинный сигнал. Когда VI- пересекает линию скользящей средней, если цена закрытия ниже линии скользящей средней, генерируется короткий сигнал.

Логика стратегии

  1. Индикатор вихря: состоит из двух линий - положительного вихря (VI+) и отрицательного вихря (VI-). Он используется для определения направления и силы ценовых тенденций.

  2. Движущаяся средняя (MA): использует выбранный метод Движущейся средней (SMA, EMA, SMMA, WMA или VWMA) для сглаживания данных о ценах.

  3. Определить длинные и короткие сигналы: когда VI+ пересекает VI-, каждый перекресток выделяется. Если закрытие находится выше линии сглаживания, генерируется длинный сигнал. Когда VI- пересекает VI+, если закрытие находится ниже линии сглаживания, генерируется короткий сигнал.

Преимущества

  1. Сочетает в себе идентификацию трендов и сглаживание, чтобы улавливать тенденции на трендовых рынках, избегая ложных сигналов на нестабильных рынках.

  2. Индикатор вихря эффективно определяет направление и силу тренда.

  3. Простая и понятная логика стратегии, легко понятная и реализуемая.

  4. Настраиваемые параметры, адаптируются к различным рыночным условиям.

Риски

  1. Может генерировать ложные сигналы и срывы на рынках с диапазоном или без тренда.

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

  3. Невозможно защитить от экстремальных колебаний цен от крупных непредвиденных событий.

Усовершенствования

  1. Включите другие показатели, такие как объем, чтобы определить надежность тренда.

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

  3. Добавьте стоп-потери к контрольным потерям.

  4. Использование машинного обучения для автоматической оптимизации параметров.

  5. Включить модули управления рисками для корректировки размеров позиций.

Заключение

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


/*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

Больше