Эта стратегия оценивает направление тренда на основе долгосрочного прорыва поддержки/сопротивления и входит в позицию, когда поддержка/сопротивление нарушается. Она использует зигзаг для определения вершин и долин, подтверждая вершины/долины с 2 полосами, поэтому есть 2 полосы задержки. Она рассчитывает разницу между SMA вершин и долин в определенный период (21 по умолчанию) как альтернативный уровень SR. Эта идея получена из индикатора Nebula-Advanced-Dynamic-Support-Resistance SynapticEx
Стратегия использует следующую логику для определения тенденций и торговых сигналов:
Подтвердить вершины/долины зигзагом: когда в последних 5 барах, бар 5 пик < бар 4 пик < бар 3 пик > бар 2 пик > бар 1 пик, бар 3 долина подтверждается как самая низкая долина. Подтвердить самый высокий пик аналогично.
Вычислить количество пиков hn и долин ln в определенном периоде (по умолчанию 21). Если hn>0 и ln>0, вычислить средний уровень пиков hsum/hn и средний уровень долин lsum/ln. Их разница r используется в качестве альтернативного уровня SR.
Для определения направления тренда сравнивают ценовую границу с динамическим сопротивлением lvalr и поддержкой hvalr.
Идите длинные, когда происходит действительный прорыв сопротивления. Идите короткие, когда происходит действительный прорыв поддержки.
Преимущества этой стратегии:
Использование зигзага для подтверждения SR обеспечивает точность, избегая ложного прорыва.
SR, основанный на долгосрочной статистике, более ценен для снижения риска.
Альтернативный SR улучшает действительность сигналов прорыва.
Логика проста и понятна, подходит для квантовой торговли.
Настраиваемый статистический период подходит для различных циклов и продуктов.
Риски этой стратегии:
2 бара задержки с зигзагом могут пропустить лучшую точку входа.
Прогноз SR только для справки, аномальный прорыв может произойти.
Неправильный статистический период приводит к недействительному SR.
Снижение цены после прорыва может привести к остановке потерь.
Насильственное колебание цен после входа приводит к большим потерям.
Решения:
Сократить статистический период должным образом, чтобы уменьшить задержку.
Объедините больше факторов для прогнозирования SR.
Устойчивость испытаний различных периодов.
Установите разумный уровень стоп-лосса.
Используйте размеры позиций, чтобы ограничить однократные потери.
Стратегия может быть оптимизирована из следующих аспектов:
Используйте машинное обучение для прогнозирования SR, улучшая уровень успеха сигналов прорыва.
Объем конфигурации объединяется, чтобы подтвердить действительность сигналов прорыва.
Классифицировать статистику SR на основе различных циклов, повышая эффективность SR.
Добавить позицию на прибыль, установить остановку, чтобы сбалансировать прибыль/убыток.
Комбинировать MA для определения тренда, избегая слепого длинного/короткого без тренда.
В заключение, это надежный тренд после стратегии. Он имеет высокую точность в определении направления тренда и надлежащего контроля риска. Но задержка делает невозможным получать прибыль от каждого длинного / короткого сигнала. Таким образом, он подходит для опытных квантовых трейдеров, чтобы комбинировать с их собственными стратегиями. Оптимизируя статистические периоды и интегрируя другие индикаторы или модели, он может стать эффективной стратегией после тренда.
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SR TREND STRATEGY", shorttitle="SR TREND", overlay=true, calc_on_order_fills=true) //based on by synapticEx SR indicator https://www.tradingview.com/script/O0F675Kv-Nebula-Advanced-Dynamic-Support-Resistance/ length = input(title="SR lookbak length", type=input.integer, defval=21) h = bar_index>5 and high[5]<high[4] and high[4]<high[3] and high[3]>high[2] and high[2]>high[1] ? 1 : 0 l = bar_index>5 and low[5]>low[4] and low[4]>low[3] and low[3]<low[2] and low[2]<low[1] ? 1 : 0 ln = sum(l, length) hn = sum(h, length) hval = h>0 ? high[3] : 0 lval = l>0 ? low[3] : 0 lsum = sum(lval, length) hsum = sum(hval, length) r = ln>0 and hn>0 ? abs((hsum/hn) - (lsum/ln)): 0 float lvalc = na float lvalr = na float hvalc = na float hvalr = na lvalc := lval and r>0 ? lval : lvalc[1] lvalr := lval and r>0 ? lval+r : lvalr[1] hvalc := hval and r>0 ? hval : hvalc[1] hvalr := hval and r>0 ? hval-r : hvalr[1] int trend=0 trend:=close > lvalr and close > hvalr ? 1 : close < lvalr and close < hvalr ? -1 : trend[1] strategy.close("Long", when=trend==-1) strategy.close("Short", when=trend==1) strategy.entry("Long", strategy.long, when=trend==1 and close>hvalc) strategy.entry("Short", strategy.short, when=trend==-1 and close<lvalc) int long=0 int short=0 long:= trend==1 and close>hvalc ? 1 : trend==-1 ? -1 : long[1] short:= trend==-1 and close<lvalc ? 1 : trend==1 ? -1 : short[1] barcolor(long>0? color.green : short>0? color.red : trend>0? color.white: trend<0 ? color.orange : color.blue)