Esta estratégia baseia-se na ruptura do canal e usa o cruzamento da média móvel como sinal de saída.
Calcular o máximo máximo e o mínimo mínimo em determinados períodos para construir o canal superior e inferior.
Ir longo quando o preço quebra acima do canal superior; ir curto quando o preço quebra abaixo do canal inferior.
Calcule linhas SMA rápidas e lentas.
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.
A combinação do canal e do sistema de médias móveis pode melhorar a rentabilidade.
O canal julga a rotação e a SMA julga o esgotamento da tendência.
O filtro de SMA evita as fendas e reduz os negócios desnecessários.
A gama de canais ajustável se adapta a diferentes períodos e volatilidade.
Uma gama de canais inadequada pode perder a fuga ou gerar uma fuga falsa.
Os parâmetros de SMA incorretos podem sair mais cedo ou mais tarde.
Precisa de um dimensionamento razoável da posição para limitar perdas individuais.
Fique atento a uma fuga válida, evite perseguir alto/vendendo baixo.
Parâmetros de ensaio para otimizar a gama de canais e os períodos de SMA.
Adicione o filtro de tendência para melhorar a taxa de sucesso da fuga.
Adicionar dimensionamento de posição, como fração fixa e Martingale.
Adicionar stop loss para controlar a perda única.
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)