Ichimoku Kinko Hyo

  • Ichimoku Kinko Hyo
  • Стратегия TQuant Lab Ichimoku Kinko Hyo, автономный индикатор технического анализа

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

Где же та золотая середина, которая может позволить вам достичь гармонии между разумным риском и достаточной величиной выигрыша? На этот счет предложено немало решений. И одно из них — торговля с использованием индикатора Ишимоку Кинко Хайо (Ichimoku Kinko Hyo).

Многие из вас, наверняка, знают о существовании Ишимоку, но пользуются им в своих торговых системах единицы. Между тем он включен во множество различных программ для анализа финансовых рынков и MetaTrader 4 / Metatrader 5 тут не исключение. Но несмотря на это, и на русском, и на английском языках информации по его применению довольно немного. Поэтому сегодня мы познакомимся с этим замечательным индикатором ближе.

Ichimoku был разработан японским аналитиком Хосодой, более известным под псевдонимом Санждин Ишимоку, для анализа фондовых рынков в 30-х годах прошлого века. Позже он начал использоваться и на рынке Форекс. Индикатор предназначен для определения рыночного тренда, уровней поддержки и сопротивления, и для генерации сигналов покупки и продажи. Лучше всего он работает на недельных и дневных графиках.

Характеристики индикатора

Платформа: MetaTrader 4
Валютные пары: EURUSD, GBPUSD, EURJPY, GBPJPY, EURAUD, GBPAUD, EURCAD, GBPCAD, EURNZD, GBPNZD, USDCHF, GBPCHF
Таймфрейм: H1 — W1
Время торговли: круглосуточно
Рекомендуемые брокеры: Alpari, RoboForexExness

История создания

Термин «Ишимоку» может быть переведен с японского как «мгновенное представление» или «один взгляд», «Кинко» является эквивалентом «равновесия» или «баланса», а «Хайо» означает «график». Поэтому полное название индикатора «Ишимоку Кинко Хайо» фактически означает «один взгляд на облако графика». Или более соответствующее название — «мгновенное представление баланса графика». Гоичи Хосода разработал индикатор Ишимоку в начале эры Сева (1926-1989гг.). Однако, Хосода, являющийся японским газетным автором, опубликовал свои результаты только в 1969 году, и с этого момента индикатор Ишимоку стал постоянным инструментом японских трейдеров.

Япония — древняя цивилизация со своим укладом и подходом к жизни, размеренным и неторопливым течением времени. Традиции и обычаи самураев формировались веками. Именно ей мы обязаны появлением одной из первых теорий торговли на рынке, а именно свечному анализу. Еще в середине 18 века происходивший из древнего cамурайского рода человек по имени Мунехиса (Сокю) Хонма, торговавший рисом, вывел основные принципы этого анализа для торговли на рисовой бирже.

Естественно, что свои исследования он проводил для торговли на достаточно «медленном» (по современным понятиям) рынке. Однако, дожив и до настоящего времени, эта теория достаточно успешно применяется современными трейдерами — вспомните хотя бы тот же Price Action.

Японский аналитик Хосода решил развить свечной анализ. Для этого он создал индикатор, который представлял собой систему торговли, дающую ответ на вопросы: когда входить в рынок, где ставить стоп-лосс, где фиксировать прибыль? Свою систему он создавал для торговли контрактами по индексу Никкей. И там индикатор показал отличные результаты. Оказалось, что основным достоинством математики данного индикатора является то, что он позволяет отличить рейндж от тренда, а в тренде получить пусть иногда небольшой, но профит. Сам Хосода отмечал, что хорошо индикатор работает именно в тренде, позволяя улавливать достаточные откаты и после их окончания продолжать работать по тренду.

Описание и настройки Ишимоку

