Стратегия временного отсчета двойной скользящей средней ADX

Автор:Чао Чжан, Дата: 2023-12-06 15:48:29
Тэги:

img

Обзор

Стратегия двойного скользящего среднего ADX Timing идентифицирует тенденции путем сочетания скользящих средних 2/20 и индикатора ADXR для генерации торговых сигналов в начале трендов.

Логика стратегии

Основная логика стратегии двойного скользящего среднего ADX Timing основана на следующих основных компонентах:

  1. 2/20 Экспоненциальная скользящая средняя (EMA)

    • Использует 2 EMA с различными параметрами 2 и 20 дней.
    • Повышение цены на 2-дневную EMA считается бычьим сигналом.
    • Снижающийся переход цены ниже 20-дневной EMA считается медвежьим сигналом.
  2. Индикатор ADXR

    • ADXR - это вариант индикатора ADX.
    • Он рассчитывает простую скользящую среднюю величину ADX для сглаживания колебаний.
    • ADXR ниже порога означает более слабую тенденцию.
    • ADXR выше порогового значения означает более сильную тенденцию.
  3. Торговые сигналы

    • Бычий сигнал генерируется, когда 2-дневная EMA Golden Cross AND ADXR выше порогового значения.
    • Низкий сигнал формируется, когда 20-дневная EMA Dead Cross AND ADXR ниже порогового значения.
    • В сочетании с ADXR фильтруются ложные перерывы и усиливаются реальные сигналы тренда.

Основным новшеством этой стратегии является использование индикатора ADXR для выявления тенденций на начальной стадии и его сочетание с традиционными движущимися средними сигналами для улучшения качества и стабильности.

Преимущества

Основные преимущества стратегии двойной скользящей средней ADX:

  1. Комбинируя двойные МА и ADXR, сигналы более точны и надежны с отфильтрованными ложными сигналами.
  2. Определение раннего тренда с помощью ADXR для обнаружения начальной стадии трендов.
  3. Гибкая настройка параметров ADXR для адаптации к изменяющимся рыночным условиям.
  4. Простая и понятная логика, легко понятная, удобная для настройки параметров.
  5. Применяется в различных рыночных условиях с хорошей исторической производительностью.

Риски

Для этой стратегии существует также несколько основных рисков:

  1. Неправильное установление параметров ADXR может привести к отсутствию сделок.

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

    • Подумайте о сочетании с другими индикаторами для дальнейшей фильтрации сигнала.
  3. Фиксированные параметры EMA не адаптируются к изменениям рынка.

    • Испытать версию оптимизации с адаптивными параметрами EMA.
  4. Неспособность определить диапазоны торгов может привести к чрезмерным незначительным сделкам.

    • Добавьте дополнительную логику или индикаторы для обнаружения рыночных диапазонов.

Руководство по улучшению

Стратегия может быть дополнительно оптимизирована и усовершенствована в следующих аспектах:

  1. оптимизация параметров EMA для автоматической адаптации к рыночным условиям.

  2. Расширить диапазон параметров ADXR для получения более эффективных торговых сигналов.

  3. Добавить дополнительные индикаторы оценки тренда для комбинационных сигналов для улучшения качества.

  4. Добавьте стратегии стоп-лосса и используйте стандарты прибыли для контроля рисков по торговле.

  5. Оптимизировать управление деньгами для динамического размещения позиций на основе статуса счета.

Заключение

Стратегия двойного скользящего среднего ADX Timing инновационно сочетает в себе традиционные двойные скользящие средние и индикатор ADXR для улучшения качества сигнала и повышения стабильности.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength 
// of the Average Directional Movement Index (ADX). It's calculated by taking 
// the average of the current ADX and the ADX from one time period before 
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening 
// and weakening trends. However, because it represents an average of ADX, values 
// don't fluctuate as dramatically and some analysts believe the indicator helps 
// better display trends in volatile markets.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos

fADX(Len) =>
    up = ta.change(high)
    down = -ta.change(low)
    trur = ta.rma(ta.tr, Len)
    plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ADXR(LengthADX,LengthADXR,Signal1,Signal2) =>
    pos = 0.0
    xADX = fADX(LengthADX)
    xADXR = (xADX + xADX[LengthADXR]) / 2
    pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ ADXR  ═════●'
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input.float(13, step=0.01)
Signal2 = input.float(45, step=0.01)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2)
iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosADXR == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)

Больше