В процессе загрузки ресурсов... загрузка...

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

Автор:Чао Чжан, Дата: 2024-12-20 16:17:27
Тэги:ЕМАSMAHLCМ.А.

img

Обзор

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

Принцип стратегии

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

  1. Расчет средней цены HLC (средняя высокая, низкая и закрывающая цены)
  2. Угладить среднее значение HLC с использованием EMA для получения линии ESA
  3. Вычислить и сгладить отклонение между средней HLC и линией ESA с использованием EMA
  4. Вычислить значение K на основе отклонения и гладко дважды с EMA, чтобы получить окончательную линию TCI
  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")

Связанные

Больше