Эта стратегия сочетает в себе PSAR для оценки ценовых тенденций, ADX для оценки силы тренда, RSI для определения зон перекупленности и перепроданности и CMF для определения потоков средств для построения внутридневной количественной торговой стратегии, следующей за трендом в течение циклов. Она может быстро определить направления новых тенденций, когда цены выходят из консолидации и формируют новые тенденции, и продолжает отслеживать тенденции после этого.
Основными правилами оценки этой стратегии являются:
Используйте индикатор PSAR, чтобы судить о том, находятся ли цены в восходящем тренде.
Требуйте, чтобы RSI был выше средней точки 50 для фильтрации ложных прорывов, происходящих в перепроданных зонах.
Требовать, чтобы ADX был выше своей линии EMA, что указывает на устойчивый сигнал в анализе тенденций.
Требовать, чтобы CMF был больше 0, судя по увеличению поступления средств.
Сигналы покупки генерируются при выполнении всех четырех условий выше. Условия продажи возникают, когда PSAR поднимается выше цен, RSI падает ниже 50, ADX падает ниже своей EMA и CMF становится меньше 0.
Эта стратегия всесторонне учитывает направление ценового тренда, силу тренда, состояние перекупленности / перепроданности и потоки средств при установлении правил торговли.
К основным преимуществам этой стратегии относятся:
Объединение нескольких индикаторов при установлении правил торговли может эффективно предотвратить ложные прорывы и обеспечить качество сигнала.
Быстрое определение направления и отслеживание начинающегося тренда позволяет получить большую часть прибыли от тренда.
Установка условий фильтрации процесса позволяет эффективно контролировать риски и обеспечивает эффективность отслеживания.
Учитывая силу тренда, можно избежать перегрузок в диапазоне торговли.
К основным рискам этой стратегии относятся:
Накопление одной стратегии создает риски для портфеля, что требует соответствующего размещения позиций.
Следите за изменением состояния фильтрации во время отслеживания, чтобы избежать потерь при отмене.
Эта среднесрочная и долгосрочная стратегия может быть нарушена в краткосрочной перспективе колебаниями и сопряжена с рисками стоп-лосса.
Соответствующие меры по управлению рисками включают: оптимизацию правил размещения позиций, установку линий предупреждения риска и расширение расстояний остановки и т.д.
Пространства оптимизации включают:
Оптимизация параметров с помощью машинного обучения с учетом текущих субъективных настроек.
Добавить модуль размещения позиций, который динамически размещает на основе рисков.
Улучшить механизмы остановки, например, остановки задержки, временные остановки или остановки прорыва.
Эта стратегия, объединяющая индикаторы, оказалась эффективной в быстром определении и отслеживании зарождающихся тенденций, проверке количественной торговли на основе нескольких измерений, таких как тенденции и фонды.
/*backtest start: 2023-11-14 00:00:00 end: 2023-12-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("psar+ adx + cmf + rsi Strategy", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 ) start = input(1.02) increment = input(1.02) maximum = input(1.2) var bool uptrend = na var float EP = na var float SAR = na var float AF = start var float nextBarSAR = na if bar_index > 0 firstTrendBar = false SAR := nextBarSAR if bar_index == 1 float prevSAR = na float prevEP = na lowPrev = low[1] highPrev = high[1] closeCur = close closePrev = close[1] if closeCur > closePrev uptrend := true EP := high prevSAR := lowPrev prevEP := high else uptrend := false EP := low prevSAR := highPrev prevEP := low firstTrendBar := true SAR := prevSAR + start * (prevEP - prevSAR) if uptrend if SAR > low firstTrendBar := true uptrend := false SAR := max(EP, high) EP := low AF := start else if SAR < high firstTrendBar := true uptrend := true SAR := min(EP, low) EP := high AF := start if not firstTrendBar if uptrend if high > EP EP := high AF := min(AF + increment, maximum) else if low < EP EP := low AF := min(AF + increment, maximum) if uptrend SAR := min(SAR, low[1]) if bar_index > 1 SAR := min(SAR, low[2]) else SAR := max(SAR, high[1]) if bar_index > 1 SAR := max(SAR, high[2]) nextBarSAR := SAR + AF * (EP - SAR) //rsi strat length = input( 50 ) middle_RSI=input(49) price = close vrsi = rsi(price, length) //cmf lengthCMF = input(20, minval=1) ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthCMF) / sum(volume, lengthCMF) //ADX adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") 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) ema_length=input(10) ema_sig= ema(sig,ema_length) long = not uptrend and vrsi > middle_RSI and sig > ema_sig and mf>0 short= uptrend and vrsi < middle_RSI and sig<ema_sig and mf<0 strategy.entry("long",1,when=long) strategy.close('long',when=short)