Стратегия динамического отслеживания волнового тренда

EMA SMA HLC MA
Дата создания: 2024-12-20 16:17:27 Последнее изменение: 2024-12-20 16:17:27
Копировать: 3 Количество просмотров: 413
1
Подписаться
1617
Подписчики

Стратегия динамического отслеживания волнового тренда

Обзор

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

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

Основная цель стратегии состоит в следующих шагах:

  1. Сначала рассчитывается средняя цена HLC (средняя величина цены максимума, минимума и цены закрытия)
  2. Сглаживание средней стоимости HLC с использованием EMA дает линию ESA
  3. Расчет отклонения между средней ценой HLC и линией ESA и использование EMA для сглаживания
  4. Вычислить значение K на основе отклонения и получить окончательную линию TCI с помощью двух сглаживаний EMA
  5. Использование SMA для расчета долгосрочной трендовой линии в качестве фильтра тренда
  6. Торговый сигнал создается, когда линия TCI пробивается за пределы уровня перекупа и перепродажи и соответствует направлению тренда

Стратегические преимущества

  1. Высокая надежность сигнала: эффективное снижение ложных сигналов в сочетании с индикатором WaveTrend и фильтром тренда
  2. Отличное управление рисками: установление четких предельных значений перекупа и перепродажи, помогающих своевременно прекратить убытки
  3. Гибкость: параметры стратегии могут быть гибко изменены в зависимости от рыночных условий
  4. Ясная логика действий: условия входа и выхода ясны и легко выполняются
  5. Комплексный анализ: улучшение стабильности торговли, учитывая как краткосрочные колебания, так и долгосрочные тенденции

Стратегический риск

  1. Риск обратного тренда: возможна задержка в условиях резкой волатильности рынка
  2. Чувствительность параметров: Различные комбинации параметров могут привести к совершенно разным результатам.
  3. Рыночная адаптивность: частота торговли при рыночных колебаниях
  4. Управление капиталом: необходимость рационального контроля позиций в ответ на рыночные колебания
  5. Технологическая зависимость: показатели технологической зависимости могут игнорировать фундаментальные факторы

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

  1. Добавление фильтра волатильности: корректировка торговой отметки в периоды высокой волатильности
  2. Внедрение многоциклического анализа: повышение точности сигналов, объединяющих различные временные периоды
  3. Самостоятельная адаптация параметров оптимизации: динамическая коррекция параметров показателя в соответствии с состоянием рынка
  4. Совершенствование тормозной остановки: увеличение динамического тормозного остановки
  5. Добавление подтверждения загрузки: объединение анализа загрузки повышает надежность сигнала

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")