Estratégia SMA baseada no indicador de reversão em forma de V


Data de criação: 2024-02-18 15:04:34 última modificação: 2024-02-18 15:04:34
cópia: 0 Cliques: 351
1
focar em
1166
Seguidores

Estratégia SMA baseada no indicador de reversão em forma de V

Visão geral

A estratégia SMA de inversão baseada em V-tipo é composta pela diferença absoluta entre o preço máximo de 14 dias e o preço mínimo do dia anterior e o preço mínimo de 14 dias e o preço máximo do dia anterior, e suas médias móveis simples de 14 dias, respectivamente, formando as curvas VI+ e VI- . Quando o VI+ é atravessado pelo VI- é um sinal de múltiplas cabeças . Quando o VI- é atravessado pelo VI+ é um sinal de cabeças vazias .

Princípio da estratégia

Os indicadores centrais da estratégia são VI+ e VI- ◄ em que VI+ reflete a força multi-cabeça, VI- reflete a força de cabeça vazia ◄ e a fórmula de cálculo é a seguinte:

VMP = SUM(ABS(HIGH - LOW[1]),14)
VMM = SUM(ABS(LOW - HIGH[1]),14)  
STR = SUM(ATR(1),14)
VI+ = VMP/STR  
VI- = VMM/STR

Para remover a oscilação da curva, calcula-se uma média móvel simples de 14 dias para VI+ e VI- respectivamente, obtendo SMA ((VI+) e SMA ((VI-)) que produzem um sinal de cabeçalho quando atravessam SMA ((VI-) em cima de SMA ((VI+); um sinal de cabeçalho quando atravessam SMA ((VI+) em baixo de SMA ((VI-).

Além disso, a estratégia também combina o estado ascendente e descendente de VI+ e VI- para julgar a tendência, para que a filtragem seja feita, apenas fazendo mais quando a tendência é descendente e fazendo vazio quando a tendência é ascendente.

Análise de vantagens

Esta estratégia combina o estado da tendência com o indicador VI do Gold Fork Dead Fork, que pode filtrar eficazmente os sinais falsos e aumentar a probabilidade de lucro. Comparado com a simples estratégia de média móvel, o sinal de ruptura é mais confiável.

Análise de Riscos

A estratégia tem dois riscos principais:

  1. O indicador VI pode produzir sinais enganosos em certos períodos. É necessário combinar filtragem de tendência e stop loss para controlar o risco.

  2. Os mercados com taxas de transação mais elevadas e custos de deslizamento mais elevados não são adequados para a estratégia, reduzindo significativamente a margem de lucro.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Optimizar os parâmetros de ciclo do indicador VI, procurando a melhor combinação de parâmetros.

  2. O uso de métodos de aprendizagem de máquina para identificar automaticamente sinais errôneos, melhorando a qualidade do sinal.

  3. Combinação de Stop Losses e Gestão de Fundos para otimizar o mecanismo de saída e controlar a perda de uma única transação.

  4. Optimizar a seleção de variedades de transação, escolher mercados com custos de transação mais baixos.

Resumir

A estratégia SMA baseada em indicadores de inversão de tipo V, que determina o momento de compra e venda por meio do cálculo dos indicadores VI+ e VI- em combinação com o estado da tendência, é uma estratégia de acompanhamento de tendências mais confiável. A vantagem da estratégia é a boa qualidade do sinal e a filtragem eficaz do ruído.

Código-fonte da estratégia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author=SIDD
//Sidd-Vortex strategy is using Vortex formula  to generate 4 signals Bullish1 Bullish2 and Bearish1 Bearish2.

//Bullish1 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIM is falling from previous bar smooth VIM

//Bullish2 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIP is rising from previous bar smooth VIP

//Bearish1 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIP is falling from previous bar smooth VIP

//Bearish2 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIM is rising from previous bar smooth VIM

//This strategy can be converted into study un-commenting the plotshape and 15th line strategy replace with study and overlay=false

strategy(title = "SIDD-Vortex", shorttitle="SIDD-VORTEX", format=format.price, precision=4,overlay=true)
period_ = input(14, title="Period", minval=2)
len = input(14, minval=1, title="WMA Length")

VMP = sum( abs( high - low[1]), period_ ) // sum of absolute current high and previous low with 14 period default
VMM = sum( abs( low - high[1]), period_ ) // sum of absolute current low and previous high with 14 period default
STR = sum( atr(1), period_ )  //sum of daily atr for 14 days
VIP = VMP / STR
VIM = VMM / STR

simpleMAVIP=wma(VIP, len) 
smmaVIP = 0.0
smmaVIP := na(smmaVIP[1]) ? simpleMAVIP : (smmaVIP[1] * (len - 1) + VIP) / len // finding the Smoothing average 

simpleMAVIM=wma(VIM, len) 
smmaVIM = 0.0
smmaVIM := na(smmaVIM[1]) ? simpleMAVIM : (smmaVIM[1] * (len - 1) + VIM) / len // finding the Smoothing average 


risingVIP = rising(smmaVIP, 1)
fallingVIP = falling(smmaVIP, 1)

lineColorVIP = smmaVIP > 0.95 and risingVIP  ? color.lime : smmaVIP > 0.95 ? #d65240 : smmaVIP < 0.95 and fallingVIP ? color.red : color.olive

risingVIM = rising(VIM, 1)
fallingVIM = falling(VIM, 1)

lineColorVIM = smmaVIM > 0.95 and risingVIM  ? color.red : smmaVIM > 0.95 ? color.olive : smmaVIM < 0.95 and fallingVIM ? color.lime : #d65240

plot(VIP, title="VI +", color=lineColorVIP)
plot(VIM, title="VI -", color=lineColorVIM) 

longCondition = crossover(smmaVIP,smmaVIM)
shortCondition = crossover(smmaVIM,smmaVIP)


if (longCondition and fallingVIM)
    strategy.entry("Bullish1", strategy.long)
if (shortCondition and fallingVIP)
    strategy.entry("Bearish1", strategy.short)

if (longCondition and risingVIP)
    strategy.entry("Bullish2", strategy.long)
if (shortCondition and risingVIM)
    strategy.entry("Bearish2", strategy.short)
    
//plotshape(longCondition and fallingVIM, color=color.lime, location=location.belowbar, style=shape.triangleup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(longCondition and risingVIP, color=color.lime, location=location.belowbar, style=shape.labelup,size= size.large,text="Bullish",offset=0,textcolor=color.white)
//plotshape(Diff > 0 and direction>0, color=color.lime, location=location.belowbar, style=shape.arrowup,size= size.normal,offset=0)
    
//plotshape(shortCondition and fallingVIP  , color=color.red, location=location.abovebar, style=shape.triangledown, size= size.large,text="Bearish",offset=0,textcolor=color.white)
//plotshape( shortCondition and risingVIM  , color=color.red, location=location.abovebar, style=shape.labeldown, size= size.large,text="Bearish",offset=0,textcolor=color.white)



//band1 = hline(1.0  , title="Upper Line", linestyle=hline.style_dashed, linewidth=3, color=color.red)
//band0 = hline(0.5, title="Lower Line", linestyle=hline.style_dashed, linewidth=3, color=color.lime)
//fill(band1, band0, color=color.purple, transp=70)