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

Комбинированная многовременная стратегия торговли признанием моделей свечей

Автор:Чао Чжан, Дата: 2024-12-11 11:04:35
Тэги:ОАОППТС

img

Обзор

Эта стратегия представляет собой автоматизированную торговую систему, основанную на распознавании моделей свечей. Она включает в себя десять классических моделей свечей, в том числе пять бычьих моделей (Hammer, Bullish Engulfing, Piercing Line, Morning Star и Three White Soldiers) и пять медвежьих моделей (Hanging Man, Bearish Engulfing, Dark Cloud Cover, Evening Star и Three Black Crows).

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

Ядро стратегии заключается в программируемой реализации точного распознавания моделей свечей.

  1. Для отдельных моделей свечей (например, Hammer, Hanging Man), суждение в основном основывается на соотношении между телом и тенью
  2. Для двух моделей свечей (например, Engulfing, Piercing Line) суждение производится путем сравнения относительных позиций соседних свечей открытых и закрытых цен.
  3. Для трёх моделей свечей (например, трех белых солдат, трех черных ворон) должны быть выполнены одновременно несколько условий, касающихся направления тренда и отношений позиций. Стратегия позволяет пользователям гибко включить или отключить распознавание конкретных моделей с помощью параметров.

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

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

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

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

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

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

Резюме

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


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Author: Raymond Ngobeni
strategy('Candlestick Pattern Strategy [Ubaton]', 'Ubaton - Candlestick Pattern Strategy', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500)

// User Inputs: Enable/Disable Patterns
// Bullish Patterns
enableHammer = input.bool(true, "Show Hammer")
enableBullEngulfing = input.bool(true, "Show Bullish Engulfing")
enablePiercingLine = input.bool(true, "Show Piercing Line")
enableMorningStar = input.bool(true, "Show Morning Star")
enableThreeWhiteSoldiers = input.bool(true, "Show Three White Soldiers")

// Bearish Patterns
enableHangingMan = input.bool(true, "Show Hanging Man")
enableBearEngulfing = input.bool(true, "Show Bearish Engulfing")
enableDarkCloudCover = input.bool(true, "Show Dark Cloud Cover")
enableEveningStar = input.bool(true, "Show Evening Star")
enableThreeBlackCrows = input.bool(true, "Show Three Black Crows")

// Helper Functions
isHammer() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize

isBullishEngulfing() =>
    close[1] < open[1] and close > open and open <= close[1] and close >= open[1]

isPiercingLine() =>
    close[1] < open[1] and close > close[1] + (open[1] - close[1]) * 0.5 and close < open[1]

isMorningStar() =>
    close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close > open

isThreeWhiteSoldiers() =>
    close > open and close[1] > open[1] and close[2] > open[2] and open > close[1] and open[1] > close[2]

isHangingMan() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize and close < open

isBearishEngulfing() =>
    close[1] > open[1] and close < open and open >= close[1] and close <= open[1]

isDarkCloudCover() =>
    close[1] > open[1] and open > close[1] and close < open[1] and close < close[1] + (open[1] - close[1]) * 0.5

isEveningStar() =>
    close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close < open

isThreeBlackCrows() =>
    close < open and close[1] < open[1] and close[2] < open[2] and open < close[1] and open[1] < close[2]

// Detect Patterns
// Bullish
hammerDetected = enableHammer and isHammer()
bullEngulfDetected = enableBullEngulfing and isBullishEngulfing()
piercingDetected = enablePiercingLine and isPiercingLine()
morningStarDetected = enableMorningStar and isMorningStar()
threeWhiteDetected = enableThreeWhiteSoldiers and isThreeWhiteSoldiers()

// Bearish
hangingManDetected = enableHangingMan and isHangingMan()
bearEngulfDetected = enableBearEngulfing and isBearishEngulfing()
darkCloudDetected = enableDarkCloudCover and isDarkCloudCover()
eveningStarDetected = enableEveningStar and isEveningStar()
threeBlackDetected = enableThreeBlackCrows and isThreeBlackCrows()

// Plot Bullish Patterns
plotshape(enableHammer and hammerDetected, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(enableBullEngulfing and bullEngulfDetected, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.labelup, text="Engulf")
plotshape(enablePiercingLine and piercingDetected, title="Piercing Line", location=location.belowbar, color=color.green, style=shape.labelup, text="Piercing")
plotshape(enableMorningStar and morningStarDetected, title="Morning Star", location=location.belowbar, color=color.green, style=shape.labelup, text="Morning")
plotshape(enableThreeWhiteSoldiers and threeWhiteDetected, title="Three White Soldiers", location=location.belowbar, color=color.green, style=shape.labelup, text="3 Soldiers")

// Plot Bearish Patterns
plotshape(enableHangingMan and hangingManDetected, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging")
plotshape(enableBearEngulfing and bearEngulfDetected, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulf")
plotshape(enableDarkCloudCover and darkCloudDetected, title="Dark Cloud Cover", location=location.abovebar, color=color.red, style=shape.labeldown, text="Dark Cloud")
plotshape(enableEveningStar and eveningStarDetected, title="Evening Star", location=location.abovebar, color=color.red, style=shape.labeldown, text="Evening")
plotshape(enableThreeBlackCrows and threeBlackDetected, title="Three Black Crows", location=location.abovebar, color=color.red, style=shape.labeldown, text="3 Crows")

// Strategy Execution
if hammerDetected or bullEngulfDetected or piercingDetected or morningStarDetected or threeWhiteDetected
    strategy.entry("Bullish Entry", strategy.long)

if hangingManDetected or bearEngulfDetected or darkCloudDetected or eveningStarDetected or threeBlackDetected
    strategy.entry("Bearish Entry", strategy.short)

Связанные

Больше