Estratégia de rompimento de canal de média móvel dupla SMA


Data de criação: 2023-10-23 17:08:51 última modificação: 2023-10-23 17:08:51
cópia: 0 Cliques: 604
1
focar em
1617
Seguidores

Estratégia de rompimento de canal de média móvel dupla SMA

Esta estratégia é baseada no princípio da ruptura de canal e usa a interseção de equilíbrio como sinal de saída, e aplica-se a negociação de futuros e índices.

Princípio da estratégia

  1. Calcular os preços máximos e mínimos de um determinado período e construir um canal ascendente e descendente

  2. Faça mais quando o preço atravessa o canal superior; faça menos quando o preço atravessa o canal inferior.

  3. Calcule a linha média entre os dois SMAs de período rápido e período lento.

  4. Ao fazer o over, o SMA de curto prazo passa pelo SMA de curto prazo, e o over é eliminado; ao fazer o short, o SMA de curto prazo passa pelo SMA de curto prazo, e o short é eliminado.

Análise de vantagens

  1. A combinação de canais e linhas gera uma maior probabilidade de lucro.

  2. Utilize o canal para julgar a rotação de um determinado período de Ankel, e use a linha de equilíbrio para julgar a tendência de fim.

  3. A filtragem uniforme evita o whipsaw e reduz as transações desnecessárias.

  4. Os parâmetros de alcance do canal são ajustáveis para adaptar-se a diferentes períodos e mercados de taxa de flutuação.

Análise de Riscos

  1. A configuração errada do perímetro do corredor pode levar a oportunidades de ruptura perdidas ou a mais falhas.

  2. O parâmetro da linha média está mal definido, podendo ocasionar uma saída prematura ou tardia.

  3. A gestão racional da posição deve ser considerada para evitar perdas individuais excessivas.

  4. A partir daí, é preciso ter em conta a eficácia da ruptura, para evitar a perseguição.

Direção de otimização

  1. Testar a rentabilidade e a taxa de vitória da estratégia sob diferentes parâmetros, otimizar o alcance do canal e o ciclo da linha média.

  2. Combinação de indicadores de tendência com filtros de sinais de ruptura para aumentar a taxa de sucesso da ruptura.

  3. Aumentar os mecanismos de gestão de posições, como a quota fixa, o martingale, etc.

  4. Aumentar o mecanismo de suspensão de perdas para controlar as perdas individuais.

Resumir

Esta estratégia utiliza o canal para julgar a rotação do mercado e pontos quentes, a linha de equilíbrio para julgar o fim da tendência, a definição de parâmetros razoáveis pode obter ganhos estáveis em mercados fortes. Mas é necessário evitar as perdas que o whipsaw pode trazer, ao mesmo tempo em que otimizar a posição e o gerenciamento de risco é muito importante. A estabilidade da estratégia pode ser aumentada ainda mais através do ajuste de parâmetros, filtragem de sinais e uso de meios de controle de risco.

Código-fonte da estratégia
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:00
period: 1m
basePeriod: 1m
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/
// © anshuanshu333

//@version=4

// strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000)
length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7)
     
fastSMA = sma(close,9)
slowSMA = sma(close,21)

upBound = highest(high, length)
downBound = lowest(low, length)

boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open)
boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open)

u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1)
l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1)
plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2)
plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1)
fill(u,l, transp=95)
plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1)

     
if (boundLongEntry )
    strategy.entry("LE", long = true)
    
if (boundShortEntry)
    strategy.entry("SE", long = false)
    
SmaLongExit = crossunder(fastSMA,slowSMA)
SmaShortExit = crossover(fastSMA,slowSMA)

    
//Close TRades   
if (strategy.position_size > 0)
    strategy.close(id="LE",when= SmaLongExit)
if (strategy.position_size < 0)
    strategy.close(id="SE",when= SmaShortExit)