Estratégia de quebra da média móvel Golden Cross através da banda de Bollinger


Data de criação: 2023-11-21 12:01:25 última modificação: 2023-11-21 12:01:25
cópia: 0 Cliques: 820
1
focar em
1617
Seguidores

Estratégia de quebra da média móvel Golden Cross através da banda de Bollinger

Visão geral

Esta estratégia combina o indicador de média móvel, o indicador de faixa de Brin e o indicador de preço médio ponderado por volume de transação, para julgar a entrada em condições de formação de golden forks e de atravessamento de longas médias em linhas médias curtas. A estratégia também usa o canal de faixa de Brin, apenas considerando a entrada quando o preço toca a faixa de Brin, evitando a entrada frequente em turbulências de mercado.

Princípio da estratégia

A estratégia baseia-se em um indicador de linha média para determinar a direção da tendência, e usa o Brin para determinar os pontos de compra em intervalos de flutuação. Concretamente, a estratégia contém as seguintes regras-chave:

  1. Usando o 50 dias de EMA e 200 dias de EMA para construir um sistema de julgamento de Gold Forks, que é considerado em uma tendência ascendente de várias cabeças quando atravessa uma média móvel lenta sobre uma média móvel rápida;

  2. Quando os preços são maiores do que o VWAP, considera-se que está em fase de aumento dos preços, o que favorece a construção de mais posições;

  3. Quando o preço está apenas tocando ou quebrando o trajeto de descida de Brin, isso indica que o preço pode estar perto do ponto de rebote, com uma melhor chance;

  4. Depois de entrar em posições de vários titulares, o preço foi excedido quando Brin entrou no caminho certo e a barra foi retirada.

A combinação dessas regras permite que a estratégia escolha o ponto de compra apropriado e estabeleça um stop loss para garantir o lucro em um mercado de alta.

Vantagens estratégicas

  • O uso de um sistema de avaliação de forcas de ouro para determinar a direção da grande tendência e evitar pequenos ganhos e perdas em situações de turbulência;

  • O indicador VWAP permite determinar a direção das flutuações dos preços, permitindo uma escolha mais precisa dos pontos de compra;

  • Os indicadores de correia Brin determinam os pontos de compra, tornando a estratégia mais robusta, ao mesmo tempo em que estabelecem um stop-loss para bloquear os ganhos;

  • Os indicadores são mutuamente verificáveis, o que torna o julgamento estratégico mais preciso e confiável.

Riscos estratégicos e soluções

  • O sistema de julgamento Gold Forks pode emitir falsos sinais, o comprimento do ciclo de equilíbrio deve ser apropriadamente reduzido, e a verificação de outros indicadores deve ser complementada;

  • A configuração inadequada dos parâmetros da faixa de Bryn também pode fazer com que a estratégia não seja válida, e os parâmetros do ciclo de Bryn e do desvio padrão devem ser ajustados;

  • A configuração do ponto de parada é muito frouxa e não permite o controle efetivo dos prejuízos. O limite de parada deve ser apropriadamente apertado para garantir que o risco seja controlado.

Direção de otimização da estratégia

  • Otimizar combinações de equilíbrio de golden forks, testar diferentes parâmetros de equilíbrio e encontrar o melhor parâmetro;

  • Testar os parâmetros das faixas de Bryn em diferentes períodos para encontrar a melhor combinação de amplitude e dispersação;

  • Testar e otimizar o limite de perda para que seja possível controlar o risco de forma eficaz e não seja muito fácil de ser acionado.

Resumir

Esta estratégia utiliza o sistema de linha uniforme, a faixa de brinquedo e o indicador VWAP para avaliar o momento de entrada, equilibrando a oportunidade de descoberta e o risco de controle. Com a otimização de parâmetros subsequentes e a modificação de regras, espera-se que as oportunidades de continuidade no setor e no mercado sejam bloqueadas.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
strategy(title="VWAP and BB strategy [$$]", overlay=true,pyramiding=2, default_qty_value=1, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1300","0500-1400")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate 


is_price_dipped_bb(pds,source1) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  close[i]<source1) ? true : false
        if t_bbDipped==true
            break
        else
            continue
            
    t_bbDipped


is_bb_per_dipped(pds,bbrSrc) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  bbrSrc[i]<=0) ? true : false
        if t_bbDipped==true
            break
        else
            continue
            
    t_bbDipped
    

// variables  BEGIN
shortEMA = input(50, title="fast EMA", minval=1)
longEMA = input(200, title="slow EMA", minval=1)

//BB

smaLength = input(7, title="BB SMA Length", minval=1)
bbsrc = input(close, title="BB Source")

strategyCalcOption = input(title="strategy to use", type=input.string, options=["BB", "BB_percentageB"],      defval="BB")



//addOnDivergence = input(true,title="Add to existing on Divergence")
//exitOption = input(title="exit on RSI or BB", type=input.string, options=["RSI", "BB"],      defval="BB")

//bbSource = input(title="BB  source", type=input.string, options=["close", "vwap"],      defval="close")
     
//vwap_res = input(title="VWAP Resolution", type=input.resolution, defval="session")
stopLoss = input(title="Stop Loss%", defval=1, minval=1)

//variables  END

longEMAval= ema(close, longEMA)
shortEMAval= ema(close, shortEMA)
ema200val = ema(close, 200)


vwapVal=vwap(close)



// Drawings

//plot emas
plot(shortEMAval, color = color.green, linewidth = 1, transp=0)
plot(longEMAval, color = color.orange, linewidth = 1, transp=0)
plot(ema200val, color = color.purple, linewidth = 2, style=plot.style_line ,transp=0)



//bollinger calculation 
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(bbsrc, smaLength)
dev = mult * stdev(bbsrc, smaLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

bbr = (bbsrc - lowerBand)/(upperBand - lowerBand) 
//bollinger calculation 

//plot bb
//plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)


plot(vwapVal, color = color.purple, linewidth = 2, transp=0)


// Colour background

//barcolor(shortEMAval>longEMAval and close<=lowerBand ? color.yellow: na)
  

//longCondition=  shortEMAval > longEMAval and  close>open and  close>vwapVal
longCondition=  ( shortEMAval > longEMAval  and close>open and close>vwapVal and close<upperBand ) //and time_cond //     and  close>=vwapVal 



//Entry
strategy.entry(id="long", comment="VB LE" , long=true,  when= longCondition and ( strategyCalcOption=="BB"? is_price_dipped_bb(10,lowerBand) : is_bb_per_dipped(10,bbr)  )   and strategy.position_size<1 )   //is_price_dipped_bb(10,lowerBand))  //and strategy.position_size<1       is_bb_per_dipped(15,bbr) 


//add to the existing position
strategy.entry(id="long", comment="Add" , long=true,  when=strategy.position_size>=1 and close<strategy.position_avg_price and close>vwapVal) //and time_cond)

barcolor(strategy.position_size>=1  ? color.blue: na)



strategy.close(id="long", comment="TP Exit",   when=crossover(close,upperBand) )

//stoploss
stopLossVal =   strategy.position_avg_price * (1-(stopLoss*0.01) )
//strategy.close(id="long", comment="SL Exit",   when= close < stopLossVal)

//strategy.risk.max_intraday_loss(stopLoss, strategy.percent_of_equity)