Стратегия двойного отслеживания AlphaTrend

Автор:Чао Чжан, Дата: 2024-02-02 15:17:01
Тэги:

img

Обзор

Стратегия двойного отслеживания AlphaTrend торгуется на основе сигналов покупки и продажи, генерируемых индикатором AlphaTrend. Она открывает длинные и короткие позиции в областях, где AlphaTrend производит сигналы покупки и продажи.

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

Ядром двойной стратегии отслеживания AlphaTrend является индикатор AlphaTrend. Индикатор AlphaTrend рассчитывает верхние и нижние диапазоны на основе адаптивной ATR и цены (закрытая цена или средневзвешенная цена по объему).

Верхняя полоса = Нижняя низкая - ATR * множитель Нижняя полоса = самая высокая высота + ATR * множитель

где ATR - это средний истинный диапазон за определенный период, а множитель - это регулируемый параметр. Когда цена выше верхней полосы, линия индикатора приближается к верхней полосе. Когда цена ниже нижней полосы, линия индикатора приближается к нижней полосе. Таким образом, AlphaTrend образует адаптивный канал.

Стратегия двойного отслеживания AlphaTrend устанавливает длинные и короткие позиции на основе сигналов, генерируемых AlphaTrend.

  • Идите длинные, когда цена пересекает Альфа-Тренд;
  • Сокращайте, когда цена пересекает Альфа-Тренд.

Это завершает двунаправленную торговлю на основе динамического канала AlphaTrend.

Анализ преимуществ

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

Кроме того, AlphaTrend сочетает в себе информацию о цене и объеме (или импульсе), что помогает отфильтровать некоторые ложные прорывы, улучшая качество торговых сигналов.

Анализ рисков

Основной риск стратегии двойного отслеживания AlphaTrend возникает из-за огромных колебаний рынка, которые могут поразить точки остановки потери. Когда происходит ненормальное движение рынка, точки остановки потери могут быть нарушены, что приводит к большим потерям. Это необходимо контролировать путем правильной корректировки параметров ATR и точек остановки потери.

Кроме того, сам ALPHA имеет определенную отсталость. Он также может генерировать неправильные сигналы вокруг переломных моментов на рынке. Для подтверждения сигналов следует использовать другие индикаторы.

Руководство по оптимизации

Стратегия двойного отслеживания AlphaTrend может быть оптимизирована в следующих аспектах:

  1. Комбинировать с индикаторами тренда для определения основной тенденции на рынке, чтобы избежать торговли против тенденции;
  2. Увеличить объем фильтра, чтобы избежать потерь, вызванных ложными прорывами малого объема;
  3. Оптимизировать параметры показателей, чтобы сделать диапазон каналов более подходящим для различных продуктов;
  4. Увеличить алгоритмы машинного обучения, чтобы сделать канал более интеллектуальным.

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

Резюме

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


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5
strategy('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=true)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

//plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

//plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))



longCondition = buySignalk and showsignalsk and O1 > K2
if (longCondition)
    
    strategy.entry("BUY", strategy.long, comment = "BUY ENTRY")

shortCondition = sellSignalk and showsignalsk and O2 > K1
if (shortCondition )
    
    strategy.entry("SELL", strategy.short, comment = "SELL ENTRY")













// alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
// alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')

// alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
// alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')



// alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
// alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')

// alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
// alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')






Больше