
Esta estratégia utiliza um conjunto de indicadores de tendência e um indicador aleatório para gerar um sinal de negociação. As linhas DI+, DI- e ADX do indicador de tendência são usadas para determinar a direção e a intensidade da tendência, e as linhas% K do indicador aleatório são usadas para determinar se há uma sobrevenda ou uma sobrevenda. A estratégia gera um sinal de múltiplas cabeças quando o DI+ é superior ao DI-, o ADX é superior a 25 e o K é inferior a 20%; e um sinal de cabeça vazia quando o DI- é superior ao DI+, o ADX é superior a 25 e o K é superior a 80%.
A lógica central desta estratégia baseia-se nas seguintes partes:
Índice de tendências para julgar tendênciasQuando o DI+ é maior do que o DI-, indica uma tendência de várias direções; quando o DI- é maior do que o DI+, indica uma tendência de cabeça para baixo. O ADX é usado para determinar a força da tendência, e quanto maior o valor, a tendência é mais evidente.
Indicadores aleatórios de sobrecompra e sobrevenda: A linha %K no indicador aleatório mostra a posição do preço de fechamento atual em relação ao preço máximo e mínimo em um determinado período, para determinar se o mercado está sobrecomprando ou sobrevendendo. Quando o%K está abaixo de 20, é sobrevendido, e acima de 80, é sobrecomprado.
O sinal produz lógicaA estratégia, combinada com um indicador de tendência e um indicador aleatório, gera um sinal de cabeça de cabeça quando o DI+ é superior ao DI- (trend de cima), o ADX é superior a 25 (trend mais visível) e o %K é inferior a 20 (overdrive); o DI- é superior ao DI+ (trend de baixo), o ADX é superior a 25 e o %K é superior a 80 (overdrive).
Método de parada dinâmica: Registre o preço mais alto e o preço mais baixo após o último ponto de entrada e use-o como um ponto de parada dinâmico. Assim, você pode bloquear os lucros ou controlar o risco de acordo com a flutuação do mercado.
A estratégia tem as seguintes vantagens:
A combinação de um índice de tendência e um indicador aleatório de julgamento duplo, a maior confiabilidade. O índice de tendência determina a direção da tendência principal, o indicador aleatório capta características locais, os dois complementam-se.
Mecanismo inovador de stop loss dinâmico. De acordo com a flutuação recente, o ponto de stop loss é definido, o risco pode ser controlado de acordo com a situação real do mercado, e o efeito de stop loss é bom.
Os parâmetros da estratégia são menores e fáceis de implementar. Os principais parâmetros são apenas o comprimento do cálculo do indicador e a estratégia é fácil de ajustar e otimizar.
A estratégia pode ser usada em mercados financeiros como ações, divisas e criptomoedas.
É escrito em scripts de pine e pode ser aplicado diretamente na plataforma de negociação, o que é rápido e conveniente.
A estratégia também apresenta alguns riscos que devem ser lembrados:
Quando a tendência se agita, é fácil gerar sinais errados. Quando o ADX é relativamente baixo, deve-se reduzir a posição para evitar o risco.
O indicador aleatório em si é um indicador de retrospectiva, que pode ter ocorrido uma reversão no mercado quando o sinal é produzido. Deve ser combinado de forma apropriada com outros indicadores anteriores.
O mecanismo de stop loss dinâmico não pode evitar completamente os impactos de uma grande situação. Recomenda-se um ajuste razoável da distância do ponto de parada.
A configuração errada dos parâmetros também pode afetar a eficácia da estratégia. Os parâmetros de comprimento de indicador apropriados devem ser selecionados.
É necessário acompanhar de perto a situação do mercado como um todo. A estratégia deve ser suspensa em caso de ocorrência de um grande evento de Black Swan para evitar perdas anormais.
A estratégia pode ser melhorada em alguns aspectos:
Adicionar outros indicadores de julgamento, formando filtros múltiplos, aumentando a confiabilidade do sinal. Por exemplo, a inclusão de uma tendência de julgamento de linha média, o julgamento de desvio do MACD, etc.
Optimizar a configuração de parâmetros, escolher a melhor combinação de parâmetros. Pode ser determinado o comprimento do indicador mais adequado, através da revisão de dados históricos.
Configure diferentes parâmetros de acordo com diferentes variedades e ciclos de negociação. As variedades adequadas para negociações de alta frequência podem reduzir o ciclo de computação.
Combinado com a função getInfo e a função de registro de logs, a saída de dados detalhados de logs de transações e indicadores facilita a análise e otimização de estratégias.
Gravação de gráficos foi adicionada no editor pine, mostrando os pontos de sinais de negociação. Além disso, é possível visualizar o movimento da linha de stop loss.
Desenvolvimento de funções de alerta, para o envio de mensagens de aviso quando determinadas condições são cumpridas, facilitando a intervenção oportuna nas transações.
Esta estratégia combina os benefícios do indicador de tendência e do indicador aleatório para determinar a direção da tendência e, ao mesmo tempo, localiza as áreas de sobrevenda e sobrevenda para gerar sinais de negociação. Ao mesmo tempo, o modo de stop loss dinâmico projetado para tornar o controle de risco mais inteligente e automatizado. O sinal da estratégia é confiável, amplo e fácil de usar, é uma estratégia de negociação quantitativa e eficaz.
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DMI with Stochastic and Dynamic Stop-Loss", shorttitle="DMI_Stoch_SL", overlay=true)
length = input(14, title="DMI Length")
adxThreshold = input(25, title="ADX Threshold")
stochKLength = input(14, title="Stochastic %K Length")
stochDLength = input(3, title="Stochastic %D Length")
[diPlus, diMinus, adx] = ta.dmi(length, length)
stochKLine = ta.stoch(close, high, low, stochKLength)
var float lowestClose = na
var float highestClose = na
lowestClose := na(lowestClose) ? close : math.min(lowestClose, close)
highestClose := na(highestClose) ? close : math.max(highestClose, close)
longCondition = (diPlus > diMinus) and (adx > adxThreshold) and (stochKLine < 20)
shortCondition = (diMinus > diPlus) and (adx > adxThreshold) and (stochKLine > 80)
if longCondition
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", stop=lowestClose)
if shortCondition
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", stop=highestClose)