Индикатор импульса длинная и короткая стратегия


Дата создания: 2023-11-02 16:34:48 Последнее изменение: 2023-11-02 16:34:48
Копировать: 0 Количество просмотров: 644
1
Подписаться
1617
Подписчики

Индикатор импульса длинная и короткая стратегия

Обзор

Эта стратегия использует динамические индикаторы, такие как средний ориентир (ADX), динамический индикатор (DMI) и индекс товарного пути (CCI), для определения направления тенденции и отслеживания тенденции. Когда ADX и трендовые индикаторы подтверждают формирование тенденции, устанавливают позиции во время преодоления CCI.

Стратегический принцип

  1. Расчет показателей ADX, DMI и CCI.

    • ADX используется для определения силы тренда, когда ADX выше установленного порога, считается, что тренд достаточно силен.
    • DMI включает в себя DI+ и DI-, которые указывают на интенсивность восходящей и нисходящей тенденций соответственно. Когда DI+ выше DI-, считается, что она находится в восходящей тенденции, а наоборот - в нисходящей.
    • CCI используется для определения перекупа и перепродажи. Когда CCI ниже -100, это перепродажа, а выше 100 - перекуп.
  2. Определяйте направление тенденций.

    • Когда DI+ наносится на DI-, это определяется как восходящий тренд.
    • Когда DI- пересекает DI+, определяется как нисходящая тенденция.
  3. Вход на поле.

    • При формировании восходящего тренда, когда ADX выше от порога и CCI ниже -100, делается дополнительный вход.
    • При формировании нисходящего тренда, когда ADX выше минуса, а CCI выше 100, дефолтный вход.
  4. Выход из игры.

    • Когда вы делаете больше, когда вы надеваете DI+ под DI, вы очищаете склад.
    • Когда я освобождаю, я очищаю, когда я ношу DI+ на DI-

Анализ преимуществ стратегии

  1. Используйте ADX для определения сильных и слабых тенденций, избегайте бессмысленной торговли в отсутствие явных тенденций.

  2. Использование DMI для определения направления тенденции, снижает вероятность ошибочного суждения.

  3. Вход во время CCI-оскорбления позволяет вовремя уловить переломный момент и снизить риск входа.

  4. Использование комбинации динамических показателей может повысить точность суждения.

  5. Существуют механизмы, позволяющие ограничить каждый ущерб.

Риск и хеджирование

  1. Когда ADX падает, может быть несколько трейдингов тревоги, которые приводят к убыткам. Можно соответствующим образом повысить входную отметку ADX, чтобы убедиться, что тенденция достаточно очевидна.

  2. DMI отстает и может пропустить ранние возможности тренда. Вступление может быть определено в сочетании с другими показателями или графическим техническим анализом.

  3. CCI может привести к частым сделкам. CCI может быть расширен, чтобы отфильтровать часть шума.

  4. При проведении множественного дисконтирования и одновременном удержании позиции можно рассмотреть возможность использования нейтральной стратегии на фондовом рынке, разработать правила хранения на период хранения, чтобы снизить общий риск позиции.

Направление оптимизации стратегии

  1. Оптимизируйте параметры ADX, чтобы найти оптимальный баланс между фильтрацией шума и улавливанием тенденции во времени.

  2. Оптимизация параметров DMI, баланс задержки и чувствительности.

  3. Оптимизация параметров CCI, сбалансированная частота торгов и способность улавливать обратный ход.

  4. Тестирование с добавлением или изменением других показателей в поисках лучшего комбинированного эффекта. Например, MACD, KDJ и т. д.

  5. Проверка торговых сортов, чтобы найти наиболее подходящие.

  6. Оптимизация стратегии управления позициями, управление рисками при сохранении способности отслеживать тенденции.

Подвести итог

Эта стратегия использует 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))))