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


Дата создания: 2024-02-02 15:17:01 Последнее изменение: 2024-02-02 15:17:01
Копировать: 0 Количество просмотров: 814
1
Подписаться
1617
Подписчики

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

Обзор

Двунаправленная стратегия AlphaTrend - это стратегия торговли на основе сигналов покупки и продажи в индексе AlphaTrend. Эта стратегия позволяет открывать позиции с плюс- и минусом в зоне, где индикатор AlphaTrend генерирует сигналы покупки и продажи.

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

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

Начало = минимальная цена - ATR * коэффициент Нижняя линия = максимальная цена + ATR * коэффициент

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

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

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

Таким образом, была достигнута двусторонняя транзакция, основанная на динамическом канале индикатора AlphaTrend.

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

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

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

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

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

Кроме того, сам показатель ALPHA может иметь определенную задержку. Поэтому вблизи точек перехода в торговле может возникать ошибочный сигнал. Это требует дополнительной поддержки других показателей для подтверждения.

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

АльфаТренд может оптимизировать стратегию двухстороннего отслеживания в следующих аспектах:

  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!')