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

Автор: Пользователь скрыл имя, 07 Февраля 2013 в 21:31, дипломная работа

Описание работы

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

Работа содержит 1 файл

ПЗ (Листы 5-60).doc

— 3.42 Мб (Скачать)

- RemoveUserDSN – удаляет User DSN из системы;

- SQLConfigDataSource – добавляет, изменяет или удаляет указанный источник данных. Функция имеет такие параметры как:

  1. IntPtr parent – указатель на окно, вызвавшее функцию;
  2. int request – тип запрашиваемой операции. Может принимать следующие значения: запрос на создание нового пользовательского (системного) источника данных, запрос на изменение существующего пользовательского (системного) источника данных, удаление пользовательского (системного) источника данных;
  3. string driver – указатель на строку, содержащую имя драйвера, ассоциированного с конкретным типом БД;
  4. string attributes – указатель на строку атрибутов в форме ключевое слово – значение.

2.3.4 Описание основных элементов  класса “Registration_DB”

Из вышеизложенного  ранее, данный класс необходим для формирования пользовательской формы утилиты DSNInstaller. В классе главную роль несут методы-события, которые происходят в результате работы пользователя с утилитой (например, путём нажатия кнопок регистрации и удаления базы данных из системы и др.). На рисунке 2.7 изображена структура класса “Registration_DB”, который составляет пользовательский интерфейс приложения – утилиты DSNInstaller.

 

Рисунок 2.7 – Структура класса “ Registration_DB” утилиты DSNInstaller

 

Функции класса:

- btn_obzor_Click – функция, отвечающая за обработку события, возникающего в результате нажатия на кнопку с именем “Обзор…”;

- btn_register_Click – функция, отвечающая за обработку события, которое происходит в результате щелчка по кнопке с именем “Зарегистрировать базу данных в системе”;

- btn_unregister_Click – функция, отвечающая за обработку события, возникающего вследствие нажатия на кнопку с именем “Удалить базу данных из системы”;

- Dispose – метод, который освобождает все используемые ресурсы;

- InitializeComponent – метод, который используется для инициализации компонентов программы;

- Registration_DB – метод, содержащий в себе метод InitializeComponent;

- Registration_DB_Load – метод, который вызывается при загрузке главного окна.

2.3.5 Пользовательский интерфейс утилиты DSNInstaller

Интерфейс программы  выполнен в классическом стиле. Все  элементы входят в набор Microsoft Visual Studio 2010. На рисунке 2.8 представлена форма программы. На форме размещаются 3 кнопки. Кнопка “Обзор…” необходима для выбора директории, где размещается, необходимая для регистрации БД. Соответственно существует кнопка “Зарегистрировать базу данных в системе” и кнопка “Удалить базу данных из системы”.

 

Рисунок 2.8 – Главное окно программы DSNInstaller

 

После того, как Вы указали  директорию с вашей БД, то необходимо нажать на кнопку “Зарегистрировать базу данных в системе”. В результате чего появится окно, представленное на рисунке 2.9, информирующее Вас об успешной регистрации БД в качестве источников данных ODBC.

Для того чтобы убедиться  в том, что БД была зарегистрирована в системе, необходимо открыть в панели управления в разделе “Администрирование” пункт “Источники данных (ODBC)”.  Будет открыто окно “Администратор источников данных ODBC” и в нём необходимо перейти во вкладку “Пользовательский DSN”. Из рисунка 2.10 видно, что БД Ichdata.mdb была успешно зарегистрирована в системе в качестве пользовательского DSN.

 

Рисунок 2.9 – Окно, информирующее  об успешной регистрации БД

 

 

Рисунок 2.10 – Администратор источников данных ODBC (Регистрация)

 

Для того чтобы удалить  БД, то необходимо нажать на кнопку “Удалить базу данных из системы”. В результате чего появится окно, представленное на рисунке 2.11, информирующее Вас об успешном удалении БД из источников данных ODBC.

Для того чтобы убедиться  в том, что БД была удалена из системы, необходимо снова открыть окно “Администратор источников данных ODBC” и в нём вкладку “Пользовательский DSN”. Из рисунка 2.12 видно, что БД Ichdata.mdb нет в списке источников данных пользователей. Это говорит об успешном удалении её из системы.

 

 

 

Рисунок 2.11 – Окно, информирующее  об успешном удалении БД

 

 

Рисунок 2.12 – Администратор источников данных ODBC (БД нет)

2.4 Клиентский терминал QUIK и встроенный язык QPILE

Рабочее место QUIK – это специальная программа, устанавливаемая на компьютер пользователя, предназначенная для просмотра и анализа биржевых котировок, а также осуществления сделок. Клиентский терминал QUIK является функциональным аналогом рабочего места биржевого трейдера – мощным инструментом обработки биржевой информации с широким набором функций, применимым для выполнения как простых, так и специализированных операций. На рисунках 2.13 и 2.14 изображён интерфейс информационно-торговой системы QUIK.

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

В системе QUIK реализован полный комплекс мер безопасности для передачи конфиденциальной информации и осуществления активных операций через сеть Интернет.

 

Рисунок 2.13 – Интерфейс QUIK (часть 1)

 

 

Рисунок 2.14 – Интерфейс QUIK (часть 2)

