Estratégia da Santa Cruz


Data de criação: 2023-12-01 15:27:39 última modificação: 2023-12-01 15:27:39
cópia: 0 Cliques: 970
1
focar em
1619
Seguidores

Estratégia da Santa Cruz

A estratégia do Santo Graal é uma estratégia de negociação quantitativa que combina um sistema de linha dupla e um indicador ADX. Ela visa identificar a direção e a intensidade da tendência e negociar quando a tendência se reverte.

Princípio da estratégia

A estratégia usa simultaneamente a média móvel de 20 dias (EMA) e o indicador ADX para identificar o momento de entrada. Concretamente, ela emite um sinal de negociação em duas situações:

  1. Faça mais quando o ADX estiver abaixo de 30 (indicando uma tendência mais fraca) e o preço quebrar a EMA de 20 dias abaixo;

  2. Quando o ADX está acima de 30 (indicando uma forte tendência) e o preço quebra a EMA de 20 dias de cima, faça um curto prazo.

Como pode ser visto, a estratégia depende da força e direção da ADX para determinar a tendência e, em combinação com a resistência de suporte da média móvel, procura oportunidades de reversão.

Análise de vantagens

A maior vantagem da estratégia da Santa Cruz é que ela leva em consideração a direção e a intensidade da tendência ao mesmo tempo, evitando efetivamente as falsas rupturas e, assim, reduzindo a probabilidade de parada. Concretamente, a estratégia tem as seguintes vantagens:

  1. O uso de sistemas de dupla equação permite identificar as tendências de forma eficaz;
  2. A ADX é usada para avaliar a força da tendência, evitando correções e rupturas ineficazes.
  3. A combinação de inversão e negociação de tendências permite tanto a captura de tendências como a inversão em pontos de inflexão.
  4. As regras são claras, simples e fáceis de implementar.

Análise de Riscos

A estratégia da Santa Cruz também tem alguns riscos, que se concentram nos seguintes aspectos:

  1. O ADX, como um indicador auxiliar de julgamento, também pode emitir sinais errados;
  2. O cruzamento de duas linhas equidistantes não pode evitar totalmente os prejuízos causados pelas ondas de choque;
  3. A configuração de parâmetros (como o valor de alvo ADX, o período de linha média, etc.) pode causar sinais muito frequentes ou conservadores.

Para reduzir os riscos acima, pode-se ajustar a combinação de parâmetros para obter o melhor resultado, ou pode-se definir um stop loss para controlar a perda individual. Além disso, é necessário que a estratégia seja testada em diferentes variedades e períodos.

Direção de otimização

A estratégia da Santa Cruz tem muitas melhorias:

  1. Tente diferentes tipos de médias móveis, como médias móveis ponderadas.
  2. A linha de destino do valor ADX pode ser otimizada como um parâmetro;
  3. Pode testar diferentes parâmetros de ciclo, como 10 dias e 30 dias de EMA;
  4. Outros indicadores auxiliares, como o RSI, o Binance e outros, podem ser adicionados para confirmar os sinais de negociação.

Ajustar os parâmetros ou adicionar novos indicadores pode aumentar a taxa de lucro ou a taxa de vitória da estratégia. Mas qualquer otimização precisa de um feedback suficiente para garantir sua solidez.

Resumir

Em geral, a estratégia da Santa Cruz combina os benefícios da dupla linha de equilíbrio e do indicador ADX, usando regras de negociação claras para capturar a reversão de tendência. Ele promete ter bons resultados. Mas os comerciantes ainda precisam otimizar a combinação de parâmetros e as regras de parada para se adaptar a diferentes condições de mercado.

Código-fonte da estratégia
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("LAT Holy Grail v3", overlay=true)

/////////////TEST TIME ////////////////////////
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(15, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
//////////////////////////////////////////////////////////////////////

myema= ema(close, 20)
plot(myema, color=green, title="eMA", linewidth=3)



//longCondition = (crossover(close, myema)) //and adx3 < target
//if (longCondition)
    //strategy.entry("My Long Entry Id", strategy.long)

//shortCondition = (crossunder(close, myema)) //and adx3 > target
//if (shortCondition)
    //strategy.entry("My Short Entry Id", strategy.short)
    
    //////////////////////////////////////////////////////////
    ///////////////////////////////////////   DMI  ///////////////////////////////////////////////
len3 = input(14, minval=1, title="DI Length")                           /////////////////////
lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50)         ////////////////////
up3 = change(high)                                                      ///////////////////
down3 = -change(low)                                                    //////////////////
plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0)            /////////////////
minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0)     ////////////////
trur3 = rma(tr, len3)                                                   ///////////////
plus3 = fixnan(100 * rma(plusDM3, len3) / trur3)                        //////////////
minus3 = fixnan(100 * rma(minusDM3, len3) / trur3)                      /////////////
sum3 = plus3 + minus3                                                   ////////////
adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3) ///////////
//plot(plus3, color=green, style=circles, linewidth=2, title="+DI")     //////////
//plot(minus3, color=red, style=circles, linewidth=2, title="-DI")      /////////
plot(adx3, color=aqua, style=line, linewidth=3, title="ADX")            ////////
target = input(30, title=" ADX Target Line")                            ///////
plot(target, color=yellow, title="ADX Target Line")                     //////
/////////////////////////////////////////////////////////////////////////////////////////////////
                                                                                        
plot(hl2)


///////////////////////////////////////////////  eMA SIGNAL LINE   ///////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////// HOLY GRAIL STRATEGY ///////////////////////////////////////////////////////////////////

if (adx3 <= target) and crossover(close, myema)
    strategy.entry("HolyGrail", strategy.long, comment="Long")
 
if (adx3 >= target) and crossunder(close, myema)
    strategy.entry("HolyGrail", strategy.short, comment="Short")