Импульс Движущийся средний перекрестный тренд После стратегии

Автор:Чао Чжан, Дата: 2023-10-24 12:31:44
Тэги:

img

Обзор

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

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

Основная логика этой стратегии основана на сигналах тренда от кроссоверов MA и сигналах обратного тренда от индикаторов импульса.

  1. Вычислить быструю MA1 (5-периодную HMA) и медленную MA2 (7-периодную HMA).

  2. Золотой крест с ценой1, пересекающейся над ценой2, генерирует длинный сигнал. Смертный крест с ценой1, пересекающейся ниже ценой2, генерирует короткий сигнал.

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

  4. Когда импульс roc1 падает, это считается обратным трендом и существующая позиция будет закрыта.

  5. Введите порог ADX, чтобы избежать ошибочных сигналов, когда они не находятся в состоянии тренда.

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

По сравнению с простыми стратегиями MA, наибольшее преимущество этой стратегии заключается в введении индикаторов импульса для более быстрого и точного определения отмены тренда.

  1. В то время как индикаторы импульса могут быстро улавливать сигналы об обратном движении для своевременной остановки потерь или обратной торговли.

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

  3. ADX избегает неправильных сигналов на рынках, не имеющих тенденций, сохраняя стратегию более ориентированной на тенденции с более высокими шансами на выигрыш.

  4. Логика проста и понятна, подходит для начинающих трейдеров.

  5. Большое пространство для оптимизации путем корректировки периодов MA, параметров импульса и т. д. для разных рынков.

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

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

  1. Отставание МА, которое может вызвать задержку сигналов, отсутствие лучших входных точек.

  2. Ложные прорывы, вызывающие ненужные входы или выходы, требуют дальнейшей оптимизации параметров или дополнительных фильтров.

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

  4. ADX несовершенен в обнаружении тенденций и консолидации. Неправильные пороговые настройки могут вызвать проблемы.

  5. Не учитывая затраты на торговлю, следует установить правильный стоп-лосс при применении в реальной торговле.

Руководство по оптимизации

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

  1. Попробуйте другие виды МА или скорректируйте параметры МА для улучшения эффекта сглаживания.

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

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

  4. Улучшить использование ADX с помощью различных параметров на разных уровнях ADX.

  5. Внедрить индикаторы громкости и т.д. для улучшения качества сигнала и фильтрации ложных прорывов.

  6. Добавьте механизмы остановки потери для контроля потери на одной сделке.

Резюме

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


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(open, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(5, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA"])

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
adxthreshold = input(20, title="ADX threshold")

dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, 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)
	
sig = adx(dilen, adxlen)

//study("Average Directional Index", shorttitle="ADX", format=format.price, precision=2, resolution="")

//plot(sig, color=color.red, title="ADX")

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        f_hma(price, ma2)

//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


//longCondition = price1> price2
longCondition = price1> price2 and sig > adxthreshold
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = price1 < price2 and sig > adxthreshold
if (shortCondition)
    strategy.entry("Short", strategy.short)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

shortexitCondition = ma1up and ma1down[1] and sig > adxthreshold
if (shortexitCondition)
    strategy.close("Short")

longexitCondition = ma1down and ma1up[1] and sig > adxthreshold
if (longexitCondition)
    strategy.close("Long")
    
    



Больше