Estratégia de entrada unilateral baseada na média móvel

Autora:ChaoZhang, Data: 2023-12-25 14:09:49
Tags:

img

Resumo

Esta estratégia calcula diferentes tipos de médias móveis para determinar a direção da tendência do preço e implementar uma entrada unilateral.

Princípio da estratégia

A estratégia permite selecionar entre 7 tipos diferentes de média móvel, incluindo média móvel simples (SMA), média móvel exponencial (EMA), média móvel ponderada por volume (VWMA), média móvel exponencial dupla (DEMA), média móvel exponencial tripla (TEMA), média móvel adaptativa de Kaufman (KAMA) e linha média do canal de preços.

Quando o preço de fechamento quebra a linha média móvel para cima, ele é julgado como uma tendência de alta e uma posição longa é aberta. Quando o preço de fechamento quebra a linha média móvel para baixo, ele é julgado como uma tendência de queda e uma posição curta é aberta. Isso pode capturar pontos de virada na tendência de preços e alcançar uma entrada unilateral.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. Podem ser selecionados vários tipos de médias móveis para flexibilizar a adaptação aos diferentes produtos e ciclos.

  2. A entrada de um só lado pode controlar eficazmente os riscos.

  3. Entrar na direção da tendência é fácil de lucrar.

  4. É fácil de compreender e de aplicar.

Análise de riscos

Há também alguns riscos com esta estratégia:

  1. Quando o preço oscila em torno da linha média móvel, haverá vários sinais falsos e posições de entrada reversa.

  2. A evolução da taxa de câmbio de mercado é, por conseguinte, muito importante para a evolução do mercado e para a evolução do mercado.

  3. O analista precisa selecionar parâmetros de média móvel apropriados. Parâmetros inadequados podem facilmente levar ao atraso dos sinais comerciais.

Orientações de otimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Combinar com outros indicadores técnicos como MACD, RSI para julgar o sinal de tendência e formar uma combinação de negociação.

  2. Adicionar a lógica de stop loss, como stop loss de trailing ou stop loss pendente.

  3. Teste e otimize parâmetros como período de média móvel, tipo de média móvel para encontrar a combinação de parâmetros ideal.

  4. Considere utilizar o tipo de ordem MarketIfTouched para a entrada, para seguir a tendência.

Resumo

A estratégia determina a direção da tendência do preço com base em médias móveis e implementa entrada unilateral. É simples de usar e implementar e pode controlar riscos efetivamente. Mas também há riscos de sinais falsos e entradas reversas. Pode ser continuamente melhorada combinando outros indicadores de sinal, otimizando parâmetros, adicionando stop loss, para tornar a estratégia mais estável e confiável.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
    
    
    

Mais.