Комбинационная стратегия двойного переменного движения средней и ATR Trailing Stop

Автор:Чао Чжан, Дата: 2024-01-26 11:26:40
Тэги:

img

Обзор

Комбинированная стратегия двойного движущегося среднего перехода и ATR trailing stop является очень практичной количественной торговой стратегией. Стратегия сначала использует крест смерти и золотой крест, сформированный двойными движущимися средними, для определения рыночных тенденций и точек перехода. В то же время стратегия также сочетает средний истинный диапазон для установки остановок, чтобы обеспечить прибыль, контролируя риски.

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

Стратегия реверсии двойной скользящей средней

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

В частности, стратегия использует 9-дневную быструю линию STOCH в качестве быстрой линии и 3-дневную EMA в качестве медленной линии. Когда закрытие ниже, чем предыдущее закрытие, и быстрая линия пересекает выше 50 для пересечения над медленной линией, она очищает позицию, чтобы пойти коротко. Когда закрытие выше, чем предыдущее закрытие и быстрая линия пересекает ниже 50 для пересечения ниже медленной линии, она очищает позицию, чтобы пойти долго.

Стратегия ATR Trailing Stop

Стратегия ATR trailing stop использует средний истинный диапазон для установки точек остановки потери.

В частности, стратегия использует 5-дневный ATR и устанавливает точку остановки потери в минус 3,5 раза ATR. Когда цена достигает точки остановки, она закрывает позицию для остановки потери.

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

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

В частности, стратегия имеет следующие преимущества:

  1. Используйте смертельный крест и золотой крест, сформированные двумя скользящими средними для определения точек переворота тренда рынка и точного определения сигналов переворота.

  2. Комбинируйте индикатор STOCH для подтверждения сигналов обратного движения и избегания ложных сигналов.

  3. ATR Trailing Stop гибко устанавливает точки остановки потери на основе волатильности рынка, чтобы максимизировать блокировку прибыли.

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

  5. Идея стратегии ясна и понятна, параметры гибки для корректировки, и ее легко использовать в режиме реального времени.

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

Хотя стратегия имеет много преимуществ, все же есть некоторые риски, которые следует отметить:

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

  2. Показатель ATR не чувствителен к большим колебаниям рынка и не может своевременно обновлять стоп-лосс.

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

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

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

  1. Корректировка параметров скользящей средней продолжительности периода с целью сокращения периодов для раннего выявления возможностей реверсии.

  2. Добавить другие индикаторы для определения сигналов обворота, такие как MACD, KD и т. д., чтобы сформировать множественные подтверждения.

  3. Динамически регулировать периоды ATR или вводить волатильность рынка для обновления стоп-лосса в режиме реального времени.

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

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

  6. Подумайте о добавлении моделей машинного обучения для динамической оптимизации нескольких параметров.

Резюме

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


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 17/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Secon strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


ATR_TrailingStop(nATRPeriod, nATRMultip) =>
    xATR = atr(nATRPeriod)
    nLoss = nATRMultip * xATR
    pos = 0.0
    xATRTrailingStop = 0.0
    xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
                         iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
                           iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
    pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
    	     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Average True Range Trailing Stops", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
nATRPeriod = input(5)
nATRMultip = input(3.5)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posATR_TrailingStop = ATR_TrailingStop(nATRPeriod, nATRMultip)
pos = iff(posReversal123 == 1 and posATR_TrailingStop == 1 , 1,
	   iff(posReversal123 == -1 and posATR_TrailingStop == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 

Больше