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


Дата создания: 2023-09-19 21:51:14 Последнее изменение: 2023-09-19 21:51:14
Копировать: 1 Количество просмотров: 733
1
Подписаться
1617
Подписчики

Обзор

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

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

  1. 123 стратегия обратного обращения: когда цена закрытия 2 дня подряд ниже цены закрытия предыдущего дня и 9 дней медленная линия K ниже 50, она становится выше цены закрытия предыдущего дня; когда цена закрытия 2 дня подряд выше цены закрытия предыдущего дня и 9 дней быстрая линия K выше 50.

  2. Стратегия DMI: делать больше, когда +DI входит в -DI; делать пустое, когда +DI входит в -DI.

  3. Стратегия движущихся средних: сделайте больше при прохождении движущейся средней над ценой закрытия; сделайте пустоту при прохождении движущейся средней ниже ценой закрытия.

  4. Три стратегических сигнала появляются при открытии позиции, в противном случае она становится плоской.

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

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

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

  2. Обратная стратегия в сочетании с трендовой стратегией позволяет ловить как обратную, так и трендовую стратегию, гибкую торговлю.

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

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

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

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

  1. Обратная стратегия легко запутается в шокирующем тренде. Ее можно избежать, объединив стратегию с трендом.

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

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

  4. Несмотря на то, что многостратегическое сочетание повышает вероятность победы, оно также увеличивает сложность стратегии.

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

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

  1. Оптимизация параметров стратегии, чтобы найти оптимальную комбинацию параметров.

  2. Добавление фильтров других показателей, таких как MACD, RSI и т. Д., Дальнейшее повышение стабильности стратегии.

  3. Добавление стратегий по прекращению убытков, таких как остановка тренда, остановка шока и т. д., чтобы контролировать риск.

  4. Оптимизация управления позициями, такие как фиксированные позиции, динамические позиции и т. д., повышение доходности стратегии.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/10/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

DMIMA(Length_MA, Length_DMI) =>
    pos = 0.0
    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)))
    pos

strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
	   iff(posReversal123 == -1 and posDMIMA == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )