Esta estratégia gera sinais de negociação baseados no cruzamento de duas médias móveis com períodos diferentes.
A estratégia permite que os usuários escolham o tipo e o comprimento das médias móveis. Os tipos incluem SMA, EMA, VWMA, etc. O comprimento determina o período das médias móveis.
Duas médias móveis são calculadas com base na seleção do usuário. Se a linha mais rápida cruzar acima da linha mais lenta, uma cruz de ouro é formada e um sinal de compra é gerado. Se a linha mais rápida cruzar abaixo da linha mais lenta, uma cruz de morte é formada e um sinal de venda é gerado.
Quando o preço médio de curto prazo está acima do preço médio de longo prazo, é considerado uma tendência de alta e devem ser tomadas posições longas.
Os riscos podem ser geridos através da otimização de parâmetros, da combinação de outros indicadores para geração de sinais, da implementação de stop loss/take profit, etc.
A estratégia tem uma lógica simples e clara de geração de sinais com cruzamento de MAs duplos. Permite ajuste flexível de parâmetros e combinações com outras estratégias de otimização, mas os riscos de mercados variáveis devem ser monitorados e a gestão de dinheiro é crucial.
/*backtest start: 2023-09-09 00:00:00 end: 2023-09-13 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) 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") //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 = low > ma ? 1 : high < ma ? -1 : trend[1] longCondition = trend == 1 and trend[1] == -1 if (longCondition) strategy.entry("Long", strategy.long) shortCondition = trend == -1 and trend[1] == 1 if (shortCondition) strategy.entry("Short", strategy.short)