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

Тенденция после среднего истинного диапазона

Автор:Чао Чжан, Дата: 2024-05-24 18:12:01
Тэги:ATRТС

img

Обзор

Эта стратегия использует средний истинный диапазон (ATR) в качестве основы для последующей остановки (TS), динамически корректируя позицию стоп-лосса, чтобы следовать тренду. Когда цена движется в благоприятном направлении, позиция стоп-лосса корректируется соответственно, чтобы закрепить прибыль; когда цена движется в неблагоприятном направлении, позиция стоп-лосса остается неизменной, и как только цена достигает цены стоп-лосса, позиция закрывается. Ключ к этой стратегии заключается в динамической корректировке позиции стоп-лосса, которая может как защитить прибыль, так и позволить прибыли расширяться по мере продолжения тренда.

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

  1. Вычислить ATR как основу для остановки. ATR отражает волатильность рынка и используется для измерения средней величины изменений цен.
  2. Вычислить расстояние стоп-лосса nLoss на основе параметра ATR и KeyValue. KeyValue - это множитель, определенный пользователем, а nLoss - произведение KeyValue и ATR, что указывает на то, что расстояние стоп-лосса несколько раз превышает ATR.
  3. Вычислить динамическую позицию xATRTrailingStop. Для длинной позиции она устанавливается на большую из высшей цены предыдущей свечи и (закрытие - nLoss) ; для короткой позиции она устанавливается на меньшую из нижней цены предыдущей свечи и (закрытие + nLoss) .
  4. Когда цена закрытия пересекает xATRTrailingStop, перейдите в длинный; когда цена закрытия пересекает xATRTrailingStop, перейдите в короткий.

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

  1. Позиция стоп-лосса динамически корректируется в зависимости от колебаний цен, что позволяет зафиксировать прибыль, а также увеличивать прибыль по мере продолжения тенденции.
  2. Позиция стоп-лосса основана на расчете ATR, который может объективно отражать волатильность рынка и является более гибкой и эффективной по сравнению с субъективно установленными фиксированными стоп-лоссами.
  3. Увеличив ATR с параметром KeyValue, вы можете установить соответствующее расстояние стоп-лосса на основе ваших предпочтений риска.

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

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

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

  1. Показатели оценки тенденций, такие как системы скользящих средних и индикаторы импульса, могут быть добавлены к стратегии, чтобы выйти на рынок только тогда, когда тенденция ясна, избегая частой торговли на нестабильных рынках.
  2. Можно рассмотреть стратегию получения прибыли, такую как расчет размеров позиций на основе формулы Келли, установление фиксированных точек прибыли для остановки прибыли от ретрексера и т. д., чтобы уменьшить возможность потенциального возвращения прибыли в конце тренда.
  3. Для открытий разрыва можно установить максимальный лимит стоп-лосса, например, фиксированную сумму или фиксированный процент.

Резюме

Стратегия ATR Trailing Stop может динамически корректировать позицию стоп-лосса на основе величины колебаний цен и может достигать хороших результатов на трендовых рынках. Однако эта стратегия также имеет такие риски, как неспособность справляться с нестабильными рынками, чрезмерная частота стоп-лосса и трудности в избежании пробелов. Чтобы устранить эти недостатки, стратегия может быть оптимизирована и улучшена с точки зрения суждения о тренде, стратегии получения прибыли и максимальных лимитов стоп-лосса.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')


Связанные

Больше