Estratégia de acompanhamento de tendência de cruzamento do canal BB e rompimento da média móvel SMA200


Data de criação: 2023-11-16 11:04:42 última modificação: 2023-11-16 11:04:42
cópia: 0 Cliques: 700
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendência de cruzamento do canal BB e rompimento da média móvel SMA200

Visão geral

A estratégia combina as bandas de Brin e as médias móveis, projetando um sistema de negociação que segue a tendência. Faça mais quando o preço quebra a banda de Brin e se move acima da SMA200, feche parcialmente quando o preço cai abaixo da banda de Brin e feche totalmente quando o preço cai abaixo da SMA200. A estratégia segue a tendência e pára o prejuízo em tempo hábil quando a tendência muda.

Princípio da estratégia

  1. Calcular a SMA200 Exponential Moving Average como um indicador de grande tendência
  2. Calcule a faixa de Brin, contendo a faixa superior, a faixa média, a faixa inferior, e preencha a cor como área de ganho
  3. Quando o Brin corre acima e abaixo do SMA200, indica que está em uma tendência ascendente
  4. Faça uma entrada extra quando o preço atravessar a linha média da faixa de Bryn para cima
  5. Quando os preços desceram abaixo do trajeto da faixa de Brin, alguns se estabilizaram
  6. Quando o preço cai abaixo do SMA200, indica uma reversão da tendência e a liquidação total
  7. Estabeleça um ponto de parada para evitar perdas excessivas
  8. Número de transações com base no capital da conta e na tolerância ao risco

A estratégia julga a existência de uma tendência com a premissa de que a faixa de Brin precisa estar completamente acima do SMA200 e só opta por uma entrada em sentido contrário em uma clara tendência ascendente. Quando uma tendência descendente se aproxima, o risco é controlado por meio de um stop loss de quota e um stop loss de posição total em pontos críticos.

Análise de vantagens

  1. Há uma clara tendência para julgar com base nas faixas de Bryn, e não com base em um único indicador.
  2. O SMA200 determina a direção da grande tendência e evita transações inúteis em situações de turbulência
  3. Parcialmente paralisada, a tendência segue-se
  4. Ponto-chave para parar os prejuízos em tempo hábil, evitando o aumento dos prejuízos
  5. Calcular o número de transações introduz conceitos de gestão de risco para evitar perdas individuais excessivas

Análise de Riscos

  1. Os sinais de transação gerados pela ruptura de Brin podem apresentar uma taxa de falsidade maior.
  2. Algumas configurações de ponto de parada precisam ser otimizadas para evitar uma parada prematura
  3. Ponto de paragem muito pequeno, pode ocorrer com muita frequência
  4. Parâmetros do ciclo SMA requerem otimização de testes para equilibrar a latência e a sensibilidade
  5. O método de cálculo do volume de transações pode precisar de ser otimizado para evitar pagamentos excessivos

Estes riscos podem ser reduzidos por meio de testes cuidadosos dos parâmetros da faixa de Bryn, otimização de estratégias de parada parcial, ajuste dos parâmetros do ciclo SMA e introdução de métodos mais científicos de gerenciamento de risco.

Direção de otimização

  1. Teste para otimizar os parâmetros da faixa de Bryn para reduzir a taxa de erro de sinal
  2. Pesquisar como definir um ponto de parada parcial mais adequado
  3. Otimização do parâmetro de teste do ciclo SMA
    1. Considerar a introdução de um stop loss adaptativo em vez de um stop loss fixo
  4. Estudo introduz quantificação da taxa de flutuação para um cálculo mais científico do volume de transação
  5. Retet para adição de custos de transação para simulação
  6. Considere a sua utilização em combinação com outros indicadores para aumentar a estabilidade estratégica

Resumir

A estratégia integra o canal de correia de Brin e o indicador de linha média SMA para projetar uma estratégia de acompanhamento de tendências mais completa. É mais confiável e possui uma maior capacidade de acompanhamento de tendências para determinar a existência de tendências.

Código-fonte da estratégia
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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="BB9_MA200_Strategy", overlay=true, pyramiding=1,     default_qty_type=strategy.cash,  initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 


var stopLossVal=0.00

//variables BEGIN
smaLength=input(200,title="MA Length")
bbLength=input(21,title="BB Length")  

bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")


stopLoss = input(title="Stop Loss%", defval=5, minval=1)

riskCapital = input(title="Risk % of capital  == Based on this trade size is claculated    numberOfShares = (AvailableCapital*risk/100) / stopLossPoints", defval=10, minval=1)


sma200=ema(close,smaLength)

plot(sma200, title="SMA 200", color=color.orange)


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

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , 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=color.teal, transp=95)


strategy.initial_capital = 50000

//Entry---

strategy.entry(id="LE", comment="LE capital="+tostring(strategy.initial_capital + strategy.netprofit ,"######.##"), qty=( (strategy.initial_capital + strategy.netprofit ) * riskCapital / 100)/(close*stopLoss/100) , long=true,  when=strategy.position_size<1 and upperBand>sma200 and lowerBand > sma200 and crossover(close, basis) )     //  // aroonOsc<0  //(strategy.initial_capital * 0.10)/close


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

//partial Exit
tpVal=strategy.position_size>1 ? strategy.position_avg_price * (1+(stopLoss/100) ) : 0.00
strategy.close(id="LE", comment="Partial points="+tostring(close - strategy.position_avg_price, "####.##"),  qty_percent=30 , when=abs(strategy.position_size)>=1 and close>tpVal and crossunder(lowerBand, sma200)   )   //close<ema55 and rsi5Val<20 //ema34<ema55


//close All on stop loss
//stoploss
stopLossVal:=   strategy.position_size>1 ? strategy.position_avg_price * (1-(stopLoss/100) ) : 0.00

strategy.close_all( comment="SL Exit points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and close < stopLossVal  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89//

strategy.close_all( comment="BB9 X SMA200 points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and  crossunder(basis, sma200)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89