Программа автоматического выставления заявок на фондовой бирже на основе индикатора Ишимоку

СОДЕРЖАНИЕ

 

Лист

ПРИЛОЖЕНИЕ А 61

 

ВВЕДЕНИЕ

 

В настоящее время  уже можно с полным основанием заявить, что рыночная экономика не может существовать без развитого оборота ценных бумаг.

Ценные бумаги сегодня, пожалуй, один из самых эффективных  инструментов для инвестирования. Основная масса людей, которая имеет определённое количество свободных денег, старается сохранить их от инфляции. Банковские депозиты могут помочь им в этом, но, если рассматривать особенности и состояние экономики России, мы должны учитывать, что процентная ставка по вкладу много меньше инфляции. В результате чего у людей возникает проблема сбережения собственных средств. Решить данную проблему может рынок ценных бумаг, который в свою очередь является одним из самых эффективных инструментов для увеличения собственного капитала.

Рынок ценных бумаг имеет  длительную историю развития – от финансовых афер древности и средневековых меняльных контор до рынка государственных облигаций конца 18 века начала 19 века, а за тем рождения современного фондового рынка. Рынок ценных бумаг, как и другие рынки, представляет сложную организационно-экономическую систему с высоким уровнем  целостности и законности технологических процессов.

Если рассматривать  российский фондовый рынок, то в нём  можно выделить два представителя – это Московская межбанковская валютная биржа (ММВБ) и Российская торговая система (РТС). Более крупной в данный момент является ММВБ. Россияне покупают и держат акции, потому что это лучший способ обеспечить долгосрочный прирост капитала, дивиденды и хорошую защиту от инфляции.

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

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

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

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

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

Во второй главе описывается пользовательский интерфейс программы, разработанные элементы, формы и т.д.

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

В четвёртой главе описываются основные результаты тестирования программы. Также в данной главе приводится описание цели и методики проведения тестирования.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 ПОСТАНОВКА ЗАДАЧИ СОЗДАНИЯ  ПРОГРАММЫ АВТОМАТИЧЕСКОГО ВЫСТАВЛЕНИЯ ЗАЯВОК НА ФОНДОВОЙ БИРЖЕ НА ОСНОВЕ ИНДИКАТОРА ИШИМОКУ

 

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

1.1 Обзор существующих подходов  и решений для реализации системы

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

Рынок ПО очень разнообразен, и на нём можно найти массу информационных продуктов. Среди всего множества выделяются программные комплексы, которые предназначены для тестирования разнообразных торговых стратегий. Но основная часть таких программных продуктов направлена на зарубежные фондовые рынки. Примерами таких программных комплексов являются: MetaStock, Omega TradeStation.

 

- MetaStock

 

Рисунок 1.1 – Рабочее окно программы Metastock

 

Интерфейс программы  представлен на рисунке 1.1. MetaStock – программный продукт компании Equis International (подразделение Reuters). Впервые MetaStock появился на рынке в 1984 году и с тех пор завоевал огромную популярность у трейдеров всего мира. Пакет Metastock включает в себя шесть подпрограмм:

- System Tester – для технического анализа

- The Explorer – для одновременного анализа множества инструментов

- OptionScope – для работы с опционами

- Indicator Builder – для написания собственных индикаторов

- Expert Advisor – для автоматизации принятия торговых решений

- DownLoader – для работы с данными

Программа предоставляет  полный инструментарий для работы на фондовом рынке с использованием технического анализа. Вы можете анализировать волны Эллиота, уровни Фибоначчи, фракталы Вильямса, японские свечи, классический тех. анализ, причём в любых комбинациях. Есть эксперты, советники и тестеры. Очень удобный экспорт и импорт данных. Множество настроек на любой вкус.

Конечно, учитывая массу возможностей данной программы и её популярность, стоит обратить внимание на её стоимость, которая начинается от 16 436.62 рублей.

 

- Omega TradeStation

 

Рисунок 1.2 – Рабочее окно программы Omega TradeStation

 

