
Эта стратегия использует динамические индикаторы, такие как средний ориентир (ADX), динамический индикатор (DMI) и индекс товарного пути (CCI), для определения направления тенденции и отслеживания тенденции. Когда ADX и трендовые индикаторы подтверждают формирование тенденции, устанавливают позиции во время преодоления CCI.
Расчет показателей ADX, DMI и CCI.
Определяйте направление тенденций.
Вход на поле.
Выход из игры.
Используйте ADX для определения сильных и слабых тенденций, избегайте бессмысленной торговли в отсутствие явных тенденций.
Использование DMI для определения направления тенденции, снижает вероятность ошибочного суждения.
Вход во время CCI-оскорбления позволяет вовремя уловить переломный момент и снизить риск входа.
Использование комбинации динамических показателей может повысить точность суждения.
Существуют механизмы, позволяющие ограничить каждый ущерб.
Когда ADX падает, может быть несколько трейдингов тревоги, которые приводят к убыткам. Можно соответствующим образом повысить входную отметку ADX, чтобы убедиться, что тенденция достаточно очевидна.
DMI отстает и может пропустить ранние возможности тренда. Вступление может быть определено в сочетании с другими показателями или графическим техническим анализом.
CCI может привести к частым сделкам. CCI может быть расширен, чтобы отфильтровать часть шума.
При проведении множественного дисконтирования и одновременном удержании позиции можно рассмотреть возможность использования нейтральной стратегии на фондовом рынке, разработать правила хранения на период хранения, чтобы снизить общий риск позиции.
Оптимизируйте параметры ADX, чтобы найти оптимальный баланс между фильтрацией шума и улавливанием тенденции во времени.
Оптимизация параметров DMI, баланс задержки и чувствительности.
Оптимизация параметров CCI, сбалансированная частота торгов и способность улавливать обратный ход.
Тестирование с добавлением или изменением других показателей в поисках лучшего комбинированного эффекта. Например, MACD, KDJ и т. д.
Проверка торговых сортов, чтобы найти наиболее подходящие.
Оптимизация стратегии управления позициями, управление рисками при сохранении способности отслеживать тенденции.
Эта стратегия использует ADX, чтобы определить тенденцию, определить направление, и CCI, чтобы определить обратную точку, чтобы отслеживать тренд, имеет более сильную логику. Однако, все же необходимо оптимизировать параметры и совмещать управление позицией для контроля риска. Если параметры будут скорректированы до соответствующего уровня и применяться к видам, в которых есть явный тренд, эта стратегия может принести стабильную прибыль.
/*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))))