Esta estratégia utiliza o indicador do Oscilador de Preço Absoluto (APO) para gerar sinais de negociação e seguir tendências.
A APO consiste numa EMA mais rápida e numa EMA mais lenta, tendo em conta a diferença entre as duas.
Quando o APO cruzar acima da zona de compra (padrão 3), vá longo. Quando cruzar abaixo da zona de venda (padrão -3), vá curto.
Opção para reverter sinais - cruzar acima vende, cruzar abaixo compra.
A curva mostra o impulso do preço, pode encontrar reversões na divergência.
Esta é uma estratégia de seguimento de tendências, usando APO para determinar a direção da tendência para sinais longos / curtos sustentados.
Implementação simples utilizando a combinação básica de médias móveis.
A APO mede o ímpeto e a direcção dos preços.
Os parâmetros por defeito geram sinais sustentados a médio prazo, evitando excesso de negociação.
Pode detectar inversões de tendência com base na divergência preço/indicador.
São propensos a sinais falsos e a falhas em mercados variados.
Os sinais de atraso podem perder reversões rápidas.
Sem stop loss ou dimensionamento de posição, gestão incompleta de riscos.
Atenuantes:
Otimizar os parâmetros e testar diferentes combinações por instrumento.
Adicione filtros para evitar trocas em condições agitadas.
Implementar um stop loss, por exemplo, trailing stop.
Optimização de parâmetros para cada instrumento para encontrar pares ideais.
Filtros adicionais sobre a ação do preço ou o volume para reduzir os falsos sinais.
A classificação dinâmica das posições baseada na volatilidade ou na percentagem da conta.
Optimizado para tirar lucro, como trailing stop para seguir tendências.
ML para avaliar a probabilidade de êxito dos sinais de divergência.
Este sistema de cruzamento EMA usando APO fornece uma base sólida para seguir tendências. Com otimizações em parâmetros, gerenciamento de risco e filtros, pode se tornar uma estratégia quantitativa eficaz. O conceito central é simples e robusto para desenvolvimento adicional.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 20/09/2018 // The Absolute Price Oscillator displays the difference between two exponential // moving averages of a security's price and is expressed as an absolute value. // How this indicator works // APO crossing above zero is considered bullish, while crossing below zero is bearish. // A positive indicator value indicates an upward movement, while negative readings // signal a downward trend. // Divergences form when a new high or low in price is not confirmed by the Absolute Price // Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO // forms a higher low. This indicates less downward momentum that could foreshadow a bullish // reversal. A bearish divergence forms when price makes a higher high, but the APO forms a // lower high. This shows less upward momentum that could foreshadow a bearish reversal. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="Absolute Price Oscillator (APO) Backtest 2.0", shorttitle="APO") LengthShortEMA = input(10, minval=1) LengthLongEMA = input(20, minval=1) BuyZone = input(3, step = 0.01) SellZone = input(-3, step = 0.01) reverse = input(false, title="Trade reverse") hline(BuyZone, color=green, linestyle=line) hline(SellZone, color=red, linestyle=line) hline(0, color=gray, linestyle=line) xPrice = close xShortEMA = ema(xPrice, LengthShortEMA) xLongEMA = ema(xPrice, LengthLongEMA) xAPO = xShortEMA - xLongEMA pos = iff(xAPO > BuyZone, 1, iff(xAPO < SellZone, -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(xAPO, color=blue, title="APO")