
A estratégia é otimizada com base na tradicional estratégia de inversão de suportes, principalmente através da computação do ATR e da configuração do fator de filtragem do ATR, para filtrar alguns suportes sem sentido e negociar apenas aqueles que realmente são importantes.
A lógica central da estratégia é calcular os principais pontos altos e baixos. Os principais passos para calcular os pontos altos são:
A lógica para calcular o ponto mais baixo é semelhante.
Depois de obter um ponto de apoio importante, faça um curto-circuito quando o preço quebra o ponto de apoio importante; quando o preço quebra o ponto de apoio importante, faça mais.
As principais vantagens desta estratégia são:
Os principais riscos desta estratégia são:
Para controlar os riscos acima mencionados, pode-se otimizar a partir dos seguintes aspectos:
A estratégia pode ser melhorada em várias direções:
Em combinação com outros indicadores para avaliar o estado da tendência do mercado, evitar que a reversão de negociação apareça em uma situação de tendência. Pode ser considerado a inclusão de indicadores como MACD, KDJ e outros.
Adicionar algoritmos de aprendizagem de máquina para otimizar automaticamente os parâmetros. Pode usar algoritmos genéticos, florestas aleatórias e outros métodos para encontrar a combinação ideal de parâmetros.
Adicionar dados quantitativos para treinar e encontrar o melhor intervalo de ATR. Adicionar dados históricos pode melhorar a precisão da seleção de parâmetros.
Pode-se considerar a utilização em combinação com outras estratégias, combinando os benefícios de diferentes tipos de estratégias. Por exemplo, a combinação com a estratégia de acompanhamento de tendências, a reversão na liquidação e a tendência na tendência.
Esta estratégia de reversão de pontos importantes pode aumentar o nível de lucro da estratégia, filtrando as pequenas flutuações sem sentido através da computação do ATR e do método de configuração do fator de filtragem. A negociação de reversão apenas em pontos importantes também aumenta a dificuldade de otimização de certos parâmetros.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)
// Inputs
leftBars = input(4, title = 'PP Left Bars')
rightBars = input(2, title = 'PP Right Bars')
atr_length = input(14, title = 'ATR Length')
atr_mult = input(0.1, title = 'ATR Mult')
// Pivot High Significant Function
pivotHighSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (high[right] < high[right+i] + atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (high[right] < high[i] + atr * atr_mult)
pp_ok := false
pp_ok ? high[right] : na
// Pivot Low Significant Function
pivotLowSig(left, right) =>
pp_ok = true
atr = atr(atr_length)
for i = 1 to left
if (low[right] > low[right+i] - atr * atr_mult)
pp_ok := false
for i = 0 to right-1
if (low[right] > low[i] - atr * atr_mult)
pp_ok := false
pp_ok ? low[right] : na
swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
if (le)
strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
if (se)
strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)