В этой статье будет подробно проанализирована стратегия обратной торговли, основанная на поворотных точках. Стратегия рассчитывает потенциальные уровни поддержки и сопротивления в течение периода и определяет обратные тенденции, когда цена проходит через эти поворотные уровни, что позволяет совершать обратные сделки.
Стратегия в основном опирается на два показателя: Pivot High и Pivot Low.pivothigh()
иpivotlow()
При вычислении поворотных точек периоды слева и направо должны быть установлены; эта стратегия использует 4 периода слева и 2 периода направо.
Когда самая высокая цена последнего периода ниже пивового максимума предыдущего периода, это сигнализирует о возможности реверсии. Если предыдущие позиции были короткими, то теперь следует рассматривать длинные позиции, чтобы извлечь выгоду из реверсии. Аналогично, когда самая низкая цена последнего периода выше предыдущего пивового минимума, существующие длинные позиции следует рассмотреть возможность реверсии на короткие.
В частности, основная логика:
Наибольшее преимущество этой стратегии заключается в выявлении потенциальных точек переворота тренда, что имеет решающее значение для трейдеров-переворотников. По сравнению с другими индикаторами, поворотные точки могут более четко идентифицировать ключевые уровни поддержки / сопротивления без частых ложных сигналов.
Кроме того, стратегия содержит условия как для длинных, так и для коротких входов, охватывающие различные рыночные ситуации, чтобы избежать упущенных возможностей.
Короче говоря, это очень практичная стратегия обратного движения.
Несмотря на усилия по сокращению ложных сигналов, любая стратегия, основанная на взрыве, неизбежно сталкивается с такими проблемами, как преждевременные или отстающие сигналы. Это может привести к планированию длинного входа, но рынок уже перевернулся, или планированию короткого, но внезапно вспыхивает бычий поток. Такая неспособность идеально предсказать переломы является врожденным ограничением технического анализа.
Кроме того, поворотные точки также не могут гарантировать идеальный уровень поддержки / сопротивления. Неудача может привести к тому, что стоп-лосс будет достигнут непосредственно перед реальным уровнем поддержки. Такая неопределенность вокруг ключевых зон не может быть полностью избегнута.
Оптимизация периода. Текущие периоды слева/справа установлены на 4 и 2. Они могут служить начальными значениями и дополнительно оптимизироваться для каждого рынка.
Добавьте фильтры с другими показателями. Например, комбинируйте с объемом, чтобы считать прорывы действительными только тогда, когда они сопровождаются увеличением объема. Это помогает избежать ложных прорывов.
Динамическая остановка потери. В настоящее время остановки устанавливаются с буфером одного минимального тика выше / ниже уровней поворота. Буферная зона может быть динамически регулирована на основе волатильности рынка.
Операция только в направлении тренда. В настоящее время длинные/короткие условия параллельны. Оптимизация заключается только в длинных в восходящих и коротких в нисходящих тенденциях на основе фильтра тренда.
В общем, это простая, но практичная стратегия обратного движения. Определение ключевых точек в течение периода и мониторинг прорывов цены составляют основную идею для обнаружения потенциальных переворотов тренда. Параллельные длинные / короткие условия максимизируют возможности, в то время как стоп-потери управляют риском.
Логика стратегии проста и проста в реализации. Параметры также интуитивно понятны для новичков. Дальнейшие оптимизации могут улучшить производительность для принятия. В целом это рекомендуемая стратегия.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Pivot Reversal Strategy", overlay=true) leftBars = input(4) rightBars = input(2) // backtesting date range from_day = input(defval = 1, title = "From Day", minval = 1) from_month = input(defval = 3, title = "From Month", minval = 1) from_year = input(defval = 2018, title = "From Year", minval = 1970) to_day = input(defval = 1, title = "To Day", minval = 1) to_month = input(defval = 1, title = "To Month", minval = 1) to_year = input(defval = 2100, title = "To Year", minval = 1970) time_cond = (time > timestamp(from_year, from_month, from_day, 00, 00)) and (time < timestamp(to_year, to_month, to_day, 23, 59)) swh = pivothigh(leftBars, rightBars) swl = pivotlow(leftBars, rightBars) swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) if (le and time_cond) strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick) swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) if (se and time_cond) strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)