Эта стратегия сочетает в себе несколько моделей моделей свечей для торговли акциями. Она включает в себя схему поглощения, схему харами и схему харами для захвата торговых возможностей в различных рыночных условиях.
Основная логика этой стратегии заключается в создании нескольких правил распознавания моделей свечей, а затем генерировать торговые сигналы путем объединения этих правил.
Во-первых, он определяет некоторые базовые переменные для описания свойств свечей, таких как размер тела свечи, цена открытия, цена закрытия и т. Д.
Затем, основываясь на взаимосвязи между ценой закрытия и ценой открытия, он определяет 3 типа торговых строк: 1 для роста, -1 для падения и 0 для отсутствия изменений.
На этой основе построены 3 правила распознавания моделей свечей:
Модель поглощения: текущая свеча поглощает предыдущую, генерируя сигналы покупки или продажи.
Харами-паттерн: предыдущая свеча поглощает текущую, генерируя сигналы покупки или продажи.
Харами кросс-паттерн: комбинация Харами и Доджи, генерирующая сигналы покупки или продажи.
Согласно этим моделям свечей, можно определить время покупки и продажи. Некоторые дополнительные условия объединяются для фильтрации недействительных сигналов, таких как ограничение временного диапазона торговли.
Логика торговли сначала проверяет существующую позицию. Если она противоречит направлению сигнала, она сначала закрывает текущую позицию, а затем открывает новую позицию в соответствии с сигналом.
Комбинация повышает стабильность. Единая модель подвержена специфическим рыночным условиям. Комбинация может повысить надежность.
Подтверждение повышает точность. Различные модели подтверждают друг друга. Ложные сигналы можно избежать.
Гибкость: пользователи могут свободно комбинировать модели и корректировать параметры для различной динамики рынка.
Контроль рисков. Логика стоп-лосса и управления позициями эффективно управляет рисками.
Больше параметров означает больше сложности, неправильная комбинация может подорвать производительность.
Настройка параметров требует опыта.
Односторонний риск держания. Долгий или короткий только ограничивает потенциал прибыли. Допустить как длинный и короткий может помочь.
Отсутствие обратных точек. Сосредоточение внимания на моделях упускает из виду сигналы об обратном тренде. Добавление других индикаторов может помочь определить потенциальные обратные точки.
Добавить стоп-лосс для снижения риска держания.
Включить другие технические индикаторы для определения общей тенденции, избегая торговли против основной тенденции.
Испытать параметры модели на различных продуктах, установить оптимальные наборы параметров для каждого продукта.
Внедрение машинного обучения для оптимизации параметров и распознавания моделей с использованием ИИ.
Эта стратегия создает относительно стабильную краткосрочную торговую систему путем сочетания нескольких моделей свечей. Но настройка параметров и контроль рисков все еще нуждаются в улучшении для адаптации к более сложным рынкам. В целом она имеет прочную логику и имеет большой потенциал после накопления достаточных данных и опыта, а также использования машинного обучения для интеллектуальной оптимизации.
/*backtest start: 2022-10-10 00:00:00 end: 2023-10-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's CandleModels Tests", shorttitle = "CandleModels tests", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") eng = input(true, defval = true, title = "Model Engulfing") har = input(true, defval = true, title = "Model Harami") harc = input(true, defval = true, title = "Model Harami Cross") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") rev = input(false, defval = false, title = "Reversive trading") //Body body = abs(close - open) abody = sma(body, 10) //MinMax Bars min = min(close, open) max = max(close, open) //Signals bar = close > open ? 1 : close < open ? -1 : 0 doji = body < abody / 10 up1 = eng and bar == 1 and bar[1] == -1 and min <= min[1] and max >= max[1] dn1 = eng and bar == -1 and bar[1] == 1 and min <= min[1] and max >= max[1] up2 = har and bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] dn2 = har and bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] up3 = harc and doji and bar[1] == -1 and low >= min[1] and high <= max[1] dn3 = harc and doji and bar[1] == 1 and low >= min[1] and high <= max[1] exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2 and rev == false //Trading if up1 or up2 or up3 if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 or dn3 if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()