Стратегия Multi Timeframe Breakout генерирует более надежные торговые сигналы путем сочетания сигналов ценового прорыва из двух разных временных рамок. Стратегия одновременно рассчитывает сигналы ценового прорыва на более коротких временных раумах, таких как 1 час, 2 часа, 3 часа и т. д. и более длинных временных раумах, таких как 4 часа, ежедневно и т. д. Она будет генерировать сигналы покупки или продажи только тогда, когда сигналы из двух временных рамок находятся в одном направлении для выполнения соответствующих сделок.
Основная логика этой стратегии состоит в том, чтобы рассчитать сигналы прорыва цен на двух разных временных рамках соответственно, а затем сопоставить их для фильтрации. В частности, стратегия будет проверять, если цены нарушают определенные уровни в более короткие временные рамки (например, 1 час), а также если цены нарушают соответствующие уровни в более длительные временные рамки (например, 4 часа). Только когда сигналы прорыва из двух временных рамок находятся в одном направлении, то есть цены на обеих временных рамках нарушаются вверх или вниз, стратегия будет генерировать торговые сигналы.
Условие для сигнала покупки заключается в том, что цены закрытия или низкие цены как в более короткие, так и в более длинные временные рамки превышают их ценовые уровни. Условие для сигнала продажи заключается в том, что цены закрытия или высокие цены на обеих временных рамках превышают их уровни. Сопоставляя сигналы по временным рамкам таким образом, стратегия может отфильтровать некоторые ложные сигналы и сделать сигналы более надежными.
Самым большим преимуществом этой стратегии является более высокая надежность ее торговых сигналов. Требуя прорыв цен на уровнях в два временных рамок, она может эффективно отфильтровать какой-то шум и избежать плохих сделок. Кроме того, сигналы прорыва из разных временных рамок могут проверять друг друга, что делает торговые возможности более эффективными. Кроме того, стратегия предлагает некоторую гибкость, позволяя пользователям выбирать временные рамки для объединения и источника данных и т. Д. в соответствии со своими потребностями.
Основной риск этой стратегии заключается в том, что во время спокойного рынка Zeitgeists цены могут не прорываться ни на одном из временных рамок. В этом случае стратегия не будет генерировать никаких торговых сигналов и может упустить возможности. Кроме того, между двумя временными рамками существует некоторое отставание, которое может привести к неэффективным сигналам. Кроме того, стратегия не включает в себя логику остановки потери и имеет большие риски.
Эта стратегия может быть оптимизирована в следующих аспектах: 1) Добавить логику стоп-лосса для контроля рисков; 2) Оптимизировать комбинации временных рамок для повышения эффективности; 3) Добавить больше временных рамок для комбинации, чтобы сделать торговые сигналы более строгими; 4) Включить другие индикаторы для фильтрации для улучшения качества сигнала; 5) Разработать механизмы выхода для лучшего контроля прибыли и т. д.
Стратегия многочасового прорыва улучшает качество сигнала путем сравнения ценового прорыва в течение всех временных рамок и является относительно надежной стратегией, следующей за трендом.
/*backtest start: 2023-11-28 00:00:00 end: 2023-12-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Levels Strategy v1.1", shorttitle = "Levels str 1.1", 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") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") tf1 = input('W', title = "timeframe 1") tf2 = input('D', title = "timeframe 2") src = input(ohlc4, "Source") ap = input(true, defval = true, title = "use saw filter") cf = input(true, defval = true, title = "гыу color filter") showlines = input(true, defval = true, title = "Show lines") 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") //Levels level1 = request.security(syminfo.tickerid, tf1, src) level2 = request.security(syminfo.tickerid, tf2, src) col = showlines ? silver : na p1 = plot(level1, linewidth = 3, color = col, title = "Level 1") p2 = plot(level2, linewidth = 3, color = col, title = "Level 2") //Signals up1 = close > level1 and ap == false ? true : low > level1 ? true : false dn1 = close < level1 and ap == false ? true : high < level1 ? true : false up2 = close > level2 and ap == false ? true : low > level2 ? true : false dn2 = close < level2 and ap == false ? true : high < level2 ? true : false //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if up1 and up2 and (close < open or cf == false) strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 and dn2 and (close > open or cf == false) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()