
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.
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.
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.
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.
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.
O uso de um sistema de duas pistas pode filtrar a ruptura, evitando que a falsa ruptura cause perdas.
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.
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.
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.
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.
O ADX julga que há atraso e pode ter perdido oportunidades no início da tendência, o que pode reduzir o valor-chave.
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.
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.
É possível testar combinações de parâmetros de diferentes períodos de comprimento para encontrar o melhor parâmetro.
Pode ser combinado com outros indicadores, como a linha de blur, para dupla filtragem, melhorando a qualidade do sinal.
Pode-se adicionar uma estratégia de stop loss para evitar a expansão dos prejuízos.
Parâmetros podem ser configurados para otimização automática por meio de métodos de aprendizado de máquina.
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.
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.
/*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