Стратегия отката тренда на основе индикаторов ADX EFI


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

Обзор

Стратегия использует 50-циклический среднелинейный канал и динамический индекс ADX, а также комбинацию EFI-энергетических индикаторов для торговли трендами. Когда EFI-энергетические индикаторы показывают тенденцию, после того, как они запускаются, в область 50-ти среднелинейных каналов вводятся обратные курсы. Стратегия применима к 1-минутным временным периодам.

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

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

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

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

  4. Покупательная операция проводится, когда длинно- и короткопериодический индикатор EFI подает сигнал о покупке, и цена возвращается к 50-му среднелинейному каналу.

  5. Продажа проводится, когда длинно-короткий период EFI дает сигнал продажи, и цена возвращается к 50 среднелинейным каналам.

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

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

  1. 50 среднелинейных каналов четко определяют основные тенденции.

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

  3. Индекс EFI оценивает, что покупатели совершают покупки в момент усиления энергии тренда, снижая риск покупки.

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

  5. Помимо того, что это означает, что у нас есть много различных показателей, мы можем эффективно отфильтровывать риски, связанные с ложными прорывами.

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

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

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

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

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

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

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

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

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

  2. Добавление стратегии стоп-лосса для блокировки прибыли путем отслеживания стоп-лосса.

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

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

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

  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)