Количественная стратегия индекса разворота, интегрирующая сигналы двойного тренда


Дата создания: 2023-12-26 15:47:36 Последнее изменение: 2023-12-26 15:47:36
Копировать: 0 Количество просмотров: 536
1
Подписаться
1623
Подписчики

Количественная стратегия индекса разворота, интегрирующая сигналы двойного тренда

Обзор

Название стратегии Fusion Double Trend Signal Reversal Quantitative Strategy . Она объединяет два различных стратегических сигнала, один - краткосрочный обратный сигнал, основанный на случайных показателях, а другой - долгосрочный трендовый сигнал, основанный на количестве сделок, которые в сочетании образуют устойчивый входный сигнал.

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

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

Вторая часть использует индекс отрицательного объема сделок (NVI) для формирования долгосрочного трендового сигнала. Формула расчета NVI заключается в том, что, если объем сделок в день меньше, чем в предыдущий день, то суммируется уровень изменения цен на закрытие в этот день; если объем сделок в день больше или равен предыдущему дню, то сохраняется значение предыдущего дня.

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

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

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

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

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

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

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

Чтобы снизить эти риски, можно соответствующим образом скорректировать параметры показателя NVI или добавить стоп-лосс, чтобы контролировать одиночные потери.

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

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

  1. Оптимизация параметров показателя Стоха для улучшения обратного захвата.

  2. Оптимизация длительности цикла показателей NVI, повышение способности идентифицировать долгосрочные тенденции.

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

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-21 05:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/03/2021
// 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
// The theory behind the indexes is as follows: On days of increasing 
// volume, you can expect prices to increase, and on days of decreasing 
// volume, you can expect prices to decrease. This goes with the idea of 
// the market being in-gear and out-of-gear. Both PVI and NVI work in similar 
// fashions: Both are a running cumulative of values, which means you either 
// keep adding or subtracting price rate of change each day to the previous day`s 
// sum. In the case of PVI, if today`s volume is less than yesterday`s, don`t add 
// anything; if today`s volume is greater, then add today`s price rate of change. 
// For NVI, add today`s price rate of change only if today`s volume is less than 
// yesterday`s.
//
// 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


NVI(EMA_Len) =>
    pos = 0.0
    nRes = 0.0
    xROC = roc(close, EMA_Len)
    nRes := iff(volume < volume[1], nz(nRes[1], 0) + xROC, nz(nRes[1], 0))
    nResEMA = ema(nRes, EMA_Len)
    pos := iff(nRes > nResEMA, 1,
    	     iff(nRes < nResEMA, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Negative Volume Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Negative Volume Index ----")
EMA_Len = input(50, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posNVI = NVI(EMA_Len)
pos = iff(posReversal123 == 1 and posNVI == 1 , 1,
	   iff(posReversal123 == -1 and posNVI == -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 )