Интерфейс программы  представлен на рисунке 1.2. На сегодняшний день Omega TradeStation представляет собой многофункциональную программу, предназначенную для проведения комплексного технического анализа.

 

Программа состоит из трёх основных модулей:

 

- Omega Research GlobalServer

Это средство для хранения данных. GlobalServer позволяет Вам собирать данные, полученные из источника данных как в реальном времени (real-time), так и "данные с задержкой" (delayed data). Вы можете изменять настройки GlobalServer в любое время, и он устроен так, что Вы потратите минимум усилий для достижения необходимого результата.

 

- ProSuit Desktop

Это та составляющая программы, в среде которой Вы будете производить большую часть работы. Во время первого запуска Вы создаёте одно или более рабочих пространств (Workspace), на которых Вам предстоит исследовать графики цен, отслеживать котировки; там будут отражаться Ваши позиции и/или Ваши стратегии, которые Вы можете создавать с помощью других программ, встроенных в ProSuit Desktop. ProSuit Desktop обеспечивает Вам сотни типов встроенных торговых сигналов, которые Вы можете комбинировать с помощью Построителя Стратегии (Strategy Builder).

 

- Easy Language

Полноценный язык программирования, созданный для того, чтобы помочь Вам воплотить Ваши торговые идеи. Когда Вы захотите разработать собственные торговые сигналы или создать свою технику анализа (т.е. индикаторы, анализаторы "Покажи Мне" (Show Me), графические анализаторы Paint Bar и т.д.) Вы можете использовать для этого редактор Power Editor. Этот редактор предназначен для написания программ на Easy Language с помощью встроенных в него функций и операторов, ориентированных на технический анализ. Power Editor позволяет импортировать и экспортировать инструменты анализа, которые содержаться в Словаре Языка Easy Language (Easy Language Dictionary), кроме того, есть возможность вставлять в Ваши инструменты анализа (с соблюдением синтаксиса) любое из 300 зарезервированных слов (специальных функций и операторов), что существенно сократит объём необходимой работы.

 

Стоимость данного программного обеспечения составляет – 8 998,5 рублей в месяц.

В итоге из рассмотренных  программ для проведения технического анализа, можно сделать вывод, что эти продукты имеют ряд недостатков. А именно:

- высокая стоимость  программы;

- широкий спектр функциональных возможностей, не всегда используемых трейдером.

1.2 Общая характеристика задачи  и требования, которые предъявляются к разрабатываемой системе

Основные задачи, которые  необходимо решить:

  • выбор средства и языка реализации;
  • разработать формат хранения данных;
  • разработать механизм обращения к СУБД;
  • разработать механизм получения котировок в реальном времени;
  • создать БД MS Access и зарегистрировать её в источниках данных ODBC в качестве пользовательского источника;
  • сформировать портфель в торговой системе QUIK, используя для этого встроенный язык QPILE.

1.2.1 Требования к данным

Для функционирования модуля «IshiSignals»:

  • название эмитента;
  • рыночная цена эмитента;
  • код биржи;
  • номер клиента;
  • количество лотов;
  • код бумаги;
  • код класса;
  • размер лота.

1.2.2 Общие требования к программе:

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

1.3 Биржевые графики

Биржевой график какого-либо финансового актива отображает изменение цены этого актива за определенный промежуток времени – вертикальная шкала показывает собственно цену, горизонтальная – время. Задавая на временной шкале период равный месяцу, мы получим внутримесячный график, а отображая период, равный одному часу – внутричасовой.

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

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

В каждом интервале временной шкалы  биржевого графика рисуется бар в виде вертикальной черточки, отображающий сразу четыре значения цены. Черточка начинается с минимального значения цены внутри данного интервала, заканчивается максимальным. На рисунке 1.3 изображен биржевой график.

 

Рисунок 1.3 – Биржевой график

 

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

1.4 Длинная позиция (позиция лонг) и короткая позиция (позиция  шорт)