Индикатор Ишимоку удачно объединяет в себе целый ряд других индикаторов и разнообразных подходов к прогнозированию движения цены. Каждая линия представляет собой середину ценового диапазона за определенный промежуток времени. Так она демонстрирует разделительную границу преобладания бычьей, либо медвежьей силы рынка. Можно еще сказать — консенсус масс по поводу стоимости за определенный период.

При определении размерности параметров используется четыре временных интервала различной протяженности. На этих интервалах основываются значения отдельных линий, составляющих этот индикатор:

  • Tenkan-sen (Конверсионная линия) показывает среднее значение цены за первый промежуток времени (обычно период 9), определяемый как сумма максимума и минимума за это время, деленная на два;
  • Kijun-sen (Основная линия) показывает среднее значение цены за второй промежуток времени (считается по 26 периодам);
  • Senkou Span A (Лидирующий размах 1) показывает середину расстояния между предыдущими двумя линиями, сдвинутую вперед на величину второго временного интервала (26 периодов);
  • Senkou Span B (Лидирующий размах 2) показывает среднее значение цены за третий временной интервал, сдвинутое вперед на величину второго временного интервала (52 периода);
  • Chinkou Span (Запаздывающий размах) показывает цену закрытия текущей свечи, сдвинутую назад на величину второго временного интервала.

Классические настройки Ишимоку (9-26-52), в принципе, при торговле на Н1 охватывают примерно половину недельного цикла и, судя по всему, их вполне можно применять. Но все же при резких ценовых движениях внутри дня Ишимоку прилично теряет в точности прогнозов.

Поэтому нередко для работы внутри дня используют другие настройки:

  • Настройки (12-24-120) считаются хорошими при трендовом характере рынков. При нахождении цены в длительных каналах Ишимоку с этими настройками будут давать много ложных сигналов, но при работе в тренде прибыль будет максимальной;
  • Еще один вариант настроек (120-240-480) позволяет получать только значительные сигналы на часовых графиках и успешно фильтровать периоды флета. Сигналов станет прилично меньше, но они будут более точными.

Расчет

Теперь, когда мы ознакомились с общим видом индикатора, можно перейти к формулам вычисления на примере стандартных настроек:

  • Разворотная линия Tenkan-sen = (Самый высокий максимум + Самый низкий минимум) / 2 за последние 9 периодов;
  • Основная линия Kijun-sen = (Самый высокий максимум + Самый низкий минимум) / 2 за последние 26 периодов;
  • Лидирующий размах 1 Senkou Span A = (Стандартная линия + Разворотная линия) / 2, построенный на 26 периодов вперед от текущего момента;
  • Лидирующий размах 2 Senkou Span B = (Самый высокий максимум + Самый низкий минимум) / 2 за прошлые 52 периода, построенный на 26 периодов вперед от текущего момента;
  • Запаздывающий размах Chinkou Span = цена закрытия текущей свечи, сдвинутая на 26 периодов назад.

Правила торговли

Давайте подробнее разберем назначение каждой линии. Серии линий очень похожи на скользящие средние и основываются на максимальных и минимальных ценах. Расстояние между линиями Senkou Span A и B штрихуется на графике другим цветом и называется «облаком». Если цена находится между этими линиями, рынок считается нетрендовым. Края облака образуют уровни поддержки и сопротивления.

  • Если цена находится над облаком, то верхняя его линия образует первый уровень поддержки, а вторая — второй уровень поддержки;
  • Если цена находится под облаком, то нижняя линия образует первый уровень сопротивления, а верхняя — второй;
  • Если цена пробивает нижнюю линию облака вниз, это является сигналом к продаже, если верхнюю линию вверх — сигналом к покупкам.

Пересечение графиком линии Senkou Span B является самым сильным сигналом для вхождения в рынок (в особенности — если цены вышли из облака). Это первый элемент системы — пробойный.

