Estratégia SMA de ruptura do canal

Autora:ChaoZhang, Data: 2023-10-23 17:08:51
Tags:

img

Resumo

Esta estratégia baseia-se na ruptura do canal e usa o cruzamento da média móvel como sinal de saída.

Estratégia lógica

  1. Calcular o máximo máximo e o mínimo mínimo em determinados períodos para construir o canal superior e inferior.

  2. Ir longo quando o preço quebra acima do canal superior; ir curto quando o preço quebra abaixo do canal inferior.

  3. Calcule linhas SMA rápidas e lentas.

  4. Se longo, feche longo quando a SMA rápida cruza abaixo da SMA lenta; Se curto, feche curto quando a SMA rápida cruza acima da SMA lenta.

Análise das vantagens

  1. A combinação do canal e do sistema de médias móveis pode melhorar a rentabilidade.

  2. O canal julga a rotação e a SMA julga o esgotamento da tendência.

  3. O filtro de SMA evita as fendas e reduz os negócios desnecessários.

  4. A gama de canais ajustável se adapta a diferentes períodos e volatilidade.

Análise de riscos

  1. Uma gama de canais inadequada pode perder a fuga ou gerar uma fuga falsa.

  2. Os parâmetros de SMA incorretos podem sair mais cedo ou mais tarde.

  3. Precisa de um dimensionamento razoável da posição para limitar perdas individuais.

  4. Fique atento a uma fuga válida, evite perseguir alto/vendendo baixo.

Optimização

  1. Parâmetros de ensaio para otimizar a gama de canais e os períodos de SMA.

  2. Adicione o filtro de tendência para melhorar a taxa de sucesso da fuga.

  3. Adicionar dimensionamento de posição, como fração fixa e Martingale.

  4. Adicionar stop loss para controlar a perda única.

Resumo

Esta estratégia capitaliza o canal e a SMA para alcançar ganhos constantes em tendências fortes.


/*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)

Mais.