Длинная позиция (позиция  лонг) (от англ. long position) – это позиция, которую трейдер открывает в надежде получить прибыль от роста рынка. Трейдер покупает акции дешево, ждёт, когда цена вырастет, продаёт акции дорого, и таким образом получает прибыль от роста рынка. Пример: трейдер рассчитывает, что акции Газпрома вырастут в цене, и играет на повышение (открывает длинную позицию по Газпрому). Для этого, трейдер купил 10 акций Газпрома по 90 рублей, дождался, пока цена выросла до 111 рублей, и продал 10 акций Газпрома по 111 рублей. Прибыль трейдера от длинной позиции это разница между дешевой покупкой и дорогой продажей. Итого, прибыль трейдера составила 210 рублей. Все время, пока трейдер держит акции (не продал их), его коллеги говорят про него «он в длинной позиции», или «он в лонгах».

Держателей длинных позиций (лонгов), получающих прибыль от роста рынка, называют еще игроками на повышение, или быками. Этимология использования слова «бык» в этом контексте доподлинно неизвестна, но запомнить, что быки играют на повышение, очень легко: бык поддевает рынок на рога, подбрасывает вверх, и цены растут.

Короткая позиция (позиция  шорт) (от англ. short position) – это позиция, которую трейдер открывает в надежде получить прибыль от падения рынка. Для этого трейдер берёт акции взаймы у брокера в натуральной форме, продаёт акции на открытом рынке дорого, ждёт, когда цена акций упадёт, покупает акции на открытом рынке дешево, отдаёт займ брокеру в натуральной форме, а разница между дорогой продажей и дешевой покупкой остаётся у трейдера – это его прибыль. Таким образом, трейдер получает прибыль от падения рынка. Пример: трейдер рассчитывает, что цена акций Сбербанка упадёт. Трейдер берёт взаймы у брокера 36 акций Сбербанка, в этот же день трейдер продаёт эти 36 акций Сбербанка по 25 рублей на бирже, затем ждёт, пока цена Сбербанка не упадёт до 15 рублей, покупает на бирже 36 акций Сбербанка по 15 рублей, возвращает 36 акций брокеру, а разницу между дорогой продажей и дешевой покупкой оставляет себе. Итого, прибыль трейдера составила 360 рублей. Всё время, пока трейдер не откупит акции, про него говорят: «он в короткой позиции», «он в шортах».

Держателей коротких позиций (шортов), получающих прибыль от падений рынка, называют ещё игроками на понижение, или медведями. Этимология использования слова «медведь» в этом контексте также неизвестна, но запомнить, что медведи играют на понижение, тоже очень легко с помощью ассоциации: медведь встаёт на задние лапы, наваливается на рынок, прижимает его к земле, и цены падают.

1.5 Описание и методика расчёта индикатора Ишимоку

Этот индикатор придуман японским аналитиком Хосодой, печатающимся под псевдонимом Санждин Ишимоку. Ишимоку изобрёл этот индикатор, пытаясь прогнозировать движения индекса фондового рынка Японии. Ишимоку Кинко Хайо (полное название индикатора) предназначен для определения рыночного тренда, уровней поддержки и сопротивления и для генерации сигналов покупки и продажи. Лучше всего индикатор работает на недельных и дневных графиках.

 

Рисунок 1.4 – Внешний вид индикатора Ишимоку

 

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

На рисунке 1.4 поверх цены изображён индикатор Ишимоку. Он состоит из пяти линий, каждая из которых имеет своё название и трактовку.

Tenkan – это короткая линия тренда, представляющая собой среднее значение ценового диапазона, определенного первым параметром индикатора Ишимоку (рекомендованное Хосодой значение 9 по умолчанию). На рисунке 1.5 показан принцип построения линии Tenkan.

 

Рисунок 1.5 – Построение линии Tenkan

 

