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

Многопоказательная синергетическая тенденция в соответствии со стратегией с динамической системой стоп-лосса

Автор:Чао Чжан, Дата: 2024-12-13 11:45:19
Тэги:ATRЕМАПВТРСИ

img

Обзор

Эта стратегия представляет собой торговую систему, которая сочетает в себе несколько технических индикаторов. Она интегрирует рыночные сигналы из различных измерений, включая скользящую среднюю (EMA), отслеживание волатильности (ATR), тенденцию объема (PVT) и осциллятор импульса (Ninja), чтобы улучшить точность торговли. Стратегия использует динамический механизм стоп-лосса для строгого контроля риска при отслеживании тенденций.

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

Основная логика строится на четырех основных столпах:

  1. Использование 200-периодного EMA в качестве основной основы определения тренда, разделение рынка на бычье и медвежье состояния
  2. Система Chandelier Exit, основанная на ATR, определяющая поворотные моменты тренда путем отслеживания максимумов и минимумов в сочетании с волатильностью
  3. Показатель PVT, объединяющий изменения цен с объемом для подтверждения достоверности ценовой тенденции
  4. Осиллятор Ninja, отражающий изменения рыночной динамики путем сравнения краткосрочных и среднесрочных скользящих средних

Торговые сигналы генерируются при следующих условиях:

  • Долгая: цена выше 200EMA, Chandelier Exit показывает сигнал покупки, подтвержденный либо PVT, либо индикатором Ninja
  • Короткий: цена ниже 200EMA, выход из люстры показывает сигнал продажи, подтвержденный либо PVT, либо индикатором Ninja.

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

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

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

  1. Может генерировать частые ложные сигналы на различных рынках
  2. Несколько механизмов подтверждения могут привести к незначительной задержке записи
  3. Позиции стоп-лосса могут быть относительно свободными во время быстрых рыночных переворотов
  4. Оптимизация параметров может привести к риску перенастройки
  5. Требуется существенный буфер капитала для выдержки использования

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

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

Резюме

Эта стратегия создает относительно полную торговую систему с помощью многоиндикаторной синергии и динамического механизма стоп-лосса. Ее основные преимущества заключаются в многомерном подтверждении сигнала и строгом контроле рисков.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Triple Indicator Strategy", shorttitle="TIS", overlay=true)

// --- Inputs ---
var string calcGroup = "Calculation Parameters"
atrLength = input.int(22, title="ATR Period", group=calcGroup)
atrMult = input.float(3.0, title="ATR Multiplier", step=0.1, group=calcGroup)
emaLength = input.int(200, title="EMA Length", group=calcGroup)

// --- ATR and EMA Calculations ---
atr = atrMult * ta.atr(atrLength)
ema200 = ta.ema(close, emaLength)

// --- Chandelier Exit Logic ---
longStop = ta.highest(high, atrLength) - atr
shortStop = ta.lowest(low, atrLength) + atr

var int dir = 1
dir := close > shortStop ? 1 : close < longStop ? -1 : dir

buySignal = dir == 1 and dir[1] == -1
sellSignal = dir == -1 and dir[1] == 1

// --- Price Volume Trend (PVT) ---
pvt = ta.cum((close - close[1]) / close[1] * volume)
pvtSignal = ta.ema(pvt, 21)
pvtBuy = ta.crossover(pvt, pvtSignal)
pvtSell = ta.crossunder(pvt, pvtSignal)

// --- Ninja Indicator ---
ninjaOsc = (ta.ema(close, 3) - ta.ema(close, 13)) / ta.ema(close, 13) * 100
ninjaSignal = ta.ema(ninjaOsc, 24)
ninjaBuy = ta.crossover(ninjaOsc, ninjaSignal)
ninjaSell = ta.crossunder(ninjaOsc, ninjaSignal)

// --- Strategy Conditions ---
longCondition = buySignal and close > ema200 and (pvtBuy or ninjaBuy)
shortCondition = sellSignal and close < ema200 and (pvtSell or ninjaSell)

if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Long", "Buy", stop=low - atr)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Short", "Sell", stop=high + atr)

// --- Plotting ---
plot(ema200, title="EMA 200", color=color.blue, linewidth=2)
plotshape(buySignal, title="Chandelier Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Chandelier Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// --- Labels for Buy/Sell with price ---
if buySignal
    label.new(bar_index, low, "Buy: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar, size=size.small)

if sellSignal
    label.new(bar_index, high, "Sell: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar, size=size.small)

// --- Alerts ---
alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered!")
alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered!")

Связанные

Больше