ADX EFI 50 Стратегия обратного отбора движущихся средних каналов

Автор:Чао Чжан, Дата: 2023-09-19 17:10:51
Тэги:

Обзор

Эта стратегия использует комбинацию 50-периодного скользящего среднего канала, направленного индекса ADX и энергетического индекса EFI для торговли трендом.

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

  1. Вычислить 50-периодный канал скользящей средней, с верхней полосой скользящего среднего высоких цен, а нижней полосой скользящего среднего низких цен.

  2. Для определения силы тренда рассчитывать направленный индекс ADX и рассматривать торговлю только в период сильных тенденций (ADX>20).

  3. Вычислить долгосрочные (120-периодные) и краткосрочные (15-периодные) энергетические индексы EFI. Долгосрочный индекс выше 0 указывает на общую тенденцию к росту энергетики, в то время как краткосрочный индекс ниже 0 указывает на краткосрочную тенденцию к снижению.

  4. Когда долгосрочные и краткосрочные индексы EFI дают сигнал покупки, и цена возвращается к каналу 50 MA, занимается длинная позиция.

  5. Когда долгосрочные и краткосрочные индексы EFI дают сигнал продажи, и цена возвращается к каналу 50 MA, занимается короткая позиция.

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

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

  1. Канал 50 MA четко определяет направление основного тренда.

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

  3. Индекс EFI отражает тенденционные энергетические всплески для точек входа с низким риском.

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

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

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

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

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

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

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

  4. Один инструмент торговли не способна диверсифицировать системные риски рынка.

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

Эта стратегия может быть улучшена в нескольких аспектах:

  1. Испытать на большем количестве приборов, чтобы найти оптимальные универсальные параметры.

  2. Добавьте получение прибыли через остановку потерь.

  3. Оптимизация параметров настройки ADX, EFI и многое другое.

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

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

  6. Оценить больше показателей фильтрации тенденций для улучшения качества сигнала.

Резюме

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


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © trent777brown

//@version=5
// strategy("adx efi 50 ema channel, trend pullback", overlay=true, margin_long=100, margin_short=100, currency=currency.USD, initial_capital= 100000, close_entries_rule="ANY")

//bollingerbands
[basis, upperband, lowerband]= ta.bb(ohlc4, 50, 3) 
[basis2, upperband2, lowerband2]= ta.bb(ohlc4, 50, 2)
psar= ta.sar(.1, .1, .09)
ema50= ta.ema(hlc3, 50) 
ema50hi= ta.ema(high, 50) 
ema50lo= ta.ema(low, 50) 
ema18= ta.wma(hlc3, 15)
wma9= ta.wma(open, 9) 
wma5= ta.wma(ohlc4, 5) 
ema34= ta.rma(hlc3, 10)
[macdline, signalline, histline]= ta.macd(hlc3, 5, 34, 5) 
[macdline2, signalline2, histline2]= ta.macd(hlc3, 15,70, 24) 
[diplus, diminus, adx]= ta.dmi(20, 20) 
[diplus2, diminus2, adx2]= ta.dmi(12, 12)
rsi= ta.rsi(hlc3, 14)
rsisma= ta.sma(rsi, 10) 
stoch= ta.stoch(close, high, low, 21)
k= ta.wma(stoch, 3)
d= ta.wma(k, 3)
trendline5= ta.wma(hlc3, 300) 
trendline9= ta.wma(open, 540) 
trendline18= ta.wma(open, 1080)
atr=ta.atr(14)
plot(psar, color=color.red, style=plot.style_circles)
plot(ema50, color=color.white, linewidth=4) 
plot(ema50hi, color=color.yellow, linewidth=4)
plot(ema50lo, color=color.yellow, linewidth=4)
plot(ema34, color=color.aqua, linewidth=4)
plot(wma9, color=color.gray, linewidth=4) 
plot(wma5, color=color.lime, linewidth=4) 
plot(trendline18, color=color.orange, linewidth=4) 
plot(upperband, color=color.navy, linewidth=4) 
plot(lowerband, color=color.navy, linewidth=4)
plot(upperband2, color=color.navy, linewidth=4)
plot(lowerband2, color=color.navy, linewidth=4)
plot(trendline9, color=color.maroon, linewidth=4)
plot(trendline5, color=color.yellow, linewidth=4)


efi = ta.rma(ta.change(close) * volume, 15)
efi2= ta.rma(ta.change(close) * volume, 120)

buy= efi2 > 0 and efi < 0 and efi[1] < efi  and adx >= 20 and open < ema50hi
sell= efi2 < 0 and efi > 0 and efi[1] > efi and adx >= 20 and open > ema50lo

//ell= rsi > 50 and ta.crossunder(wma5, wma9) and psar > high and ema18 <= ema50hi and macdline > 0 and macdline < signalline
//buy= ta.crossunder(close, ema50) and rsi < 50 and adx2 < adx2[1] and k < 25 and psar > high
//uy= rsi < 60 and ta.crossover(wma5, wma9)  and psar < low and ema18 >= ema50 and macdline2 > 0 and diplus2 < 30 // and histline2 < 0  
//buy=  ema18 > ema50 and ta.crossunder(rsi, 45) and open < ema50hi and adx2[3] < adx2 and diplus2 < 25 and macdline < 0  and adx < 10
//sell= ta.crossover(close, ema50) and rsi > 50 and adx2 < adx2[1] and k > 75 and psar < low
//ell= ema18 < ema50 and ta.crossover(rsi, 60) and open > ema50lo and diminus2 < 30 and macdline2 < 0 and adx2[2] < adx2 
//buy sell conditions 1
//buy= ta.crossover(wma5, ema18) and ema18 > ema50lo and diplus > 22 and diminus < 22 and adx > 15
//ell= ta.crossover(psar, high) and macdline2 < signalline2 and rsi < rsisma
//when conditions
buytrig= ema34 >= ema50lo
selltrig= ema34 <= ema50hi
//strategy
sl= low - atr * 8
tp= high +  atr * 4
sellsl= high + atr * 8
selltp= low - atr * 4
if(buy)
    strategy.entry("buy", strategy.long, when= buytrig)
    strategy.exit("exit buy", "buy", limit= tp, stop= sl)
    strategy.close("close", when= ta.crossunder(ema34, ema50lo))
if(sell)
    strategy.entry("sell", strategy.short, when= selltrig)
    strategy.exit("exit sell", "sell", limit= selltp, stop= sellsl)


Больше