Esta estratégia baseia-se em DiNapoli para oscilador de tendência para o julgamento de sinais de negociação. O indicador identifica oportunidades de reversão através da diferença entre o preço e a média móvel, refletindo as áreas de supercompra e supervenda do preço. A estratégia usa a sua ruptura de um determinado limite como sinal de negociação.
A estratégia inclui principalmente os seguintes elementos:
Média móvel: calcula a média de um determinado período para determinar a tendência dos preços.
Indicador de diferença de valor: preço menos a diferença da linha média, formando um indicador de oscilação.
Linha de limiar: gera um sinal de negociação quando o indicador de diferença ultrapassa o limiar.
Faça mais sinais: Faça mais quando o valor de diferença ultrapassa a linha de limite.
Semáforo de vazio: vazio ao atravessar a linha de limite abaixo do valor de diferença.
Opção de reversão: O sinal de mais/não pode ser reversível como sinal de negociação.
A estratégia capta oportunidades de reversão de curto prazo, julgando desvios entre o preço e a tendência.
A estratégia tem as seguintes vantagens em relação a outras estratégias de inversão:
O princípio é simples, intuitivo e fácil de entender, e a implementação é fácil.
Parâmetros de menor quantidade, otimizar a facilidade de retrospecção.
Parâmetros podem ser ajustados manualmente para diferentes períodos.
A oferta de opções reversíveis, com flexibilidade para diferentes mercados.
O risco pode ser controlado através de um método de prevenção de danos definido.
A retração é relativamente pequena e pode reduzir a oscilação da curva por meio de ajustes de parâmetros.
Pode introduzir aprendizado de máquina para otimização de parâmetros.
Em geral, o equilíbrio entre riscos e benefícios é adequado para operações de curto prazo.
Mas a estratégia também apresenta os principais riscos:
Excesso de dependência de otimização de parâmetros, com risco de sobre-ajuste.
As médias móveis e os indicadores estão atrasados.
Falta de verificação de variáveis auxiliares além do preço.
O efeito da escolha do momento pode ser diminuído por mudanças no ambiente de mercado.
O Alpha é difícil de manter a longo prazo e precisa de ajustes frequentes.
A taxa de retração dos lucros deve ser observada para evitar que a curva fique muito curta.
A frequência de transações é alta e afeta os custos de transação.
Verificar a estabilidade dos parâmetros em vários mercados.
Com base na análise acima, as direções de otimização da estratégia incluem:
Teste a eficácia de diferentes parâmetros de linha média.
Adição de índice de transação para verificação.
Configure o Stop Loss Stop para controlar o risco.
Avaliação da robustez multicíclica de várias variedades.
Re-verificação contínua através de retrocesso.
A mudança na gestão de posições e a redução da frequência de negociação.
A introdução do aprendizado de máquina gerou melhores parâmetros.
Otimizar a estratégia de gestão de fundos em geral.
Estratégias de repetição contínua para se adaptar às mudanças do mercado.
A estratégia em geral é uma idéia de estratégia de inversão mais simples, que pode ser obtida com o ajuste de parâmetros. Mas qualquer estratégia precisa evitar a sobre-adaptação, para obter lucro estável a longo prazo. Isso requer constantemente retetamento e otimização, com melhorias na estratégia de mais dimensões.
/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version = 2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 05/12/2016
// DiNapoli Detrended Oscillator Strategy
// 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="DiNapoli Detrended Oscillator Strategy Backtest")
Length = input(14, minval=1)
Trigger = input(0)
reverse = input(true, title="Trade reverse")
hline(Trigger, color=gray, linestyle=line)
xSMA = sma(close, Length)
nRes = close - xSMA
pos = iff(nRes > Trigger, 1,
iff(nRes <= Trigger, -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)
plot(nRes, color=blue, title="DiNapoli")
barcolor(possig == -1 ? red: possig == 1 ? green : blue )