Kijun-sen используется как показатель движения рынка. Если цена выше этой линии, цены, вероятно, будут продолжать расти. Когда цена пересекает эту линию, вероятно дальнейшее изменение тренда. Другим вариантом использования Kijun-sen является подача сигналов. В широком смысле — пересечение Tenkan-sen выше Kijun-sen является бычьим признаком, а пересечение Tenkan-sen ниже Kijun-sen является медвежьим признаком.

Tenkan-sen используется как индикатор рыночного тренда. Если эта линия растет — существует тренд вверх. Если падает — тренд вниз. Когда она идет горизонтально — рынок вошел в канал.

Сигнал к покупке генерируется, когда линия Tenkan-sen пересекает Kijun-sen снизу вверх. Сверху вниз — сигнал к продаже. При этом для этого типа сигнала даже есть свое название — «золотой крест» для покупок и для продаж — «мертвый крест». Но вообще — это самый слабый сигнал, подаваемый индикатором. Особенно аккуратно надо относится к нему, если цены находятся в облаке и подобных сделок стоит избегать совсем, если у вас мало опыта. Создатель индикатора считал, что входить по нему можно вверх, если цены находятся ниже нижней границы облака и вниз — если выше верхней. Проблема здесь состоит в том, что облако должно быть достаточно большим по размеру, чтобы в реальном рынке успеть зафиксировать прибыль. Это — второй элемент системы, трендовый долгосрочный.

К положениям цены по отношению к облаку и пересечению Tenkan-sen и Kijun-sen добавляется относительное положение сегодняшней цены против цены 26 периодов назад, что определяет силу сигналов — Chinkou Span. Эта линия (запаздывающий размах) является сегодняшней ценой, перемещенной назад на 26 периодов. Если Chinkou Span находится ниже цен 26 периодов назад и возникает сигнал продажи, то это является более сильным сигналом, чем это было бы при положении цены выше закрытия 26 периодов назад. Противоположное утверждение будет верным для сигнала покупки. То есть по сути  Chinkou Span является трендовым фильтром. Также линия генерирует сигналы на вход — если она пересекает график снизу вверх — встаем в покупку, если сверху вниз — в продажу. Этот сигнал считается вторым по силе сигналом от индикатора Ишимоку. Это еще один, третий элемент системы — трендовый среднесрочный.

Если все линии индикатора выстраиваются в иерархической последовательности, то сигналы на отбой объединяются понятием «сигнал трех линий». Такой сигнал позволяет использовать тренд, когда его начало пропущено. Автор рекомендует не просто открывать позицию при откате цены от линий Ишимоку или при пересечении линий Tenkan с Kijun, а только при наличии разворотного свечного паттерна.

Использование Ишимоку на рынке Форекс различными трейдерами показало, что при несомненных достоинствах индикатора, он, обладает одним недостатком для торговли интрадей: выставление стоп-лосса за облаком цен зачастую смещает цену торговли не в нашу сторону. В то же время и выход при изменении тенденции не позволяет зафиксировать достаточную прибыль. Поэтому стоит работать с ним только на графиках D1 и W1.

Стоп-лосс обычно выставляется за границей облака, противоположной направлению входа. Так, например, если мы работаем на пробой облака снизу вверх, то стоп-лосс мы ставим за нижней границей облака, а если сверху вниз — то за верхней. При этом рекомендуют выдерживать некоторый запас примерно в 5-10 пунктов для исключения возможности ложного срабатывания на волатильном движении. Вслед за изменением границ облака рекомендуется двигать и стоп-лосс вашего ордера. Выход из сделки, как правило, осуществляется при получении любого обратного сигнала — разворот Tenkan-sen, обратное пересечение графика линией Chinkou Span, обратное пересечение графиком какой-либо линии облака цен и так далее.

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

Основные правила торговли по индикатору Ишимоку приносят примерно 60-70% прибыльных сделок при соотношении риска к прибыли примерно 1:3. Поэтому многие трейдеры при торговле по Ишимоку подстраховывают свои решения еще и анализом по индикатору ADX.

