Автор: Пользователь скрыл имя, 07 Февраля 2013 в 21:31, дипломная работа
В процессе выполнения данной выпускной работы был проведён анализ предметной области и выявлены требования, предъявляемые к программе автоматического выставления заявок на фондовой бирже на основе индикатора Ишимоку. На основе выставленных требований, был проведён анализ существующих программных средств, предназначенных для разработки, и в результате чего было принято решение в пользу современного направления программирования – технологии .Net.
- RemoveUserDSN – удаляет User DSN из системы;
- SQLConfigDataSource – добавляет, изменяет или удаляет указанный источник данных. Функция имеет такие параметры как:
Из вышеизложенного ранее, данный класс необходим для формирования пользовательской формы утилиты 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 – метод, который вызывается при загрузке главного окна.
Интерфейс программы выполнен в классическом стиле. Все элементы входят в набор 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 (БД нет)
Рабочее место QUIK – это специальная программа, устанавливаемая на компьютер пользователя, предназначенная для просмотра и анализа биржевых котировок, а также осуществления сделок. Клиентский терминал QUIK является функциональным аналогом рабочего места биржевого трейдера – мощным инструментом обработки биржевой информации с широким набором функций, применимым для выполнения как простых, так и специализированных операций. На рисунках 2.13 и 2.14 изображён интерфейс информационно-торговой системы QUIK.
Информация между сервером и клиентом передаётся в зашифрованном виде, раскодировать её можно только при наличии ключа доступа, индивидуального для каждого пользователя системы. Ключ доступа Вы создаёте самостоятельно, с помощью программы KeyGen и храните отдельно от самой программы QUIK, на сменном носителе, например, дискете или флэш-карте. Во избежание несанкционированного использования ключа доступа, он дополнительно защищён паролем.
В системе QUIK реализован полный комплекс мер безопасности для передачи конфиденциальной информации и осуществления активных операций через сеть Интернет.
Рисунок 2.13 – Интерфейс QUIK (часть 1)
Рисунок 2.14 – Интерфейс QUIK (часть 2)
Система QUIK обладает собственным встроенным языком QPILE. Язык QPILE (QUIK Programmable Interface and Logic Environment) представляет собой набор команд, интерпретируемых рабочим местом QUIK.
Областью применения QPILE является создание новых таблиц для расчёта в режиме реального времени собственных показателей на основе информации из других таблиц. Применение встроенного языка позволяет реализовать практически любой алгоритм.
Примеры использования QPILE:
На основе QPILE можно запрограммировать собственную таблицу, вычисляющую некоторые параметры по заданным алгоритмам. Структура самой таблицы (заголовки столбцов и строк, размещение ячеек, выделение их цветом и т.п.) также описывается средствами языка QPILE. Для вычисления в формулах можно использовать стандартные математические и логические операции, использовать переменные и массивы данных, запрашивать информацию из других таблиц системы QUIK.
Код программы может быть загружен пользователем как локально (с жёсткого диска) так и получен с сервера брокера. Таким образом, брокер может размещать на своём сервере готовые шаблоны расчётных таблиц, которыми свободно могут пользоваться его клиенты.
После загрузки кода программы на Рабочем месте QUIK создаётся внутренний источник данных, содержащий вычисляемые параметры. При этом все параметры вычисляются один раз независимо от того, сколько таблиц создано на основе одного кода программы. Настройка таблиц идентична настройке стандартных таблиц в QUIK.
С расчётными таблицами можно осуществлять те же действия, что и с обычными таблицами – использовать поиск значений, копирование в буфер обмена, экспорт данных в Excel и ODBC и многое другое.
Для того чтобы передавать данные по ODBC в программу IshiSignals 1.0, необходимо в информационно-торговой системе QUIK их сформировать. Для этого нам необходимо загрузить описание портфеля из файла QPILE.qpl, написанного нами на языке QPILE, в терминал QUIK. Файл с кодом программы представляет собой обычный текстовый файл в Windows-кодировке (cp-1251) с расширением «.qpl». Каждая программа QPILE может и должна описывать только одну таблицу QUIK. В одном файле может находиться только одна программа.
QPILE программа состоит из трех частей:
Программа обязательно должна содержать все разделы, следующие друг за другом.
Таким образом, каркас любой программы выглядит как на рисунке 2.15.
Рисунок 2.15 – Каркас любой программы на QPILE
Рассмотрим непосредственно написанный код на языке QPILE для программы автоматического выставления заявок на фондовой бирже на основе индикатора Ишимоку. В заголовке файла QPILE.qpl записано следующее:
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(
month=get_value(GET_TRADE_
if len(month)==1
month="0" & month
end if
day=get_value(GET_TRADE_DATE()
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(
if len(minuta)==1
minuta="0" & minuta
end if
secunda=get_value(GET_
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_
SpA=GET_VALUE(GET_COLLECTION_
SpB=GET_VALUE(GET_COLLECTION_
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)