Для каждого нового сформировавшегося  бара рассматривается ценовой диапазон, образованный последними 9-ю барами, включая текущий. Середина этого диапазона (определяемого баром с минимальным минимумом и баром с максимальным максимумом) и представляет собой точку линии Tenkan. Данная линия является своеобразным указателем направления тренда – чем круче наклон линии, тем ярче выражен тренд. Если говорить о скользящих средних, то обратите внимание на то, что линия Tenkan с периодом 9 и скользящее среднее с периодом 9 – не одно и то же. К рассмотрению принимается не среднее арифметическое значение цен, а максимум и минимум ценового диапазона. При таком рассмотрении запаздывание индикаторной линии минимально, ведь даже один бар может коренным образом повлиять на диапазон, уже сформированный рядом предыдущих баров.

По аналогии с линией Tenkan строится вторая линия индикатора Ишимоку – линия Kijun. Отличие состоит лишь в периоде рассматриваемого диапазона – для линии Kijun используется второй параметр индикатора (Хосода предложил использовать значение 26). Принцип построения линии Kijun показан на рисунке 1.6.

 

Рисунок 1.6 – Построение линии Kijun

 

Из-за большего периода линии Kijun (по сравнению с периодом линии Tenkan), считается, что она отражает более долгосрочную ценовую тенденцию. Обе линии являются основой построения третьей линии индикатора Ишимоку. Линия Senkou Span A представляет собой среднее арифметическое от значения линий Tenkan и Kijun, сдвинутое вправо на количество баров, заданное вторым параметром индикатора Ишимоку (26 баров). Пример построения линии Senkou Span A показан на рисунке 1.7.

 

Рисунок 1.7 – Построение линии Senkou Span A

 

Четвертая линия индикатора носит  название Senkou Span B. Она представляет собой середину ценового диапазона, заданного третьим параметром индикатора Ишимоку (52 согласно учению Хосоды), сдвинутую вправо на количество баров, заданное вторым параметром (значение 26). Наглядно принцип построения линии Senkou Span B показан на рисунке 1.8.

 

Рисунок 1.8 – Построение линии Senkou Span B

 

Обе линии Senkou Span опережают ценовой график на 26 баров (второй параметр индикатора Ишимоку). Кроме того, эти линии образуют формацию, называемую «облако». Формация закрашивается в цвет той линии, которая в данный момент находится выше. Облако индикатора Ишимоку показано на рисунке 1.9.

 

Рисунок 1.9 – Облако Senkou Span

 

Последней линией индикатора Ишимоку является линия Chinkou Span. Ее построение заключается в том, что цена закрытия каждого бара сдвигается влево на количество баров, определенное вторым параметром индикатора (26 согласно учению Хосоды). Принцип построения линии Chinkou Span показан на рисунке 1.10.

 

Рисунок 1.10 – Построение линии Chinkou Span

1.6 Обзор средств программирования

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

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

1.6.1 Turbo Pascal (Турбо Паскаль)

Процедурно-ориентированный  язык. Усовершенствованная версия языка Pascal, изобретённого ещё в 60-х годах. В настоящее время используется в качестве учебного языка в средних учебных заведениях, а также в школах. На основе синтаксиса Паскаля были созданы другие более функциональные языки, но уже с объектно-ориентированным принципом программирования (Object Pascal, Delphi).

1.6.2 C (Си)

Си является стандартизированным  процедурным языком. Разработан был  ещё в 1970-х годах. Создавался специально для использования в ОС Unix, но впоследствии был модифицирован и перенесён на другие операционные системы. Ценят Си за его эффективность. Си – самый популярный язык для создания системного ПО, а также прикладных программ.

1.6.3 С++ (Си++)

Является компилируемым, строго типизированным языком общего назначения. Поддерживает процедурный, функциональный, обобщённый и объектно-ориентированный принцип программирования. С++ используют для написания сложных приложений.

1.6.4 С# (Си-Шарп)

Объектно-ориентированный  язык программирования высокого уровня. Также поддерживает контекстно-ориентированную  концепцию. Этот язык – своеобразный помощник программистам, работающим с языками C и C++. Он помогает более эффективно создавать Интернет-приложения для платформы Microsoft.NET. Имеет С-подобный синтаксис и по своему характеру напоминает С++ и Java.

