Автор: Пользователь скрыл имя, 07 Февраля 2013 в 21:31, дипломная работа
В процессе выполнения данной выпускной работы был проведён анализ предметной области и выявлены требования, предъявляемые к программе автоматического выставления заявок на фондовой бирже на основе индикатора Ишимоку. На основе выставленных требований, был проведён анализ существующих программных средств, предназначенных для разработки, и в результате чего было принято решение в пользу современного направления программирования – технологии .Net.
- Form1_Resize – обработка события изменения размера, если программа свёрнута, то показываем всплывающее окно с сообщением из трея “IshiSignals в трее!”;
- InitializeComponent – метод, который используется для инициализации компонентов программы IshiSignals;
- IshiSignals – конструктор, который содержит в себе метод InitializeComponent и настройку основных параметров программы для её запуска и осуществляет отображение главной формы на экран;
- journal – метод, который формирует строки журнала сообщений, в котором отображается информация об изменении положения инструментов (бумаг) с указанием времени, когда это событие произошло;
- kritich_Leave – обработка события, возникающего при переходе активности с поля, отвечающего за значение коэффициента критичности, на другое поле формы, например, на поле с цветом. Это сделано для того, чтобы по ошибке пользователя (случайное изменение значения коэффициента) значение поля не сохранилось в настройках сразу же, а только после перехода активности к другому полю;
- robot_options_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Настройки”, находящейся на вкладке “Настройки” в области “Робот” главного окна программы IshiSignals;
- SetDoubleBuffered – функция, помогающая решить проблему с мерцанием контролов программы при обновлении данных;
- TickOn – функция, отвечающая за реализацию мигания значков (иконки) программы в трее;
- timer1_Tick – событие, которое происходит по истечении заданного временного интервала, когда компонент timer1 тикает.
Список полей класса изображён на рисунке 2.23. В данном классе находятся все основные функции, отвечающие за выставление заявок, рисунок 2.24.
Рисунок 2.23 – Список полей класса “Robot”
Рисунок 2.24 – Методы класса “Robot”
Функции класса:
- AddRow – функция, добавляющая информацию о заявках в таблицу, которая находится во вкладке “Заявки” формы “Робот”;
- AddRow2 – функция, добавляющая информацию о совершённых сделках в таблицу, которая находится во вкладке “Сделки” формы “Робот”;
- btn_connected_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Подключиться”, находящейся на вкладке “Настройки” формы “Робот”;
- btn_ok_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Подтверждаю”, располагающуюся на форме “Робот”;
- btn_options_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Настройки”, находящейся на вкладке “Настройки” формы “Робот”;
- btn_otmena_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Отмена”, располагающуюся на форме “Робот”;
- btn_sdelki – функция, которая отвечает за загрузку ранее совершённых программой сделок;
- btn_sell_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Продать”, находящейся на вкладке “Торговля” формы “Робот”;
- btn_verification_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Проверка связи с QUIK”, находящейся на вкладке “Настройки” формы “Робот”;
- btn_zayavki – функция, которая отвечает за загрузку ранее выставленных программой заявок;
- connection_status_callback_
- Dispose – метод, который освобождает все используемые ресурсы;
- Form1_FormClosing – метод, который вызывается при закрытии главного окна формы “Робот”;
- Form1_Load – метод, который вызывается при загрузке главного окна формы “Робот”;
- InitializeComponent – метод, который используется для инициализации компонентов формы “Робот”;
- OnSendBarg – функция, непосредственно отвечающая за формирование заявки на покупку, когда пользователь вручную совершает покупку;
- order_status_callback_impl – функция, которая формирует параметры заявки;
- pokupka_robot – функция, непосредственно отвечающая за формирование автоматической заявки на покупку при работе робота в соответствии с определённым условием;
- prodaga_robot – функция, непосредственно отвечающая за формирование заявки на продажу;
- ReadDataFromFile – функция, отвечающая за считывание из файла необходимых параметров для подключения и осуществления транзакции с QUIK (номер счёта и номер клиента);
- ReadDataFromFile2 – функция, отвечающая за считывание из файла необходимой информации об эмитенте (код бумаги, код класса и размер лота);
- Robot – конструктор, который содержит в себе метод InitializeComponent и производит загрузку настроек из файла, а также производит настройку основных контролов для её запуска и осуществляет отображение формы на экран;
- saveData – функция, отвечающая за сохранение необходимой информации и записи её в файл;
- trade_status_callback_
Список полей статического класса представляет собой набор констант. Данные константы и их значения приведены в таблице 2.6.
Таблица 2.6 – Константы класса “test_q” и их значения
Константа |
Значение |
PATH_2_QUIK |
Путь к QUIK |
TRANS2QUIK_ALREADY_CONNECTED_ |
4 |
TRANS2QUIK_DLL_CONNECTED |
10 |
TRANS2QUIK_DLL_DISCONNECTED |
11 |
TRANS2QUIK_DLL_NOT_CONNECTED |
7 |
TRANS2QUIK_DLL_VERSION_NOT_ |
3 |
TRANS2QUIK_FAILED |
1 |
TRANS2QUIK_MEMORY_ALLOCATION_ |
12 |
TRANS2QUIK_QUIK_CONNECTED |
8 |
TRANS2QUIK_QUIK_DISCONNECTED |
9 |
TRANS2QUIK_QUIK_NOT_CONNECTED |
6 |
TRANS2QUIK_QUIK_TERMINAL_NOT_ |
2 |
TRANS2QUIK_SUCCESS |
0 |
TRANS2QUIK_WRONG_CONNECTION_ |
13 |
TRANS2QUIK_WRONG_INPUT_PARAMS |
14 |
TRANS2QUIK_WRONG_SYNTAX |
5 |
В данном классе находится огромное количество методов, которые вызываются из специальной библиотеки TRANS2QUIK.dll.
TRANS2QUIK.dll – динамически подключаемая библиотека, предоставляющая программный интерфейс взаимодействия с торговым терминалом QUIK, позволяющий обеспечить контроль за состоянием подключения, ввод транзакций и контроль за их исполнением.
В классе также используется специализированные вложенные типы (делегаты), которых 4. Они представлены на рисунке 2.25.
Рисунок 2.25 – Вложенные типы класса “test_q”
Структура класса “ClientParams” показана на рисунке 2.26. В данном классе содержится всего один одноимённый метод и два поля – account и client. Как было сказано выше, данный класс содержит очень важную информацию, необходимую для подключения к QUIK – это номер счёта (account) и номер клиента (client).
Рисунок 2.26 – Структура класса “ClientParams”
Структура класса “SettingsDialog” показана на рисунке 2.27. Данный класс является наследником класса Form. Отвечает за формирование дополнительной формы, которая появляется в результате нажатия кнопки “Настройки”, которая размещается во вкладке “Настройки” формы Robot. В данной форме пользователь может указать номер счёта (value_kod_birzhi) и номер клиента (value_number_client).
Рисунок 2.27 – Структура класса “SettingsDialog”
Функции класса:
– btn_save_Click – обработка события, которое происходит при нажатии пользователем на кнопку “Сохранить”, располагающуюся на форме;
– Dispose – метод, который освобождает все используемые ресурсы;
– InitializeComponent – метод, который используется для инициализации компонентов формы;
– saveDataSett – функция, записывающая все необходимые параметры в специальный файл настроек;
– SettingsDialog – конструктор, который содержит в себе метод для инициализации компонентов формы (InitializeComponent);
– SettingsDialog_Load – метод, который вызывается при загрузке формы.
Интерфейс программы выполнен в классическом стиле. Все элементы входят в набор Microsoft Visual Studio 2010. На рисунке 2.28 представлена стартовая форма программы, если не настроена передача данных по ODBC из информационно-торговой программы QUIK и БД Ichdata пустая. В такой ситуации во вкладке “Таблица” нет заполненных строк.
Если соединение с терминалом QUIK было произведено и передача по ODBC производилась из QUIK в БД хотя бы один раз, то при запуске программы IshiSignals стартовая форма будет иметь вид, представленный на рисунке 2.29. В результате работы программы строки во вкладке “Таблица” будут меняться в режиме реального времени, будут появляться, исчезать, будет меняться цвет строк вследствие изменения положения бумаги, также меняться значения цены эмитентов.
Рисунок 2.28 – Стартовая форма программы IshiSignals 1.0
Рисунок 2.29 – Стартовая форма программы в рабочем режиме
Перейдя на вкладку “Настройки” главной формы программы, мы можем увидеть 3 области: “Цвет”, “Коэф.критичности” и “Робот”. Интерфейс вкладки представлен на рисунке 2.30.
В области “Цвет” пользователь может задавать значения для следующих типов цветов, которыми будут подсвечиваться строки таблицы во вкладке “Таблица”:
– цвет для бумаг выше облака;
– цвет для бумаг в облаке;
– цвет для бумаг ниже облака;
– цвет “критической” бумаги.
Для того чтобы задать значение соответствующего типа цвета, пользователю необходимо щёлкнуть по кнопке “Выбрать цвет”, расположенной рядом с каждым полем типа цвета. В результате этого появится окно “Цвет”, в котором пользователь может выбрать понравившийся ему цвет, рисунок 2.31. Затем после успешного выбора цвета для соответствующего типа, строка таблицы с данным параметром будет окрашена в заданный цвет.
Рисунок 2.30 – Вкладка “Настройки” главной формы программы
Рисунок 2.31 – Окно для выбора цвета
Выбор цвета пользователя запоминается в определённом файле. Для каждого типа цвета существует свой файл. Для бумаг выше облака настройки цвета хранятся в файле – clr_vyshe.sz, для бумаг в облаке – clr_vobl.sz, для бумаг ниже облака – clr_nizhe.sz и для “критической бумаги” – clr_krit.sz. Для осуществления данной процедуры используется сериализация.
Сериализация представляет собой процесс преобразования объекта в поток байтов с целью сохранения его в памяти, в базе данных или в файле. Её основное назначение – сохранить состояние объекта для того, чтобы иметь возможность воссоздать его при необходимости. Обратный процесс называется десериализацией.
Поэтому после того, как пользователь изменит цвет и завершит работу программы, настройки сериализуются и при следующем открытии происходит десериализация, в результате чего пользователю не нужно заново настраивать нужные ему цвета.
В области “Коэф.критичности” пользователь может задавать значения данного параметра (по умолчанию – 0,5%). Коэффициент критичности необходим для того чтобы отслеживать положение бумаги и отмечать её, когда она подходит к линии индикатора в диапазоне, указанном в коэффициенте критичности. Например, если Span A = 100 рублей, а коэффициент критичности 1,5%, то зона критичности начинается от 98,5 до 101,5 рублей. Чтобы значение данного параметра сохранилось необходимо задать нужное Вам значение, а после сделать поле с данным значением неактивным, для этого достаточно щёлкнуть мышью в любое из полей с цветом. Это сделано специально, чтобы не допустить случайного изменения. Информация о значении коэффициента критичности сериализуется в файле clr_koefkr.sz. При запуске программы, также происходит десериализация значения данного коэффициента.
В области “Робот” пользователь может запустить робот, который будет автоматически выставлять заявки на куплю/продажу на фондовой бирже на основе индикатора Ишимоку. Для того чтобы выполнить запуск робота (по умолчанию флажок недоступен) Вам предстоит произвести настройки. Для этого в данной же области необходимо щёлкнуть по кнопке “Настройки”. В результате чего на экране появится дополнительная форма по имени “Робот”. На форме по умолчанию первоначально открывается вкладка “Настройки”, рисунок 2.32.