Esta estratégia usa a teoria da média móvel para construir um sistema de negociação de grade, julgando a tendência do mercado através de vários conjuntos de médias móveis JMA com diferentes parâmetros.
Utilize uma combinação de médias móveis JMA de 1 a 20 períodos para determinar a tendência do mercado.
Abre negociações em rede em pontos de reversão da tendência, quando o MA curto cruza abaixo ou acima do MA longo.
Uma opção para filtrar com base na cor do candelabro - apenas compre em velas vermelhas e venda em velas verdes, caso contrário, ignore a cor e negocie apenas na inversão da tendência.
As saídas são ou rastreamento stop loss ou saída baseada no tempo quando a duração da estratégia termina.
O uso do sistema MA para determinar tendências pode identificar eficazmente reversões de tendências a longo prazo.
A negociação em rede pode captar lucros de mercados de gama sem tendências claras, com stop loss para controlar os riscos.
Parâmetros JMA personalizáveis, pode otimizar para diferentes períodos, alta flexibilidade.
O filtro de vela evita ser enganado por falsos escapes.
Os mercados de serras de alto preço sem tendências claras apresentam riscos de stop loss mais elevados.
Os erros de julgamento do sistema MA podem conduzir a sinais comerciais incorretos.
O filtro de velas corre o risco de perder algumas oportunidades de negociação.
Se o espaçamento da grelha for demasiado grande, os lucros serão insuficientes; se for demasiado estreito, poderá resultar em demasiadas posições e custos elevados.
Testar mais combinações de parâmetros para encontrar combinações ótimas de JMA MA para diferentes produtos.
Incorporar outros filtros como bandas BOLL, KD etc. para melhorar a qualidade do sinal.
Otimizar as configurações da grade, como espaçamento da grade, lotes de entrada, etc.
Considere mais métodos de stop loss como baseados em gap, trailing stops etc.
Esta estratégia julga reversões usando a teoria JMA e abre negociações de grade em pontos de virada para capturar lucros de mudanças de tendência de longo prazo.
/*backtest start: 2022-12-27 00:00:00 end: 2024-01-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=3 strategy(title = "Noro's Fishnet Strategy", shorttitle = "Fishnet str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") usecf = input(false, defval = false, title = "Use Color-filter") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //JMA jmax(src, len) => beta = 0.45*(len-1)/(0.45*(len-1)+2) alpha = pow(beta, 3) L0=0.0, L1=0.0, L2=0.0, L3=0.0, L4=0.0 L0 := (1-alpha)*src + alpha*nz(L0[1]) L1 := (src - L0[0])*(1-beta) + beta*nz(L1[1]) L2 := L0[0] + L1[0] L3 := (L2[0] - nz(L4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(L3[1]) L4 := nz(L4[1]) + L3[0] L4 ma01 = jmax(close, 10) ma02 = jmax(close, 20) ma03 = jmax(close, 30) ma04 = jmax(close, 40) ma05 = jmax(close, 50) ma06 = jmax(close, 60) ma07 = jmax(close, 70) ma08 = jmax(close, 80) ma09 = jmax(close, 90) ma10 = jmax(close, 100) ma11 = jmax(close, 110) ma12 = jmax(close, 120) ma13 = jmax(close, 130) ma14 = jmax(close, 140) ma15 = jmax(close, 150) ma16 = jmax(close, 160) ma17 = jmax(close, 170) ma18 = jmax(close, 180) ma19 = jmax(close, 190) ma20 = jmax(close, 200) trend = 0 trend := ma01 > ma20 ? 1 : ma01 < ma20 ? -1 : trend[1] col = trend == 1 ? #00FF7F : #DC143C plot(ma01, transp = 0, color = col) plot(ma02, transp = 0, color = col) plot(ma03, transp = 0, color = col) plot(ma04, transp = 0, color = col) plot(ma05, transp = 0, color = col) plot(ma06, transp = 0, color = col) plot(ma07, transp = 0, color = col) plot(ma08, transp = 0, color = col) plot(ma09, transp = 0, color = col) plot(ma10, transp = 0, color = col) plot(ma11, transp = 0, color = col) plot(ma12, transp = 0, color = col) plot(ma13, transp = 0, color = col) plot(ma14, transp = 0, color = col) plot(ma15, transp = 0, color = col) plot(ma16, transp = 0, color = col) plot(ma17, transp = 0, color = col) plot(ma18, transp = 0, color = col) plot(ma19, transp = 0, color = col) plot(ma20, transp = 0, color = col) //Trading lot = 0.0 lot := strategy.equity / close * capital / 100 if trend == 1 and (close < open or usecf == false) strategy.entry("Long", strategy.long, needlong ? lot : na) if trend == -1 and (close > open or usecf == false) strategy.entry("Short", strategy.short, needshort ? lot : na)