Стратегия комбинирования многомодельных моделей свечей

Автор:Чао Чжан, Дата: 2023-10-17 15:53:06
Тэги:

img

Обзор

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

Принцип

Основная логика этой стратегии заключается в создании нескольких правил распознавания моделей свечей, а затем генерировать торговые сигналы путем объединения этих правил.

Во-первых, он определяет некоторые базовые переменные для описания свойств свечей, таких как размер тела свечи, цена открытия, цена закрытия и т. Д.

Затем, основываясь на взаимосвязи между ценой закрытия и ценой открытия, он определяет 3 типа торговых строк: 1 для роста, -1 для падения и 0 для отсутствия изменений.

На этой основе построены 3 правила распознавания моделей свечей:

  1. Модель поглощения: текущая свеча поглощает предыдущую, генерируя сигналы покупки или продажи.

  2. Харами-паттерн: предыдущая свеча поглощает текущую, генерируя сигналы покупки или продажи.

  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()

Больше