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

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

img

Обзор

Стратегия набора импульса в основном рассчитывает скорость изменения (ROC) в разные периоды, взвешивает и складывает их, чтобы сформировать комплексный индикатор импульса для оценки направления тренда.

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

Стратегия сначала рассчитывает показатели ROC за 10-дневный, 15-дневный, 20-дневный периоды и т. д. Затем сглаживает ROC и складывает их в соотношение 1-4 для получения формулы:

roc1 = (sma(roc(close,10),10)*1)
roc2 = (sma(roc(close,15),10)*2)  
...
osc = roc1+roc2+roc3+roc4+...

При этом roc1-roc12 представляет собой расчеты ROC за разные периоды от 10 до 530 дней.

Затем он сглаживает osc на SMA (по умолчанию 10) дней, чтобы получить oscsmt.

Сравняет OSC с OSCSMT, когда OSC пересекает OSCSMT как быстрый сигнал и входит в длинный.

Наконец, он может выбрать обратное направление торговли.

Преимущества

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

  2. Сравнение osc и oscsmt может уменьшить ненужную торговлю на боковых рынках.

  3. Настраиваемые параметры для регулирования периодов ROC и плавности SMA.

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

  5. Визуальные индикаторы делают точки покупки и продажи интуитивными.

Риски и оптимизации

  1. ROC очень чувствителен к внезапным аномалиям цен, которые могут генерировать неправильные сигналы.

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

  3. Торговля только на основе OSC и OSCSMT кроссворда.

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

Заключение

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


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter 08/08/2017
// Pring's Special K is a cyclical indicator created by Martin Pring. 
// His method combines short-term, intermediate and long-term velocity 
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Martin Pring's Special K Backtest", shorttitle="UCS_Pring_sK")
a = input(10, title = "Smooth" )
sources = input(title="Source",  defval=close)
reverse = input(false, title="Trade reverse")
roc1 = (sma(roc(sources,10),10)*1)
roc2 = (sma(roc(sources,15),10)*2)
roc3 = (sma(roc(sources,20),10)*3)
roc4 = (sma(roc(sources,30),15)*4)
roc5 = (sma(roc(sources,40),50)*1)
roc6 = (sma(roc(sources,65),65)*2)
roc7 = (sma(roc(sources,75),75)*3)
roc8 = (sma(roc(sources,100),100)*4)
roc9 = (sma(roc(sources,195),130)*1)
roc10 = (sma(roc(sources,265),130)*2)
roc11 = (sma(roc(sources,390),130)*3)
roc12 = (sma(roc(sources,530),195)*4)
osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
oscsmt = sma(osc,a)
pos = iff(osc > oscsmt, 1,
	     iff(osc < oscsmt, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(osc, color=blue, title="Martin Pring's Special K")
plot(oscsmt, color = red, title = "Smooth")
hline(0, title="Zero Line")

Больше