Estratégia de negociação de diferenças de média móvel

Autora:ChaoZhang, Data: 2023-10-26 16:05:01
Tags:

img

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.

Estratégia lógica

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.

Vantagens

  1. 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.

  2. Planeamento dos eixos dos indicadores para um julgamento intuitivo da posição e do cruzamento dos indicadores.

  3. Otimizada lógica de aproximação, fechando a posição existente antes de reverter a direção.

  4. Intervalo de tempo de negociação definido para evitar posições overnight desnecessárias.

  5. Flexibilidade para habilitar/desabilitar a negociação longa/curta.

Riscos

  1. As estratégias de média móvel tendem a gerar múltiplas operações perdedoras, exigindo paciência na detenção.

  2. As médias móveis não têm flexibilidade para capturar as alterações de preços em tempo real.

  3. O parâmetro limite pré-definido é estático, exigindo ajustamentos para diferentes produtos e ambientes de mercado.

  4. Incapacidade de identificar flutuações dentro das tendências, exigindo combinação com indicadores de volatilidade.

  5. Necessidade de otimizar as regras de detenção, por exemplo, stop loss, take profit; ou apenas capturar lacunas iniciais.

Orientações para a melhoria

  1. Teste diferentes configurações de parâmetros, por exemplo, período SMA ou médias móveis adaptativas como EMA.

  2. Adicione a direção da média móvel e a validação da inclinação para evitar negócios sem sentido.

  3. Considere a combinação com indicadores de volatilidade como as Bandas de Bollinger para pausar a negociação quando a volatilidade aumenta.

  4. Implementar regras de dimensionamento de posições, por exemplo, quantidade fixa, pirâmide incremental, gestão do dinheiro.

  5. 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.

Resumo

Este artigo analisou de forma abrangente a estratégia de negociação da diferença média móvel da Noro. Utiliza a diferença de preço da característica média móvel e implementa eixos e cores de indicadores para o tempo de entrada. Também otimiza a lógica de fechamento e define o intervalo de tempo de negociação.


/*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()

Mais.