
A estratégia utiliza indicadores de dinâmica, como o indicador de orientação da média (ADX), o indicador de tendência (DMI) e o indicador de trajetória de mercadorias (CCI), para determinar a direção da tendência e acompanhar a tendência. Quando o ADX e o indicador de tendência confirmam a formação de tendência, estabeleça uma posição no momento da ultrapassagem do CCI.
Calcular os indicadores ADX, DMI e CCI.
A tendência é a de julgar.
Entrando no campo.
Cessação de perdas.
Use o ADX para avaliar a força e a fraqueza da tendência, evitando transações inúteis quando não há uma tendência óbvia.
O uso do DMI para determinar a direção da tendência reduz a probabilidade de erro de julgamento.
Entrando no momento em que o CCI ultrapassa, você pode capturar o ponto de mudança de tendência a tempo, reduzindo o risco de entrada.
A combinação de indicadores de potência pode melhorar a precisão de julgamento.
Há um mecanismo de prevenção de perdas que pode limitar cada perda.
Quando o ADX retrocede, há várias transações de ansiedade que causam prejuízos. Pode-se elevar adequadamente o limiar de entrada do ADX para garantir que a tendência seja suficientemente visível.
O indicador DMI está atrasado e pode perder oportunidades no início da tendência. Pode ser combinado com outros indicadores ou análise técnica gráfica para determinar o momento de entrada.
A CCI é suscetível a transações frequentes. A amplitude do limiar da CCI pode ser adequadamente relaxada, filtrando parte do ruído.
Ao fazer mais shorting e manter posições, pode-se considerar a adoção de estratégias neutras no mercado de ações, estabelecer regras de amortização de prazo para reduzir o risco de posição geral.
Otimizar os parâmetros do ADX para encontrar o melhor equilíbrio entre o ruído de filtragem e a tendência de captura no tempo.
Otimizar os parâmetros do DMI, equilibrando o atraso e a sensibilidade.
Optimizar os parâmetros do CCI, equilibrar a frequência de negociação e a capacidade de capturar reversões.
Teste adicionando ou modificando outros indicadores em busca de melhores combinações. Como MACD, KDJ, etc.
Teste as variedades de comércio para encontrar as mais adequadas.
Optimizar a estratégia de gestão de posições e controlar os riscos, mantendo a capacidade de acompanhar as tendências.
A estratégia utiliza a tendência de julgamento ADX, DMI determinar a direção, CCI localização ponto de reversão do pensamento para a tendência de acompanhamento de negociação, com uma forte lógica. Mas ainda precisa ser otimizado para os parâmetros, e em conjunto com a gestão de posição para controlar o risco.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX Strategy", currency = "USD", initial_capital = 1000, overlay=true)
adxlen = input(9, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_Entry = input(25, title="ADX Entry")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adx, plus, minus]
[sig, up, down] = adx(dilen, adxlen)
cci_length = input(20, minval=1, title="CCI Length")
cci_ma = sma(close, cci_length)
cci = (close - cci_ma) / (0.015 * dev(close, cci_length))
stop_loss = syminfo.mintick * 100
open_longs = strategy.position_size > 0
open_shorts = strategy.position_size < 0
possible_bull = false
possible_bull := not open_longs ? (possible_bull[1] and not crossunder(up,down) ? true : false) : false
possible_bear = false
possible_bear := not open_shorts ? (possible_bear[1] and not crossunder(down,up) ? true : false) : false
bool bull_entry = crossover(up,down)
if(bull_entry and up < ADX_Entry and cci < 0)
possible_bull := true
bull_entry := false
if(possible_bull and up > ADX_Entry and cci > -100)
bull_entry := true
bool bear_entry = crossover(down,up)
if(bear_entry and down < ADX_Entry and cci > 0)
possible_bear := true
bear_entry := false
if(possible_bear and down >= ADX_Entry and cci < 100)
bear_entry := true
strategy.entry("Short", strategy.short, qty = 1,comment="Short", stop=high[1] - stop_loss, when = bear_entry)
strategy.entry("Long", strategy.long, qty = 1, comment="Long", stop=low[1] - stop_loss, when = bull_entry )
strategy.close_all(when = (open_shorts and (crossover(up,down) or crossover(sig,down))) or (open_longs and ( crossover(down,up) or crossover(sig, up))))