Также Хосода особо отмечал, что его индикатор является развитием свечной теории. Поэтому автор не рекомендует открывать позицию, если имеются свечные паттерны, противоречащие основному сигналу. Также очень хорошо, если сигнал дополнительно подтверждается свечным паттерном. Более того, при торговле отскоков от линий Ишимоку наличие свечного паттерна — обязательное условие. Учет в анализе ситуации свечных паттернов позволит поднять количество прибыльных сделок к 70%. Частота сделок на дневных графиках будет составлять приблизительно одну позицию в две недели по инструменту.

Процент прибыльных сделок можно увеличить еще больше, если дополнительно анализировать так называемые графики Каги и если показания всех инструментов совпадают. По словам некоторых опытных фанатов Ichimoku Kinko Hyo, можно достичь прибыльности в 80-85% сделок при соотношении прибыли к убытку до 3 к 1, делая при этом в среднем 200-300 пунктов прибыли в месяц по одной валютной паре.

Заключение

Индикатор Ишимоку — один из самых сложных классических индикаторов. При этом он и один из самых эффективных инструментов, представляющих из себя целую готовую многоэлементную торговую систему. В одном индикаторе есть и пробойные, и трендовые, и контр-трендовые сигналы, четко определенные выходы, места установки стоп-лосса и даже трейлинг стоп.

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

Тем не менее, любителям более размеренной торговли и приверженцам свечного анализа я однозначно порекомендовал бы Ишимоку для ознакомления. Также в теме на форуме (ссылка ниже) вы найдете огромное количество модификаций и различных версий Ichimoku Kinko Hyo.

Стратегия TQuant Lab Ichimoku Kinko Hyo, автономный индикатор технического анализа

Выделите

  • Сложность:★★★☆☆
  • Знакомство с Ишимоку Кинко Хё и трейлинг-стопом.
  • Напишите стратегию Ichimoku Kinko Hyo с использованием платформы тестирования на истории TQuant Lab и тестирования рисков и производительности на истории.

Знакомство

Ишимоку Кинко Хё (также известный как Облачные Карты, いちもくきんこうひょう) был придуман японским журналистом Гоити Хосодой, но в то время он не был публично обнародован. Сорок лет спустя, между 1975 и 6 годами после этого, Гоити Хосода, используя псевдоним Ишимоку Сандзин, опубликовал семь серий работ под названием «Ишимоку Кинко Хё», подробно объясняя этот индикатор и философские размышления, лежащие в основе его торговой системы.

В отличие от традиционных концепций, таких как цены акций, на которые влияют соотношения цены и объема, спрос и предложение на покупку и продажу, а также фундаментальные аспекты компаний, Ишимоку Кинко Хё считает, что время является существенным фактором, влияющим на изменение цен, особенно под влиянием времени, цены имеют циклические изменения. На рынке всегда есть опасения, что акции будут падать после длительного роста и расти после длительного падения. Общее настроение рынка отражает закономерность колебаний поведения рынка под влиянием времени, что составляет основу «Теории времени» Ишимоку Кинко Хё.

Кроме того, Ichimoku Kinko Hyo является индикатором философского, технического анализа. Автор считает, что вместо того, чтобы быть индикатором как таковым, его следует рассматривать как анализ и размышления Гоити Хосоды о рынке и обществе. Мысль, стоящая за этим, заслуживает глубокого изучения. Из-за нехватки места в данной статье мы не будем подробно останавливаться на этом. Автор считает, что теория Ишимоку Кинко Хё и рыночного равновесия дает хорошее представление о Ишимоку Кинко Хё. Желающие могут обратиться к нему.

Введение в Ichimoku Kinko Hyo Framework

Теория времени

Теория времени Ишимоку Кинко Хё – это метод анализа времени и точек разворота рынка. «9, 17, 26» являются базовыми числами и могут быть использованы для изучения того, будет ли на рынке вероятность разворота в течение этого периода, что является значительным значением.

