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

Автор:Чао Чжан, Дата: 2024-02-05 10:44:19
Тэги:

img

Обзор

Это ежедневная стратегия свингования на основе импульсных методов с использованием ATR Stops.

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

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

Код сначала устанавливает временной диапазон обратного тестирования.

Затем в разделе показателей вычисляются следующие показатели:

  • atr(): рассчитывать ATR для стоп-лосса;
  • max_/min_: самая высокая/наименьшая цена предыдущей строки;
  • is_uptrend: оценить, находится ли он в восходящем тренде;
  • vstop: линия стоп-потери;

Основная логика для оценки тренда заключается:

Если закрытие выше предыдущей линии остановки потерь вниз, оно рассматривается как восходящий тренд; если закрытие ниже предыдущей линии остановки потерь вверх, оно рассматривается как нисходящий тренд.

Когда изменяется тренд, корректируйте позицию линии стоп-лосса.

В частности, в восходящем тренде линия стоп-лосса устанавливается на самую высокую цену предыдущего бар минус значение ATR; в нисходящем тренде линия стоп-лосса устанавливается на самую низкую цену предыдущего бар плюс значение ATR.

Это реализует тенденцию после остановки потерь.

В разделе "Правила торговли" открывайте длинные/короткие позиции, когда цена переходит линию стоп-лосса.

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

Преимущества этой стратегии:

  1. Осудите направление тренда с помощью методов импульса, своевременно поймите поворотные моменты и избегайте ложных прорывов.
  2. ATR отслеживает самые высокие/низкие цены, может хорошо контролировать риск.
  3. Простая и понятная логика стратегии, легко понятная и реализуемая.
  4. Могут делать сделки с низкой ценой покупки и высокой ценой продажи между колебаниями.

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

Существуют также некоторые риски:

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

Некоторые оптимизации:

  1. Испытайте различные параметры ATR, чтобы найти оптимальный.
  2. Оптимизировать стоп-лосс, комбинируя показатели волатильности с ATR.
  3. Добавьте трендовый фильтр, чтобы избежать ненужных сделок во время нестабильных рынков.

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

Некоторые направления для оптимизации этой стратегии:

  1. Проверьте различные параметры ATR, чтобы найти оптимальный. Проверьте несколько наборов параметров и оценить соотношение доходности / риска.

  2. Добавьте метрики волатильности, расслабьте стоп-лосс должным образом в периоды повышения волатильности.

  3. Добавьте трендовый фильтр, чтобы избежать сделок во время нестабильного рынка. Добавьте индикаторы оценки тренда, торгуйте только тогда, когда тренд ясен.

  4. Добавьте механизм размещения позиций. Настройка размера позиции на основе коэффициента использования счета, последовательных времен остановки потери и т.д.

  5. Активно сокращайте убытки перед закрытием рынка, чтобы избежать риска длительного разрыва.

Заключение

Как основная ежедневная стратегия торговли свингом, общая логика ясна. Она оценивает тренд с помощью импульсных методов и использует ATR для отслеживания стоп-лосса, эффективно контролируя риск.

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


/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES

Больше