Este artigo fornece uma análise aprofundada da estratégia de negociação de diferença média móvel codificada pela Noro. A estratégia identifica inversões de tendência calculando o desvio entre o preço de fechamento e a média móvel simples, e alcança a compra baixa e a venda alta.
A estratégia primeiro calcula a média móvel simples de 3 dias (SMA). Em seguida, calcula a relação entre o preço de fechamento (fechamento) e o SMA menos um como indicador (ind). Quando o ind cruza acima do limite do parâmetro pré-definido, significa que o preço de fechamento superou significativamente o SMA e a posição longa é considerada. Quando o ind cruza abaixo do limite, significa que o preço de fechamento caiu muito abaixo do SMA e a posição curta é considerada.
A estratégia também traça o eixo 0, o eixo limite e o eixo limite.
Quando o sinal longo/curto, a estratégia fechará a posição oposta primeiro, depois abrirá a posição longa/curta.
Adotar o princípio da negociação de diferença para capturar inversões de tendência, ao contrário das estratégias de tendência.
Planeamento dos eixos dos indicadores para um julgamento intuitivo da posição e do cruzamento dos indicadores.
Otimizada lógica de aproximação, fechando a posição existente antes de reverter a direção.
Intervalo de tempo de negociação definido para evitar posições overnight desnecessárias.
Flexibilidade para habilitar/desabilitar a negociação longa/curta.
As estratégias de média móvel tendem a gerar múltiplas operações perdedoras, exigindo paciência na detenção.
As médias móveis não têm flexibilidade para capturar as alterações de preços em tempo real.
O parâmetro limite pré-definido é estático, exigindo ajustamentos para diferentes produtos e ambientes de mercado.
Incapacidade de identificar flutuações dentro das tendências, exigindo combinação com indicadores de volatilidade.
Necessidade de otimizar as regras de detenção, por exemplo, stop loss, take profit; ou apenas capturar lacunas iniciais.
Teste diferentes configurações de parâmetros, por exemplo, período SMA ou médias móveis adaptativas como EMA.
Adicione a direção da média móvel e a validação da inclinação para evitar negócios sem sentido.
Considere a combinação com indicadores de volatilidade como as Bandas de Bollinger para pausar a negociação quando a volatilidade aumenta.
Implementar regras de dimensionamento de posições, por exemplo, quantidade fixa, pirâmide incremental, gestão do dinheiro.
Para o controlo por risco de negociação, definir linhas de stop loss/take profit ou pausar novas ordens quando for activada uma stop loss de percentagem fixa.
Este artigo analisou de forma abrangente a estratégia de negociação da diferença média móvel da Noro
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Shift Close Strategy v1.0", shorttitle = "Shift Close 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //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, %") limit = input(10) 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") //Shift MA sma = sma(ohlc4, 3) ind = ((close / sma) - 1) * 100 //Oscilator plot(3 * limit, color = na, transp = 0) plot(limit, color = black, transp = 0) plot(0, color = black, transp = 0) plot(-1 * limit, color = black, transp = 0) plot(-3 * limit, color = na, transp = 0) plot(ind, linewidth = 3, transp = 0) col = ind > limit ? red : ind < -1 * limit ? lime : na bgcolor(col, transp = 0) //Signals size = strategy.position_size up = ind < -1 * limit dn = ind > limit exit = ind > -1 * limit and ind < limit //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if exit strategy.close_all()