Метод интерпретации

  • Линия конвертации (tenkan_sen): Линия разворота (также известная как линия разворота) представляет собой среднее арифметическое самых высоких и самых низких цен за последние девять дней. Если линия разворота поднимается, то считается, что восходящий импульс сильный, а если падает, то считается, что нисходящий тренд сильный. Поскольку он рассчитывается на основе короткого периода в девять дней, он используется для анализа краткосрочных трендов.
  • Базовая линия (kijun_sen): Стандартная линия представляет собой среднее арифметическое самых высоких и самых низких цен за последние 26 дней. Если стандартная линия поднимается, то считается, что восходящий импульс сильный, а если падает, то считается, что нисходящий тренд сильный. Поскольку он рассчитывается на основе периода в 26 дней, он используется для анализа среднесрочных трендов.
  • Ведущий диапазон A / B (senkou_span_a/b): Ведущий диапазон A предсказывает будущий тренд на следующие 26 дней на основе средней линии разворота и стандартной линии. Leading Span B — это линия, которая предсказывает тренд на следующие 26 дней на основе среднего значения самых высоких и самых низких цен за последние 52 дня. Поскольку оба показывают средний тренд на ближайшие 26 дней, они помогают анализировать будущие изменения цен. После затенения между ведущим диапазоном A и ведущим диапазоном B «облачная область или облачная полоса» называется частью с A < B зеленым цветом, а частью с A > B — красным.
  • Запаздывающий интервал (chikou_span): Запаздывающий диапазон — это цена акции 26 дней назад. Если она находится выше ценовой линии, это говорит о сильном восходящем тренде на рынке; Если она находится ниже ценовой линии, это указывает на устойчивый нисходящий тренд.

Поворотные линии и стандартные линии

У Ишимоку Кинко Хё также есть метод под названием «Трехлинейное подтверждение» и «Трехлинейное разворот» для интерпретации. «Трехлинейное подтверждение» представляет собой сигнал на покупку, а «Трехлинейный разворот» — сигнал на продажу. Обычно, если трехлинейное подтверждение встречается за пределами ценового диапазона акции, будет более сильный восходящий тренд, и наоборот. В этой статье мы проведем тонкую настройку сигнала на покупку на основе трехлинейного подтверждения.

Условия трехстрочного подтверждения:

  • Линия преобразования превышает базовую линию.
  • Запаздывающий пролет выше цены.
  • Цена превышает облачную область.

Условия для разворота трех линий:

  • Линия преобразования находится ниже базовой линии.
  • Запаздывающий пролет ниже цены.
  • Цена находится ниже облачной области.

Редактирование требований к среде и модулю

В этой статье в качестве редактора используются MacOS и Jupyter Notebook.

Импорт данных и использование функции get_universe для получения пула запасов

Эта стратегия сначала извлекает все биржевые коды обыкновенных акций, включая биржевые и внебиржевые (OTC) рынки, за один год, с 1 апреля 2018 года по 31 марта 2019 года.

import os
import tejapi
import pandas as pd
import numpy as np

os.environ['TEJAPI_KEY'] = "your key"
os.environ['TEJAPI_BASE'] = "https://api.tej.com.tw"
start = '2018-04-01'
end = '2019-03-31'
from zipline.sources.TEJ_Api_Data import get_universe
pool = get_universe(start, end, mkt = ['TWSE', 'OTC'], stktp_e=['Common Stock-Foreign', 'Common Stock'])
len(pool)

Использование TEJToolAPI для получения запасов компонентов MSCI

Стратегия Ichimoku Kinko Hyo выбирает акции-компоненты MSCI из вышеуказанных кодов акций с помощью TEJToolAPI.

