Количественная стратегия торговли с использованием ценового осциллятора

Автор:Чао Чжан, Дата: 2023-11-24 11:22:30
Тэги:

Обзор стратегии

Стратегия называется Detrended Price Oscillator Quantitative Trading Strategy. Она генерирует торговые сигналы на основе индикатора Detrended Price Oscillator, который является типичной стратегией технического индикатора.

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

Ядром этой стратегии является индикатор Detrended Price Oscillator (DPO). DPO похож на скользящую среднюю, которая может отфильтровать долгосрочные тенденции в ценах, чтобы сделать циклические колебания более выраженными. В частности, DPO сравнивает цены с их N-дневными простыми скользящими средними. Когда цена выше скользящей средней, DPO является положительным; когда цена ниже скользящей средней, DPO является отрицательным. Это приводит к колебанию осциллятора вокруг 0 оси.

Эта стратегия устанавливает параметр N на 14 и создает 14-дневный индикатор DPO. Когда DPO положительный, выпускается длинный сигнал. Когда DPO отрицательный, выпускается короткий сигнал.

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

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

Риски

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

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

  1. Добавить механизмы остановки потерь для контроля одиночных потерь.

  2. Настроить значение параметра N, чтобы найти оптимальный параметр.

  3. Включайте индикаторы тенденций, чтобы избежать торговли против значительных тенденций.

Заключение

Эта стратегия генерирует торговые сигналы на основе индикатора Detrended Price Oscillator. Сравнивая с скользящими средними, этот индикатор отфильтровывает долгосрочные тенденции в ценах, чтобы сделать ценовые циклические характеристики более выраженными. Это помогает обнаружить некоторые скрытые торговые возможности. В то же время он также сталкивается с проблемами, такими как чувствительность параметров, фильтрация и т. Д.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-20 08:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/03/2017
// The Detrend Price Osc indicator is similar to a moving average, 
// in that it filters out trends in prices to more easily identify 
// cycles. The indicator is an attempt to define cycles in a trend 
// by drawing a moving average as a horizontal straight line and 
// placing prices along the line according to their relation to a 
// moving average. It provides a means of identifying underlying 
// cycles not apparent when the moving average is viewed within a 
// price chart. Cycles of a longer duration than the Length (number 
// of bars used to calculate the Detrend Price Osc) are effectively 
// filtered or removed by the oscillator.
//
// 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="Detrended Price Oscillator", shorttitle="DPO")
Length = input(14, minval=1)
Series = input(title="Price",  defval="close")
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=line)
xPrice = close
xsma = sma(xPrice, Length)
nRes = xPrice - xsma
pos = iff(nRes > 0, 1,
	     iff(nRes < 0, -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(nRes, color=red, title="Detrended Price Oscillator")

Больше