Торговая стратегия на основе DMI и скользящей средней


Дата создания: 2023-09-28 12:39:44 Последнее изменение: 2023-09-28 12:39:44
Копировать: 2 Количество просмотров: 910
1
Подписаться
1617
Подписчики

Обзор

Стратегия идентифицирует направление тренда в сочетании с трендовым индикатором DMI и движущейся средней для подачи сигналов о покупке и продаже. Стратегия создает торговый сигнал, когда DMI показывает, что предложение вступило в состояние тренда, а движущаяся средняя подтверждает направление тренда.

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

Стратегия основана на двух показателях:

  1. DMI включает в себя DMI+ и DMI-, используемые для идентификации наличия и направления тренда. Когда DMI+ выше DMI-, указывается на повышение; когда DMI- выше DMI+, указывается на снижение.

  2. Движущаяся средняя, обычно выбираемая средняя от 15 до 50 дней, используется для определения направления ценовой тенденции. Когда цена выше (ниже) движущейся средней, она показывает тенденцию к росту (снижению).

Сначала стратегия рассчитывает ДМИ+, ДМИ- и движущиеся средние. В то время как ДМИ показывает состояние тренда ((ДМИ+ выше ДМИ- или ДМИ- выше ДМИ+), в то же время, если движущаяся средняя также подтверждает направление тренда, то создается торговый сигнал.

  • Когда DMI+ пересекает DMI- и цена пересекает скользящую среднюю, делайте больше;
  • При использовании DMI+ на DMI- и переходе цены вниз по движущейся средней, сделайте пробел.

В этой стратегии также добавлена опция обратного ввода. После включения обратного ввода, сигналы опережения и пустоты будут обратными.

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

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

Преимущество DMI заключается в том, что он позволяет быстро идентифицировать тренды. В то время как движущаяся средняя может отфильтровывать часть шума, подтверждая направление тренда.

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

Анализ рисков

Основные риски этой стратегии:

  1. При переходе в тренд может возникнуть ошибочный сигнал, что может привести к убыткам. Для этого необходимо скорректировать параметры или установить стоп-лосс, чтобы контролировать риск.

  2. Формирование тренда занимает определенное время, в течение которого стратегия подвержена воздействию ценовых колебаний, создавая ошибочные сигналы. Для фильтрации такого шума можно соответствующим образом скорректировать DMI и параметры промежуточного периода движущейся средней.

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

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

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

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

  1. Тестирование различных циклических параметров скользящих средних и нахождение оптимальной комбинации параметров для преобразования тенденции сцепления.

  2. Тестирование параметров цикла сглаживания DMI, кратковременный обратный шум, возникающий в фильтрующей тенденции.

  3. Оценить разницу между эффективностью включенной обратной опции и торговли по умолчанию в историческом отслеживании и выбрать более оптимальный вариант.

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

  5. Оценить эффективность оптимизации параметров различных сортов и циклов, оптимизировать комбинацию параметров.

  6. Фильтрация в сочетании с другими индикаторами, такими как сильный и слабый RSI, позволяет избежать ошибочных сигналов в локальных критических точках.

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

Эта стратегия объединяет преимущества обоих показателей - динамического трендового индикатора DMI и движущейся средней, чтобы войти в игру раньше, когда формируются тенденции, и избежать заключения в шоковых ситуациях. Опция обратной торговли также увеличивает гибкость стратегии.

Исходный код стратегии
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/03/2017
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Combining DMI And Moving Average For A EUR/USD Trading System")
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
xMA = sma(close, Length_MA)
up = change(high)
down = -change(low)
trur = rma(tr, Length_DMI)
xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
nPDI = xPDI
nNDI = xNDI
nMA = xMA
nPDI_1 = xPDI[1]
nNDI_1 = xNDI[1]
nMA_1 = xMA[1]
bMDILong =iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
           iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
bMDIShort =  iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
              iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
bMALong = iff(close > nMA and close[1] < nMA_1, true, 
           iff(close < nMA and close[1] > nMA_1, false, false))
bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
             iff(close < nMA and close[1] > nMA_1, true, false))
pos = iff(bMDILong and bMALong, 1, 
     iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1 )
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nPDI, color=green, title="DMI Plus")
plot(nNDI, color=red, title="DMI Minus")