2.4.1 Основные возможности QUIK:

  • Удобный интерфейс: все данные отображаются в виде таблиц различного назначения и графиков. Для удобства расположения большого числа окон предусмотрены "экранные закладки".
  • Графическое предоставление данных. Возможность отобразить историю торгов за предыдущие торговые сессии.
  • Многообразие индикаторов технического анализа.
  • Отображение новостей в специальном окне.
  • Просмотр текущего состояния портфеля клиента.
  • Данные из большинства таблиц можно экспортировать в MS Excel (через протокол DDE) или в базы данных (посредством ODBC) в режиме реального времени, а также доступен экспорт данных для технического анализа.
  • Возможность программировать дополнительные таблицы благодаря встроенному языку QPILE.
  • Панель ввода заявок позволяет вводить новые заявки одним кликом, а функция "drag-and-drop" – заменять активные заявки "перетаскиванием". QUIK позволяет использовать условные заявки различных типов.

2.4.2 Язык QPILE

Система QUIK обладает собственным встроенным языком QPILE. Язык QPILE (QUIK Programmable Interface and Logic Environment) представляет собой набор команд, интерпретируемых рабочим местом QUIK.

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

Примеры использования QPILE:

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

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

Код программы может  быть загружен пользователем как локально (с жёсткого диска) так и получен с сервера брокера. Таким образом, брокер может размещать на своём сервере готовые шаблоны расчётных таблиц, которыми свободно могут пользоваться его клиенты.

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

С расчётными таблицами можно осуществлять те же действия, что и с обычными таблицами – использовать поиск значений, копирование в буфер обмена, экспорт данных в Excel и ODBC и многое другое.

Для того чтобы передавать данные по ODBC в программу IshiSignals 1.0, необходимо в информационно-торговой системе QUIK их сформировать. Для этого нам необходимо загрузить описание портфеля из файла QPILE.qpl, написанного нами на языке QPILE, в терминал QUIK. Файл с кодом программы представляет собой обычный текстовый файл в Windows-кодировке (cp-1251) с расширением «.qpl». Каждая программа QPILE может и должна описывать только одну таблицу QUIK. В одном файле может находиться только одна программа.

2.4.3 Состав программы на языке QPILE

QPILE программа состоит из трех частей:

  • «Заголовок» – содержит название программы и описание её параметров;
  • «Тело программы» – набор команд, собственно код программы;
  • «Описание столбцов таблицы» – описание столбцов выводимой таблицы.

Программа обязательно  должна содержать все разделы, следующие друг за другом.

Таким образом, каркас любой  программы выглядит как на рисунке 2.15.

 

Рисунок 2.15 – Каркас любой  программы на QPILE

2.4.4 Формирование портфеля для программы IshiSignals

Рассмотрим непосредственно написанный код на языке QPILE для программы автоматического выставления заявок на фондовой бирже на основе индикатора Ишимоку. В заголовке файла QPILE.qpl записано следующее:

PORTFOLIO_EX Ichimoku;

DESCRIPTION Signals;

CLIENTS_LIST ALL_CLIENTS;

FIRMS_LIST ALL_FIRMS;

 

Опишем подробнее каждую из строк кода заголовка:

  • PORTFOLIO_EX – название программируемой таблицы (Ichimoku);
  • DESCRIPTION – текстовое описание таблицы (Signals);
  • CLIENTS_LIST – список кодов клиентов, для которых вычисляются значения в таблице (значение ALL_CLIENTS – всем клиентам);
  • FIRMS_LIST – список идентификаторов фирм, клиентам которых будет доступна данная таблица (значение ALL_FIRMS – всем фирмам).

 

Код тела программы, в котором и заключается основная логика для формирования таблицы (портфеля), представлен ниже:

PROGRAM

delete_all_items()

mp=create_map()

year=get_value(GET_TRADE_DATE(), "Year")

month=get_value(GET_TRADE_DATE(), "Month")

if len(month)==1

month="0" & month

end if

day=get_value(GET_TRADE_DATE(), "Day")

if len(day)==1

day="0" & day

end if

hour=get_value(GET_DATETIME(), "Hour")

if len(hour)==1

hour="0" & hour

end if

minuta=get_value(GET_DATETIME(), "MIN")

if len(minuta)==1

minuta="0" & minuta

end if

secunda=get_value(GET_DATETIME(), "SEC")

if len(secunda)==1

secunda="0" & secunda

end if

data=year&month&day

vrema=hour&minuta&secunda

for i from 0 to 20

slice=Get_Candle_Ex (i&"1", data, vrema)

last_price=GET_VALUE(GET_COLLECTION_ITEM(Get_Value (slice,"LINES"),0),"CLOSE")

SpA=GET_VALUE(GET_COLLECTION_ITEM(Get_Value (Get_Candle_Ex (i&"2", data, vrema),"LINES"),2),"CLOSE")

SpB=GET_VALUE(GET_COLLECTION_ITEM(Get_Value (Get_Candle_Ex (i&"2", data, vrema),"LINES"),3),"CLOSE")

flag=0

if 0+SpA<>0

if last_price>SpA

flag=1

end if

if last_price>SpB

flag=flag+1

end if

if 0+flag==0

mp=set_value(mp,"Rez","Ниже облака")

end if

if 0+flag==1

mp=set_value(mp,"Rez","В облаке")

end if

if 0+flag==2

mp=set_value(mp,"Rez","Над облаком")

end if

else

mp=set_value(mp,"Rez","")

end if

lines=Get_Value (slice,"LINES")

line = Get_Collection_Item (lines, 0)

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