1.6.5 Java (Джава или Ява)

Один из самых простых  и понятных ЯП. Язык является объектно-ориентированным, высокоуровневым. Изначально был разработан для бытовой электроники и назывался Oak, но позже был переименован в Java и сейчас используется для написания серверного ПО, апплетов и приложений. Синтаксис Java максимально приближен к синтаксису С++, но принцип работы Java совсем другой.

1.6.6 PHP (Hypertext Preprocessor – PHP: гипертекстовый препроцессор)

Рефлексивный язык программирования. Был разработан для работы с базами данных и создания динамических веб-страниц. Однако сейчас PHP в основном используется для вёрстки сайтов и создания веб-приложений. Благодаря своей функциональности, простоте и скорости выполнения PHP является популярнейшим скриптовым языком для программирования в области сети Интернет.

1.6.7 Perl (Practical Extraction and Report Language)

Многоцелевой язык. Создавался в помощь Unix-утилитам. Он решает системные  задачи, с которыми не могли в  полной мере справиться существующие тогда Unix-утилиты, такие как sed и awk. В настоящее время Perl содержится в любом дистрибутиве Linux и прочих Unix-системах. Также теперь он портирован на Windows и многие другие платформы. Perl используется всеми администраторами мира для автоматизации пользовательских повседневных задач.

1.6.8 HTML (HyperText Markup Language)

Язык гипертекстовой разметки. Производит статическое размещение страниц в сети Интернет. Абсолютное большинство всех веб-страниц написано на языке HTML (или XHTML). Интернет-браузер интерпретирует HTML и выводит его программный код в понятном для человека виде (в виде документа).

1.6.9 SQL

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

1.6.10 Фортран

Широко распространённый язык, особенно среди пользователей, которые занимаются численным моделированием. Большинство крупных научно-технических прикладных программ написано на Фортране потому, что он обладает переносимостью и устойчивостью, а также благодаря наличию встроенных математических и тригонометрических функций. Дополнительной, неотъемлемой частью любой прикладной программы на языке Фортран является расширенная графическая библиотека, позволяющая использовать различные графические данные и изображения.

1.6.11 Ада

Язык создан в основном в 1975 - 1980 годах в результате грандиозного проекта, предпринятого Министерством Обороны США с целью разработать единый язык программирования для так называемых встроенных систем (т. е. систем управления автоматизированными комплексами, работающими в реальном времени). Аду можно предварительно охарактеризовать как Паскаль, при этом авторы пошли в основном по пути расширения Паскаля новыми элементами. В результате получился существенно более сложный язык.

1.6.12 Кобол

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

1.6.13 Бейсик

Basic – Beginner’s All-Purpose Symbolic Instruction Code – “универсальный символический код инструкций для начинающих”. Прямой потомок Фортрана и до сих пор самый популярный язык программирования для персональных компьютеров. Появился Бейсик в 1963 году (основная заслуга в его появлении, несомненно, принадлежит американцам Джону Кемени и Томасу Курцу). Как и любые преимущества, простота Бейсика оборачивалась, особенно в ранних версиях трудностями структурирования; кроме того, Бейсик не допускал рекурсию – интересный прием, позволяющий составлять эффективные и в то же время короткие программы.

1.7 Выбор средств реализации автоматизированной системы

В качестве языка  программирования для реализации системы  был выбран язык C#, т.к. он вобрал лучшие черты целого ряда своих  предшественников. C# – элегантный, строго типизированный объектно-ориентированный язык, предназначенный для разработки разнообразных безопасных и мощных приложений, выполняемых в среде .NET Framework. На языке C# можно разрабатывать обычные клиентские приложения Windows, веб-службы XML, распределённые компоненты, приложения типа “сервер-клиент”, приложения баз данных и многие-многие другие.

Программа автоматического выставления заявок на фондовой бирже на основе индикатора Ишимоку