Стратегия торговли с изменением импульса

Автор:Чао Чжан, Дата: 2023-10-09 17:21:27
Тэги:

Обзор

Торговая стратегия Momentum Reversal сочетает в себе преимущества стратегий обратного и импульсного движения, используя сигналы от обоих типов индикаторов для осуществления противоположных сделок в переломные моменты для получения прибыли.

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

Стратегия состоит из двух частей:

Первая часть - стратегия 123 обратного движения.

  • Пройти длинный период, когда цена закрытия выше, чем предыдущая цена закрытия в течение 2 дней подряд, а 9-дневный медленный стохастический осциллятор ниже 50.

  • Пройти короткий период, когда цена закрытия ниже, чем цена предыдущего закрытия в течение 2 дней подряд, а 9-дневный быстрый стохастический осциллятор выше 50.

Вторая часть - фильтрованный индикатор импульса.

  1. Вычислить изменение цены xMom = закрытие - закрытие[1]

  2. Вычислить изменение абсолютной цены xMomAbs = abs ((close - close[1])

  3. Фильтр xMom, если меньше порога Фильтр до 0

  4. Фильтр xMomAbs, если меньше порога Фильтр до 0

  5. Расчет суммы фильтрованных xMom за n дней nSum

  6. Расчет суммы фильтрованных xMomAbs за n дней nAbsSum

  7. Вычислить значение импульса: nRes = 100 * nSum / nAbsSum

  8. Генерация сигнала на основе nRes и полос TopBand, LowBand

Этот индикатор отфильтровывает небольшие колебания и извлекает информацию о динамике из основных тенденций.

Наконец, торговые сигналы генерируются, когда сигналы обоих индикаторов выстраиваются на длинный или короткий.

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

Стратегия объединяет преимущества двух различных типов показателей для улучшения качества сигналов:

  1. Стратегия 123 отмены ловит тенденции отмены в переломные моменты, избегая ловушки.

  2. Фильтрованный индикатор импульса фокусируется только на больших движениях, отфильтровывая шум и улавливая основные тенденции.

  3. Объединение их проверяет сигналы и уменьшает неправильные сделки, улучшая процент выигрыша.

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

К основным рискам этой стратегии относятся:

  1. Анализ одного временного рамок может пропустить более широкую тенденцию.

  2. Настройки статических параметров не могут адаптироваться к изменениям рынка.

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

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

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

Стратегия может быть оптимизирована в нескольких аспектах:

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

  2. Использование адаптивных параметров для корректировки показателей на основе рыночных условий.

  3. Оптимизируйте порог фильтра для уменьшения ложных сигналов.

  4. Добавление стоп-лосса к контрольной сумме потерь от одной сделки.

  5. Корректировать размер позиций для оптимизации эффективности использования капитала.

Заключение

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


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/09/2019
// This is combo strategies for get a cumulative signal. 
//
// 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.
//
// Second strategy
// This indicator plots a CMO which ignores price changes which are less 
// than a threshold value. CMO was developed by Tushar Chande. A scientist, 
// an inventor, and a respected trading system developer, Mr. Chande developed 
// the CMO to capture what he calls "pure momentum". For more definitive 
// information on the CMO and other indicators we recommend the book The New 
// Technical Trader by Tushar Chande and Stanley Kroll.
// The CMO is closely related to, yet unique from, other momentum oriented 
// indicators such as Relative Strength Index, Stochastic, Rate-of-Change, etc. 
// It is most closely related to Welles Wilder`s RSI, yet it differs in several ways:
// - It uses data for both up days and down days in the numerator, thereby directly 
// measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term extreme 
// movements in price are not hidden. Once calculated, smoothing can be applied to the 
// CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly see 
// changes in net momentum using the 0 level. The bounded scale also allows you to 
// conveniently compare values across different securities.
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

CMOfilt(Length,Filter, TopBand, LowBand) =>
    pos = 0
    xMom = close - close[1]
    xMomAbs = abs(close - close[1])
    xMomFilter = fFilter(xMom, xMomAbs, Filter)
    xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
    nSum = sum(xMomFilter, Length)
    nAbsSum = sum(xMomAbsFilter, Length)
    nRes =   100 * nSum / nAbsSum
    pos := iff(nRes > TopBand, 1,
	         iff(nRes < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & CMOfilt", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCMO = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCMOfilt = CMOfilt(LengthCMO,Filter, TopBand, LowBand)
pos = iff(posReversal123 == 1 and posCMOfilt == 1 , 1,
	   iff(posReversal123 == -1 and posCMOfilt == -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 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше