Esta estratégia usa dois indicadores de média móvel para identificar a direção da tendência e as oportunidades de longo / curto. A média móvel mais lenta (linha azul) é usada para determinar a direção geral da tendência, enquanto a média móvel mais rápida (linha vermelha) combinada com o canal de preços é usada para descobrir oportunidades de negociação.
Calcule duas médias móveis - uma MA mais lenta com o período 21 para determinar a tendência geral e uma MA mais rápida com o período 5 que combina com o canal de preços para encontrar oportunidades de negociação.
Verifique se o preço atual atravessa o canal de preços formado no período anterior.
Contagem do número e direção de velas recentes. Por exemplo, várias velas de baixa consecutiva podem sinalizar uma oportunidade longa, enquanto velas de alta consecutivas podem sinalizar uma oportunidade curta.
Combine todos os fatores acima para gerar sinais longos / curtos. Um sinal é acionado quando o movimento do preço se alinha com a direção da tendência MA mais lenta, o MA rápido ou o canal de preço produz sinal e o movimento do candelabro corresponde à condição.
O sistema de média móvel dupla efetivamente acompanha a direção da tendência.
Uma MA mais rápida e um canal de preços combinados detectam pontos de ruptura precoces para capturar oportunidades de negociação.
Também considera a direção do candelabro e conta para evitar ser preso por reversões do mercado.
Os parâmetros MA personalizáveis funcionam para diferentes produtos e prazos.
Os MAs duplos podem produzir sinais falsos durante os mercados laterais.
Ainda corre o risco de ficar preso em movimentos excepcionais do mercado.
É impossível evitar completamente reversões, continuará a melhorar a lógica e os parâmetros para tornar a estratégia mais robusta.
Adicione indicadores de apoio como ADX, MACD para evitar trocas erradas em mercados agitados.
Calculo dinâmico de stop loss, por exemplo baseado no ATR e na preferência de risco.
Optimização de parâmetros através de aprendizagem de máquina para capacidade adaptativa.
Parâmetros de ajuste fino baseados nas características do instrumento, por exemplo, períodos mais curtos para criptomoedas.
No geral, esta estratégia funciona muito bem no acompanhamento de tendências de mercados, com oportunidades de ruptura adicionais. Com melhorias adequadas, pode ser transformada em uma estratégia quantitativa de alta qualidade comercialmente viável. Continuaremos a melhorá-la para negociar mais mercados de forma estável.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v1.9 Extreme", shorttitle = "Trend MAs str 1.9 extreme", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, "long") needshort = input(true, "short") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") useohlc4 = input(false, defval = false, title = "Use OHLC4") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)") src = useohlc4 == true ? ohlc4 : close //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1] //Bars bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 //Signals up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0 dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0 up2 = high < center and high < center2 and bar == -1 ? 1 : 0 dn2 = low > center and low > center2 and bar == 1 ? 0 : 0 //Lines plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 or (up2 == 1 and needex == true) if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)