В процессе загрузки ресурсов... загрузка...

Двухвременная тенденция обратной тенденции модели свечей Количественная стратегия торговли

Автор:Чао Чжан, Дата: 2025-01-10 15:47:53
Тэги:М.А.

 Dual Timeframe Trend Reversal Candlestick Pattern Quantitative Trading Strategy

Обзор

Эта стратегия представляет собой количественную торговую систему, основанную на двух классических моделях свечей: Hammer и Hanging Man. Она предсказывает потенциальные поворотные моменты рынка путем выявления этих обратных моделей. Система сочетает в себе несколько технических индикаторов для подтверждения действительности сигнала, включая отношение между телом свечи и тенями, направление тренда и другие элементы, достигая точного захвата точек обратного движения рынка.

Принцип стратегии

Основная логика стратегии заключается в программировании двух ключевых моделей свечей: 1. Молот: появляется в нисходящих тенденциях, предполагая потенциальное восходящее изменение. Характеризуется небольшим телом, длинной нижней тенью (по крайней мере в два раза длиной тела) и минимальной или отсутствующей верхней тенью. 2. Висячий человек: появляется в восходящих тенденциях, предполагая потенциальное понижение.

Стратегия количественно определяет эти закономерности с помощью строгих параметров, включая: - Минимальная длина тела свечи множитель - Соотношение нижней тени к высоте свечи - Периоды хранения

Преимущества стратегии

  1. Систематическая идентификация: точно идентифицирует сигналы реверсии рынка программатически, избегая субъективного человеческого суждения.
  2. Контролируемый риск: устанавливает четкие периоды хранения, избегая рисков от чрезмерного хранения позиций.
  3. Визуализация сигналов: Интуитивно отображает торговые сигналы на графиках для анализа и оптимизации.
  4. Гибкие параметры: могут регулировать параметры на основе различных рыночных условий, улучшая адаптивность стратегии.

Стратегические риски

  1. Риск ложного прорыва: модели перемены могут генерировать ложные сигналы, которые требуют подтверждения с помощью других технических показателей.
  2. Риск времени: фиксированные периоды хранения могут не в полной мере охватывать потенциал движения цен.
  3. Зависимость от рыночной среды: может генерировать чрезмерные ложные сигналы на различных рынках.

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

  1. Введите фильтры трендов: Добавьте такие индикаторы, как скользящие средние, чтобы отфильтровать тенденции и улучшить качество сигнала.
  2. Динамические периоды хранения: корректировка времени хранения на основе волатильности рынка.
  3. Подтверждение в несколько временных рамок: внедрить механизмы подтверждения тенденций в более длительные временные рамки.
  4. Оптимизация стоп-лосса: Добавление динамических механизмов стоп-лосса для улучшения контроля рисков.

Резюме

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


/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Hammer and Hanging Man Strategy", overlay=true)

// Input parameters
length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1)
shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0)
holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1)  // Holding period in bars

// Function to calculate the absolute value
absValue(x) =>
    x >= 0 ? x : -x

// Function to check if it is a Hammer
isHammer() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close > open

// Function to check if it is a Hanging Man
isHangingMan() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close < open

// Detect the candles
hammer = isHammer()
hangingMan = isHangingMan()

// Trading logic: Long on Hammer, Short on Hanging Man
if hammer
    strategy.entry("Long", strategy.long)  // Long entry on Hammer

if hangingMan
    strategy.entry("Short", strategy.short)  // Short entry on Hanging Man

// Exit after X bars
if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Long")

if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Short")

// Visualization of signals
plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")

Связанные

Больше