
Esta estratégia baseia-se no indicador de alcance real médio (ATR) e no indicador de tendência (DMI) para julgar a hora de comprar e vender. O indicador de tendência positiva (DI +) e o indicador de tendência negativa (DI -). Esta estratégia pertence à estratégia de acompanhamento de tendências, que julga o ponto de inflexão da tendência através do cruzamento de DI + e DI - .
Calcule o ATR ((14): utilize o máximo, o mínimo e o preço de fechamento dos últimos 14 dias para calcular a média real de variação
Calcular DI+ e DI-:
DI+ = 100 * RMA(MAX(UP,0),N) / ATNR
DI- = 100 * RMA(MAX(DOWN,0),N) / ATNR
onde UP é a diferença entre o preço máximo do dia e o preço de fechamento de ontem, DOWN é a diferença entre o preço mínimo do dia e o preço de fechamento de ontem, N é o comprimento do parâmetro, 14 por defeito, ATNR é o ATR obtido com o passo anterior
A decisão de comprar ou vender:
Quando o DI+ é colocado em cima do DI-, gera um sinal de compra
Quando o DI+ atravessa o DI-, gera um sinal de venda
Configuração do Stop Loss Stop:
Multiple Stop Loss é o preço de entrada menos o ATR multiplicado pelo múltiplo de Stop Loss
Multiple One Stop Pricing é o preço de entrada mais o ATR multiplicado pelo multiplicador de parada
O preço de parada de um bilhete vazio é o preço de entrada mais o ATR multiplicado pelo múltiplo de parada
O preço de parada de um cartão vazio é o preço de entrada menos o ATR multiplicado pelo múltiplo de parada
Utilizando DI+ e DI-cross-judgment, os pontos de mudança de tendência são capazes de capturar novas direções de tendência em tempo hábil.
O ATR é um indicador de stop loss dinâmico, que permite definir um stop loss razoável de acordo com a volatilidade do mercado
Menos parâmetros de estratégia, mais fácil de entender e implementar
Os dados de retrospectiva mostram que a estratégia tem um fator de lucro positivo e é melhor do que a estratégia de compra e manutenção
DI cruzado com risco de transações equivocadas
Ponto de parada de danos muito próximo
Mercado com tendências que não podem ser tratadas com eficiência
Risco de retirada
Indicadores como as médias móveis são usados para filtrar os sinais de cruzamento do DI e evitar transações erradas em situações de turbulência.
Aumento dos mecanismos de gerenciamento de posições, tais como quotas fixas e martinges, para controlar retrações e aumentar a lucratividade
Optimizar os parâmetros do ATR para que o stop loss seja mais adequado para os diferentes tipos de negociação
Optimizar os parâmetros para encontrar a melhor combinação de parâmetros, como o ciclo DI, o ciclo ATR e o múltiplo ATR
Aumentar a lógica de julgamento de negociação para o setor noturno e matinal, permitindo que a estratégia funcione 24 horas por dia
Esta estratégia é simples e prática, determina o momento de compra e venda através do cruzamento do DI e configura o stop loss com o ATR. O número de parâmetros da estratégia é menor, é fácil de testar e verificar em tempo real, e é fácil de ajustar para otimização.
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TheHulkTrading
//@version=4
strategy("DI Crossing Daily Straregy HulkTrading", overlay=true)
// ATR Multiplier. Recommended values between 1..4
atr_multiplier = input(1, minval=1, title="ATR Multiplier")
//Length of DI. Recommended default value = 14
length = input(14, minval=1, title="Length di")
up = change(high)
down = -change(low)
range = rma(tr, 14)
//DI+ and DI- Calculations
di_plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / range)
di_minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / range)
//Long and short conditions
longCond = crossover(di_plus,di_minus)
shortCond = crossunder(di_plus,di_minus)
//Stop levels and take profits
stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14)
take_level_long = strategy.position_avg_price + 2*atr_multiplier*atr(14)
stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14)
take_level_short = strategy.position_avg_price - 2*atr_multiplier*atr(14)
//Entries and exits
strategy.entry("Long", strategy.long, when=longCond)
strategy.exit("Close Long","Long", stop=stop_level_long, limit = take_level_long)
strategy.entry("Short", strategy.short, when=shortCond)
strategy.exit("Close Short","Short", stop=stop_level_short, limit = take_level_short)