Esta estratégia é baseada na seleção do usuário de uma EMA e canal percentual definido. Ele vai longo quando o preço está abaixo da faixa superior e vai curto quando o preço está acima da faixa inferior. Se o preço começar a tendência e se mover fora do canal, todas as posições são fechadas para evitar perdas.
Para os mercados de tendência, deve ser utilizado o canal
Calcular a EMA de 200 períodos como a EMA de base.
Calcular as faixas superior e inferior com base na percentagem definida pelo utilizador: Banda superior = EMA * (1 + Porcentagem) Margem inferior = EMA * (1 - Porcentagem)
Calcular as bandas de Bollinger de 20 períodos para representar o intervalo do canal.
Vá longo quando o preço de fechamento cruza acima da faixa de Bollinger inferior de baixo. Vá curto quando o preço de fechamento cruza abaixo da faixa de Bollinger superior de cima.
Para evitar perdas excessivas, utilizar o ATR para calcular o stop loss.
Se o preço se mover para fora da faixa de canais percentual definida, feche todas as posições para evitar perdas adicionais.
A linha de base da EMA ajuda a captar melhor os pontos de inversão da tendência.
O canal percentual define um intervalo de negociação razoável para evitar o excesso de negociação.
As Bandas de Bollinger fornecem níveis de suporte e resistência para facilitar o tempo de entrada.
O ATR trailing stop define dinamicamente o stop loss para controlar efetivamente o risco por transação.
Fechar todas as posições quando o preço ultrapassa o canal controla rapidamente as perdas.
Os parâmetros personalizáveis são flexíveis para diferentes condições de mercado.
Uma faixa de canais que seja demasiado ampla pode perder tendências ou atrasar a suspensão de perdas.
Uma faixa de canais demasiado estreita pode causar excesso de negociação e aumentar os custos de transacção.
Configurações de parâmetros de Bollinger Bands deficientes podem causar oportunidades de negociação perdidas.
Um limiar de stop loss demasiado frouxo pode conduzir a perdas excessivas por transacção.
Os parâmetros devem ser otimizados para encontrar a faixa de negociação ideal.
Teste diferentes períodos de EMA para encontrar a média móvel mais adequada.
Otimizar os parâmetros percentuais do canal para determinar a gama de canais ideal.
Ajustar o período das bandas de Bollinger para melhor captar a volatilidade.
Ajustar o período ATR e o multiplicador para refinar ainda mais a estratégia de stop loss.
Teste long-only acima da EMA ou short-only abaixo das condições da EMA e veja se melhora a taxa de vitória.
Incorporar indicadores de tendência para determinar se é necessária uma saída antecipada.
Esta estratégia combina os pontos fortes das médias móveis, canais, volatilidade e muito mais para criar um sistema de negociação de faixa relativamente estável. A chave é encontrar as configurações de parâmetros mais adequadas para cada mercado específico para equilibrar risco e recompensa. Melhorias futuras podem continuar a otimizar regras e parâmetros, ou combinando com estratégias de tendência.
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="[mdeacey] EMA% Channel + BB Range Strategy", shorttitle="[mdeacey] EMA% Channel + BB Range Strategy", overlay=true) //EMA 200 len = input(title="EMA Length", type=input.integer, defval=200) srce = input(title="EMA Source", type=input.source, defval=close) ema1= ema(srce,len) percent = input(title="Channel Percentage (%)", type=input.float, defval= 1) valuee = (percent*ema1)/100 upperbande = ema1 + valuee lowerbande = ema1 - valuee plot(ema1, title='EMA200', color=color.gray, linewidth=1, style=plot.style_line ) plot(upperbande, title='EMA Upper Band', color=color.gray, linewidth=1, style=plot.style_line ) plot(lowerbande, title='EMA Lower Band', color=color.gray, linewidth=1, style=plot.style_line ) length = input(20, minval=2) src = input(close, title="Close price") mult = input(2.0, minval=0.001, maxval=50) MA2 = sma(src, length) dev = mult * stdev(src, length) upper = MA2 + dev lower = MA2 - dev signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white barcolor(color=signalColor) upperBand = plot(upper, color=color.gray, linewidth=1) lowerBand = plot(lower, color=color.gray, linewidth=1) fill(upperBand, lowerBand,color=color.gray) strategy.entry("Long",true,when = crossover(close,lower) and close <upperbande and close>lowerbande) strategy.close("Long",when = crossunder(close,lowerbande)) strategy.entry("Short",false,when = crossunder(close,upper) and close <upperbande and close>lowerbande) strategy.close("Short",when = crossover(close,upperbande)) //Inputs atrPeriod = input(defval=14, title="ATR Period",group='ATR Settings', type=input.integer) // Adjust this to change the ATR calculation length multiplierPeriod = input(defval=1.75, title="ATR Multiplier Period",group='ATR Settings', type=input.float)// Adjust this to change the distance between your candles and the line //ATR Calculation pine_rma(x, y) => alpha = y sum = 0.0 sum := (x + (alpha - 1) * nz(sum[1])) / alpha true_range() => max(high - low, max(abs(high - close[1]), abs(low - close[1]))) //Long SL plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1) // Short SL plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1) strategy.exit("Exit Long","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod) ) strategy.exit("eExit Short","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod) )