Estratégia de média móvel de dupla faixa e acompanhamento de tendências


Data de criação: 2023-11-06 15:41:23 última modificação: 2023-11-06 15:41:23
cópia: 0 Cliques: 558
1
focar em
1617
Seguidores

Estratégia de média móvel de dupla faixa e acompanhamento de tendências

Visão geral

Esta estratégia utiliza a média móvel rápida e a média móvel lenta para construir um sistema binário, em combinação com o índice de tendência ADX para julgar a tendência, e com o índice de tendência DMI para julgar a direção da tendência, para realizar o acompanhamento da tendência após a criação da tendência, para sair em tempo hábil quando a tendência se inverte, para evitar a queda de cima. Ao mesmo tempo, em combinação com o teste de intervalos de tempo, a estratégia pode ser avaliada em diferentes períodos de tempo.

Princípio da estratégia

  1. As médias móveis rápidas e as médias móveis lentas constroem um sistema binário. Quando as médias móveis rápidas atravessam as médias móveis lentas, é um sinal de golden fork, fazendo mais entrada; Quando as médias móveis rápidas atravessam as médias móveis lentas, é um sinal de forquilha, saindo do campo.

  2. O ADX é usado para determinar a presença e a intensidade de uma tendência. Quando o ADX é maior do que o valor-chave definido, é considerado que a tendência existe e a tendência é forte. Só quando a tendência é forte, é gerado um sinal de negociação.

  3. O DI+ em DMI é usado para determinar a direção da tendência. Quando o DI+ é positivo, a tendência é ascendente; Quando o DI+ é negativo, a tendência é descendente. Só se produz um sinal de negociação quando o julgamento corresponde à direção da tendência.

  4. Em combinação com o teste de intervalo de tempo, a estratégia pode ser testada em diferentes períodos de tempo para verificar a sua eficácia.

Análise de vantagens

  1. O uso de um sistema de duas pistas pode filtrar a ruptura, evitando que a falsa ruptura cause perdas.

  2. Aplicar o ADX para avaliar a existência e a intensidade de tendências, evitando a frequência de negociação em situações de turbulência.

  3. Utilize o DMI para determinar a direção da tendência, para garantir que a operação esteja de acordo com a tendência e evitar negociações adversas.

  4. O teste de intervalo de tempo pode verificar se os parâmetros da estratégia são eficazes em diferentes situações e otimizar a configuração dos parâmetros.

Análise de Riscos

  1. Os sistemas de dupla linha são propensos a formar armadilhas de cabeçalho ou armadilhas de cabeçalho múltiplo, e precisam ser alertas para ajustar o preço de volta para a parada.

  2. O ADX julga que há atraso e pode ter perdido oportunidades no início da tendência, o que pode reduzir o valor-chave.

  3. A direção de julgamento do DMI também está atrasada, e também pode perder o início da tendência, podendo encurtá-la.

  4. A configuração de parâmetros em diferentes períodos de tempo pode precisar de ajustes e parâmetros precisam ser otimizados para se adaptar às circunstâncias.

Direção de otimização

  1. É possível testar combinações de parâmetros de diferentes períodos de comprimento para encontrar o melhor parâmetro.

  2. Pode ser combinado com outros indicadores, como a linha de blur, para dupla filtragem, melhorando a qualidade do sinal.

  3. Pode-se adicionar uma estratégia de stop loss para evitar a expansão dos prejuízos.

  4. Parâmetros podem ser configurados para otimização automática por meio de métodos de aprendizado de máquina.

  5. A estratégia pode ser melhorada com a combinação de outros fatores, tais como o índice de emoção, o perfil da notícia e outros.

Resumir

Esta estratégia integra os benefícios das médias móveis, dos índices de tendência e dos índices de movimento, permitindo o julgamento e o acompanhamento de tendências. Ao mesmo tempo em que verifica a eficácia de seus parâmetros, é necessário otimizá-los continuamente para adaptar-se a mais situações de mercado, aprofundar ainda mais o ajuste de parâmetros, a estratégia de parada de perda e a síntese de múltiplos fatores, para melhorar a estabilidade e a lucratividade da estratégia.

Código-fonte da estratégia
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author: codachang0726
strategy(title = "(S)MA+ADX+DI+time", shorttitle = "(S)MA+ADX+DI+time", overlay = true)

// === INPUT MA LENGTHS ===
fastMA    = input(defval = 7,   title = "FastMA",          minval = 1, step = 1)
slowMA    = input(defval = 14,   title = "SlowMA",          minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 9,    title = "From Month",      minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === MA LOGIC ===
crossOv   =  sma(close, fastMA) > sma(close, slowMA)     // true when fastMA over slowMA
crossUn   =  sma(close, fastMA) < sma(close, slowMA)     // true when fastMA under slowMA

// DI+ADX
adxlen      = input(14, title="ADX Smoothing")
dilen       = input(14, title="DI Period")
keyLevel    = input(20, title="Keylevel for ADX")
[diplus, diminus, adx] = dmi(dilen, adxlen)
di = (diplus - diminus)

buy = di > 0 and crossOv and adx > keyLevel
sell = di < 0 and crossUn and adx > keyLevel

buy_time = buy and not buy[1]
sell_time = sell and not sell[1]

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy_time)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell_time)                   // exit long when "within window of time" AND crossunder         

// === PLOTTING ===
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)                                     // plot "within window of time"
plot(sma(close, fastMA), title = 'FastMA', color = color.yellow, linewidth = 2, style = plot.style_line)  // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.aqua,   linewidth = 2, style = plot.style_line)  // plot SlowMA