average_vol = df.groupby('股票代碼')['成交量_千股'].mean().reset_index()
average_vol = average_vol.rename(columns={'成交量_千股': '平均成交量'})
high_price_stocks = df.groupby('股票代碼')['最低價'].min().reset_index()
high_price_stocks = high_price_stocks[high_price_stocks['最低價'] >= 50]
merge_data = pd.merge(average_vol, high_price_stocks, on='股票代碼', how='inner')
top_100_vol = merge_data.sort_values(by='平均成交量', ascending=False).head(100)
top_100_vol
Ichimoku Kinko Hyo

Загрузка данных в бандл

Чтобы избежать предвзятого прогнозирования, пятилетний период тестирования этой стратегии — с 1 апреля 2019 года по 1 апреля 2024 года. Он включает в себя вышеупомянутую 91 составляющую акцию, а также Тайваньский взвешенный индекс (IR0001) в качестве ориентира для сравнения рынка.

Ниже приведен список из 91 составляющей акции и Тайваньского взвешенного индекса:

!zipline ingest -b tquant
!zipline bundle-info
Ichimoku Kinko Hyo
Запас компонентов и период тестирования на истории

Создание функции конвейера

Создание пользовательского фактора

CustomFactor позволяет пользователям создавать пользовательские коэффициенты по мере необходимости. В данном случае мы будем использовать его для обработки:

Average True Range (ATR): используется для расчета уровней трейлинг-стопа. Pipeline позволяет пользователям быстро обрабатывать количественные показатели и данные о ценах и объемах для нескольких активов. В данном случае мы будем использовать его для обработки:

Линия преобразования (tenkan_sen) Базовая линия (kijun_sen) Передний диапазон A/B (senkou_span_a/b) Область облачности или облачный диапазон (cloud_red) Запаздывающий диапазон (chikou_span)

from zipline.pipeline import Pipeline
from zipline.TQresearch.tej_pipeline import run_pipeline
def make_pipeline():

Ich = IchimokuKinkoHyo(
inputs = [TWEquityPricing.high, TWEquityPricing.low, TWEquityPricing.close],
window_length = 52,
)
atr = AverageTrueRange(inputs = [TWEquityPricing.high, TWEquityPricing.low, TWEquityPricing.close],
window_length = 52,
)

return Pipeline(
columns = {
'curr_price': TWEquityPricing.close.latest,
"tenkan_sen": Ich.tenkan_sen,
"kijun_sen": Ich.kijun_sen,
"senkou_span_a": Ich.senkou_span_a,
"senkou_span_b": Ich.senkou_span_b,
'cloud_red': Ich.senkou_span_a < Ich.senkou_span_b,
"chikou_span": Ich.chikou_span,
'stop_loss': atr.ATR,
},
# screen = ~StaticAssets([benchmark_asset])
screen = ~StaticAssets([benchmark_asset]) & (Ich.senkou_span_a > 0) & (Ich.senkou_span_b > 0)
)
my_pipeline = run_pipeline(make_pipeline(), start_dt, end_dt)
my_pipeline
Ichimoku Kinko Hyo
Частичные данные конвейера

Создание функции инициализации

Функция initialize() определяет дневную торговую среду перед началом торговли. В этом примере мы задаем:

  • Издержки проскальзывания
  • Модель транзакционных издержек для фондового рынка Тайваня
  • Взвешенный индекс доходности (IR0001) в качестве эталона
  • Внедрение в торговый процесс индикаторов Ichimoku Kinko Hyo, разработанных в Pipeline
  • Установка переменной context.stop_loss для записи точек стоп-лосса при тестировании на истории
  • Установка переменной context.holding для записи того, удерживается ли позиция по определенной акции
  • Установка переменной context.trailing_stop для записи того, применяется ли трейлинг-стоп
  • Установка переменной context.last_buy_price для записи цены последней покупки
  • Установка переменной context.trailing_count для записи количества экземпляров трейлинг-стопа
  • Установка переменной context.buy_count для ограничения максимального количества сделок на акцию
from zipline.finance import slippage, commission
from zipline.api import *

