Стратегия кроссовера скользящей средней Ichimoku определяет длинные и короткие сигналы путем расчета набора скользящих средних и обнаружения ценовых перекрестков.
Стратегия Ичимоку использует специализированную систему, состоящую из 5 скользящих средних линий, а именно линии конверсии, базовой линии, лидирующего спена 1, лидирующего спена 2 и отстающего спена. В частности, линия конверсии изображает недавний импульс цены, базовая линия показывает средне-долгосрочную тенденцию, лидирующие линии объединяют конверсию и базу для прогнозирования будущих движений, а отстающий спен отображает прошлые цены для ссылки. Торговые сигналы генерируются, когда цена проходит через базовую линию. Стратегия также включает фильтры тела и цвета свечей, чтобы избежать ложных перерывов.
Стратегия Ичимоку объединяет сильные стороны различных технических индикаторов в одну систему. Она объединяет концепции скользящих средних, ценовых каналов, подтверждения объема и т. Д., Формируя систематическую методологию. Это обеспечивает точность и направленность торговых сигналов. По сравнению с стратегиями с одним индикатором, она значительно уменьшает ложные сигналы и увеличивает факторы прибыли.
Стратегия Ichimoku имеет относительно длинные торговые интервалы. Это означает, что краткосрочные колебания цен не могут быть зафиксированы. Кроме того, скользящие средние не срабатывают, когда цены сильно колеблются. Такие ситуации могут привести к неправильным сигналам и потерям в сделках.
Стратегия Ichimoku может быть улучшена в таких областях, как: 1) корректировка средних параметров для разных периодов и продуктов; 2) включение показателей объема для подтверждения отношений цена-объем; 3) внедрение моделей машинного обучения для уточнения определения сигнала; 4) добавление большего количества фильтров для снижения вероятности неправильной торговли.
Стабильная и надежная стратегия кроссовера скользящей средней Ichimoku подходит в качестве основной стратегии в сочетании с другими алгоритмами. Ее четкое направление тренда и гибкость благодаря настройке параметров и оптимизации мультииндикаторов делают ее полезной для углубленных исследований и долгосрочного применения квантовыми трейдерами.
/*backtest start: 2023-11-18 00:00:00 end: 2023-12-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Ichimoku Strategy v1.0", shorttitle = "Ichimoku str 1.0", 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") conversionPeriods = input(9, minval = 1, title = "Conversion Periods") basePeriods = input(26, minval = 1, title = "Base Periods") laggingSpan2Periods = input(52, minval = 1, title = "Lagging Span") usebf = input(true, defval = true, title = "Use body filter") usecf = input(true, defval = true, title = "Use color filter") 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") //Ichimoku donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //Lines plot(conversionLine, color=red, title="Conversion Line") plot(baseLine, color=blue, title="Base Line") plot(close, offset = -basePeriods, color=green, title="Lagging Span") p1 = plot(leadLine1, offset = basePeriods, color=green, title="Lead 1") p2 = plot(leadLine2, offset = basePeriods, color=red, title="Lead 2") fill(p1, p2) //Body Filter nbody = abs(close - open) abody = sma(nbody, 10) body = nbody > abody / 3 or usebf == false //Color Filter bar = close > open ? 1 : close < open ? -1 : 0 gb = bar == 1 or usecf == false rb = bar == -1 or usecf == false //Signals up = low > baseLine and rb and body dn = high < baseLine and gb and body //Trading if up //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 dn //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) strategy.close_all()