Kama e tendência baseada na média móvel Seguindo a estratégia

Autora:ChaoZhang, Data: 2024-02-06 09:53:22
Tags:

img

Resumo

A ideia central desta estratégia é identificar as tendências do mercado combinando os indicadores de média móvel Kama e média móvel para alcançar a tendência seguinte. Quando a média móvel Kama e a média móvel Kama têm uma cruz de ouro, julga-se que uma tendência de alta começou e uma posição longa é tomada.

Estratégia lógica

  1. A média móvel Kama é um indicador de tendência que é mais sensível ao ruído do mercado e pode ser usado para determinar as tendências de preços.

  2. Calcule médias móveis. duas médias móveis são calculadas aqui, um é uma média móvel exponencial dupla mais rápida, o outro é uma média móvel ponderada normal.

  3. Quando a linha rápida atravessa a linha lenta de baixo, vá longo. Quando a linha rápida atravessa a linha lenta de cima, vá curto.

  4. Depois de tomar posições, saia quando o preço atravessar a linha Kama para alcançar a tendência após a saída.

Vantagens

  1. A estratégia combina os indicadores de média móvel Kama e média móvel para fazer julgamentos relativamente precisos sobre as tendências do mercado e alcançar o seguimento da tendência com uma forte capacidade de controlo da redução.

  2. A média móvel Kama é mais sensível ao ruído do mercado e pode detectar pontos de reversão da tendência com antecedência.

  3. O julgamento da combinação de médias móveis é claro e fácil de entender.

  4. A estratégia tem um grande espaço de otimização de parâmetros e os parâmetros podem ser ajustados e otimizados para diferentes variedades e instrumentos comerciais.

Análise de riscos

  1. Ainda existe a possibilidade de erro de julgamento quando a combinação de média móvel Kama e média móvel julga a tendência do mercado.

  2. A ausência de uma definição de stop loss pode conduzir a perdas maiores em condições de mercado extremas.

  3. As configurações inadequadas dos parâmetros também podem causar erros de julgamento. Os parâmetros precisam ser ajustados de acordo com diferentes variedades.

Sugestões de otimização

  1. Considerar a adição de um indicador ATR para a definição de stop loss.

  2. Teste o impacto de diferentes valores de parâmetros no retorno da estratégia para encontrar os parâmetros ideais.

  3. Considerar a adição de outros indicadores de verificação, como o indicador do oscilador, para melhorar a precisão do julgamento.

  4. Construir um quadro de otimização automática de parâmetros auto-adaptável e dinâmico.

Resumo

A ideia geral desta estratégia é clara, usando a média móvel Kama e a média móvel cruz de ouro e cruz de morte para determinar e seguir as tendências com forte capacidade de controle de drawdown. Através do ajuste e otimização de parâmetros, bons resultados podem ser obtidos.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//synapticex.com
kamaPeriod = input(8, minval=1) 
ROCLength=input(4, minval=1) 

kama(length)=>
    volatility = sum(abs(close-close[1]), length)
    change = abs(close-close[length-1])
    er = iff(volatility != 0, change/volatility, 0)
    sc = pow((er*(0.666666-0.064516))+0.064516, 2)
    k = nz(k[1])+(sc*(hl2-nz(k[1])))
    

n=input(title="period",defval=7)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?lime:red
ma=plot(n1,color=c, linewidth = 3)
plot(cross(nma, nma1) ? nma : na, style = cross, color = c, linewidth = 5)
    
kamaEntry = request.security(syminfo.tickerid,timeframe.period,kama(kamaPeriod))

plot(kamaEntry, color=gray, title="Kama",transp=0, trackprice=false, style=line)


strategy("Kama VS HeikinAshi", overlay=true, pyramiding=0, calc_on_every_tick=true, calc_on_order_fills=true)

buyEntry =  n1 > n2
sellEntry = close < kamaEntry and n1 < n2 

buyExit = close < kamaEntry and n1 < n2
sellExit = n1 > n2 
if (buyEntry)
    strategy.entry("KAMAL", strategy.long, comment="KAMAL")
else
    strategy.close("KAMAL", when=buyExit)

if (sellEntry)
    strategy.entry("KAMAS", strategy.short, comment="KAMAS")
else
    strategy.close("KAMAS", when = sellExit)



Mais.