def initialize(context):
set_slippage(slippage.VolumeShareSlippage())
set_commission(commission.Custom_TW_Commission(min_trade_cost = 20, discount = 1.0, tax = 0.003))
attach_pipeline(make_pipeline(), 'mystrats')
set_benchmark(symbol('IR0001'))
context.stop_loss = {}
context.trailing_stop = {}
context.last_buy_price = {}
context.trailing_count = {}
context.holding = {}
context.buy_count = {}

Создание функции Handle_data

Функция handle_data() важна для построения стратегии Ишимоку Кинко Хё. Он вызывается каждый день после начала тестирования на истории, и в его основные задачи входит настройка торговых стратегий, выставление ордеров и запись торговой информации.

Заметка: Чтобы избежать возможности ошибочных сигналов на вход со стороны Ichimoku Kinko Hyo в периоды консолидации цены, в данной статье используется дополнительное условие *1.01 на tenkan_sen kijun_sen. Это делается в надежде войти в рынок только тогда, когда восходящий тренд будет достаточно выражен, тем самым достигается определенная степень избегания периодов консолидации.

С подробными правилами торговли по данной стратегии можно ознакомиться на сайте Ichimoku Kinko Hyo.ipynb

        # 三役好轉 (tenkan_sen > kijun_sen*1.015 : avoid the Darvas Box Theory)
if (curr_price > senkou_span_b) and (cloud_red == True) and (tenkan_sen > kijun_sen*1.01) and (context.buy_count[f'{i}'] <= 5):
order_percent(i, 0.01)
buy = True
context.stop_loss[f'{i}'] = curr_price - (1.25 * stop_loss)
context.last_buy_price[f'{i}'] = curr_price
record(
**{
f'buy_{sym}':buy
}
)
context.holding[f'{i}'] = True
context.buy_count[f'{i}'] += 1

# reset stop loss point
if (curr_price >= (1.3**context.trailing_count[f'{i}'])*context.last_buy_price[f'{i}']) and (context.holding[f'{i}'] == True) and (context.trailing_stop[f'{i}'] == False):
context.stop_loss[f'{i}'] = 1.3*context.stop_loss[f'{i}']
context.trailing_stop[f'{i}'] = True
context.trailing_count[f'{i}'] += 1
elif (curr_price >= (1.3**context.trailing_count[f'{i}'])*context.last_buy_price[f'{i}']) and (context.holding[f'{i}'] == True) and (context.trailing_stop[f'{i}'] == True):
context.stop_loss[f'{i}'] = 1.3*context.stop_loss[f'{i}']
context.trailing_count[f'{i}'] += 1

if (curr_price <= context.stop_loss[f'{i}']) and (context.holding[f'{i}'] == True):
order_target(i, 0)
sell = True
context.stop_loss[f'{i}'] = None
context.trailing_stop[f'{i}'] = None
context.trailing_count[f'{i}'] = None
record(
**{
f'sell_{sym}':sell
}
)
context.holding[f'{i}'] = None
context.buy_count[f'{i}'] = None

Исполнение торговой стратегии

Используйте функцию run_algorithm() для выполнения стратегии Ichimoku Kinko Hyo, как определено выше. Установим торговый период с start_dt (2019-04-01) по end_dt (2024-04-01), используя датасет tquant, с начальным капиталом 20 миллионов долларов. Выходные результаты представляют собой ежедневную производительность и детали сделки.

import matplotlib.pyplot as plt
from zipline import run_algorithm
results = run_algorithm(
start = start_dt,
end = end_dt,
initialize = initialize,
bundle = 'tquant',
analyze = analyze,
capital_base = 2e7,
handle_data = handle_data
)
results
Ichimoku Kinko Hyo
Изменения показателей возврата и входа/выхода на основе стратегии Ichimoku Kinko Hyo для отдельных акций (красные метки обозначают сигналы на покупку, зеленые — сигналы на продажу).
Ichimoku Kinko Hyo
Детали тестирования на истории

