Oscilador de preços derivado Estratégia quantitativa de negociação

Autora:ChaoZhang, Data: 2023-11-24 11:22:30
Tags:

Estratégia geral

A estratégia é denominada Detrended Price Oscillator Quantitative Trading Strategy. Ela gera sinais de negociação baseados no indicador Detrended Price Oscillator, que é uma estratégia típica de indicador técnico.

Estratégia lógica

O núcleo desta estratégia é o indicador Detrended Price Oscillator (DPO). O DPO é semelhante à média móvel, que pode filtrar tendências de longo prazo nos preços para tornar as flutuações cíclicas mais pronunciadas. Especificamente, o DPO compara os preços com sua média móvel simples de N dias. Quando o preço está acima da média móvel, o DPO é positivo; quando o preço está abaixo da média móvel, o DPO é negativo. Isso resulta em um oscilador flutuando em torno do eixo 0. Podemos usar o positivo / negativo do DPO para julgar a subida / queda dos preços em relação à tendência.

Esta estratégia define o parâmetro N para 14 e constrói um indicador de DPO de 14 dias. Quando o DPO é positivo, é emitido um sinal longo. Quando o DPO é negativo, é emitido um sinal curto.

Vantagens

  • O DPO é essencialmente um indicador de filtragem que pode identificar eficazmente os ciclos de preços a médio prazo, o que é muito útil para descobrir oportunidades comerciais relativamente ocultas.
  • O DPO tem uma construção simples e é fácil de compreender.
  • Em comparação com o preço em si, o padrão de indicadores do RPD é mais padronizado e mais fácil de julgar, tornando-o adequado para a formulação de regras.

Riscos

  • Tal como acontece com a maioria das estratégias de indicadores técnicos, a estratégia do DPO tende a gerar frequentemente sinais de negociação desnecessários, o que pode implicar deslizamentos desnecessários e custos de transacção.
  • O DPO é muito sensível ao parâmetro N. Seleções diferentes de parâmetros podem levar a uma eficácia estratégica muito diferente.
  • Nos mercados em tendência, o período de retenção das estratégias de DPO pode ser demasiado longo para impedir a perda a tempo, o que representa um certo risco de perda de sangue.

Para mitigar os riscos, a otimização pode ser considerada nos seguintes aspectos:

  1. Adicionar mecanismos de stop loss para controlar perdas individuais.

  2. Ajustar o valor do parâmetro N para encontrar o parâmetro ideal.

  3. Incorporar indicadores de tendência para evitar negociações contra tendências significativas.

Conclusão

Esta estratégia gera sinais de negociação com base no indicador Detrended Price Oscillator. Ao comparar com médias móveis, este indicador filtra tendências de longo prazo nos preços para tornar as características cíclicas dos preços mais pronunciadas. Isso ajuda a descobrir algumas oportunidades de negociação ocultas. Ao mesmo tempo, também enfrenta problemas como sensibilidade de parâmetros, filtragem, etc. Ainda há um grande espaço para melhoria de eficácia por meio de otimização contínua.


/*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")

Mais.