Оценка производительности с помощью Pyfolio

import pyfolio as pf 
returns, positions, transactions = pf.utils.extract_rets_pos_txn_from_zipline(results)
benchmark_rets = results['benchmark_return']
pf.tears.create_full_tear_sheet(returns=returns,
positions=positions,
transactions=transactions,
benchmark_rets=benchmark_rets
)
Сравнительная таблица производительности и бенчмарков при тестировании на истории

Мы можем наблюдать, что стратегия Ichimoku Kinko Hyo показала отличные результаты за 58 месяцев, с годовой доходностью 23,554% и совокупной доходностью 178,194%. Показатели прибыли впечатляют. Коэффициент Шарпа 1,38 указывает на относительно высокую доходность по сравнению с риском. Кроме того, β значение 0,66 говорит о том, что волатильность стратегии относительно нечувствительна к общей волатильности рынка, что отражает основную концепцию системы Ишимоку Кинко Хё в отрыве от рынка.

Что касается максимальной просадки, то мы можем наблюдать существенный спад во время роста системного риска из-за эпидемии между 22-м и 23-м годами. Устойчивые тенденции роста характеризовали и другие периоды. Использование сигналов входа, предоставляемых Ichimoku Kinko Hyo, наряду со стратегией, включающей трейлинг-стопы ATR, является надежным подходом для достижения стабильной доходности, превосходящей рынок в долгосрочной перспективе.

Ichimoku Kinko Hyo
График вариаций месячной доходности
Ichimoku Kinko Hyo
График вариаций портфельных активов (первая десятка)

Можно видеть, что период владения каждой акцией довольно постоянен, с небольшим смещением в сторону какой-либо конкретной акции.

Просмотр динамики конкретной акции по стратегии Ichimoku Kinko Hyo

graph(2330, True)

Поскольку эта стратегия включает в себя тестирование на истории на отдельных акциях, а не на отдельных акциях, невозможно быстро определить фактические точки входа и выхода каждой акции в системе Ichimoku Kinko Hyo. Поэтому я дополнительно написал функцию, облегчающую изучение отдельных ситуаций торговли акциями. Для получения более подробной информации, пожалуйста, обратитесь к исходному коду на GitHub.

Ichimoku Kinko Hyo
Индивидуальные показатели входа и выхода Ichimoku Kinko Hyo для каждой акции (красные метки указывают на сигналы на покупку, а зеленые — на сигналы на продажу)

Примечательным моментом является то, что метод входа, основанный на трех сигналах Ишимоку Кинко Хё, не включает критерии выхода. При практическом тестировании выход на основе разворота трех сигналов приведет к потере многих прибыльных трендов. Поэтому в этой стратегии для выходов используется метод трейлинг-стоп-лосса. Например, на графике выше вы можете видеть, что в начале 2021 года у стратегии был ордер на продажу, сработавший по сигналу стоп-лосса на TSMC (2330), что зафиксировало тренд длительностью более полугода. Однако, помимо скользящего стоп-лосса, можно включить механизмы фиксации прибыли, такие как установка целей по прибыли или другие средства обеспечения прибыли. Кроме того, можно изучить стратегии, включающие как длинные, так и короткие позиции.

Заключение

Эта стратегия использует Ichimoku Kinko Hyo для моделирования на истории, используя его сигналы трех конверсий для входа и дополняя их скользящим стоп-лоссом для фиксации прибыли, что дает многообещающие результаты тестирования на истории. Инвесторы могут рассмотреть этот подход.

В дальнейшем я продолжу знакомить вас с различными индикаторами, построенными с использованием базы данных TEJ, и тестировать их работоспособность. Таким образом, читателям, заинтересованным в тестировании на истории торговли, рекомендуется изучить соответствующие решения TQuant Lab, используя высококачественные базы данных для построения своих торговых стратегий.

Исходный код

Нажмите здесь, чтобы перейти на Github

Источник

Источник