Пишемо торгового робота на c #

Пишемо торгового робота на C #. Частина 1. Основи мови програмування і зв'язок з терміналом

Останнім часом все частіше чую від багатьох трейдерів заяви, що дуже здорово знати мову програмування і самому писати роботів. Багато посилено намагаються вивчати модний останнім часом мова C #. Однак новачкові з нуля написати якесь вартісне додаток буде досить складно. У цій статті я спробую дати мінімальні знання мови програмування, показати логіку побудови програми, спроектувати і запустити торгового робота для терміналу QUIK.


отримати дані з терміналу QUIK. З QUIK дані можна отримати трьома способами:
1) експортувати дані через ODBC
2) експортувати дані через DDE
3) брати дані безпосередньо з пам'яті
Третій спосіб дуже трудомісткий для програмування, хоча є найшвидшим для отримання даних. Висновок даних через ODBC, як пишуть розробники Quik, працює повільніше, ніж висновок через DDE. Тому ми скористаємося найбільш простим способом - висновком через DDE.
Налаштуємо відразу ж QUIK для виведення даних (Рис. 7). Для цього потрібно виділити потрібну таблицю і натиснути в меню Експорт даних - Висновок по DDE. Як DDE сервера потрібно вказати ім'я «DDEServer». В якості робочої книги потрібно вказати наступне:
1) для таблиці історичних свічок - «candles»
2) для таблиці котирувань і інструментів - «quotes»
3) для таблиці заявок - «orders»
Не забудьте встановити галочку «Висновок при натисканні Ctrl + Shift + L».

Налаштування виводу таблиці по DDE


В результаті вікно QUIK буде виглядати наступним чином:

QUIK

Для імпорту по DDE нам буде потрібно:
1) Клас XLTable, який реалізує приведення даних з формату Excel до звичайного вигляду (всі необхідні файли є в додатку до статті)
2) Бібліотека NDde.dll для створення DDE сервера

Сформуємо клас для роботи з DDE сервером:
class MyDDEServer: DdeServer
public MyDDEServer (string service): base (service)
>
>
В цьому класі повинні бути передбачений мінімальний набір функцій:
1) Реєстрація сервера
2) розреєстрації сервера
3) Подія спрацьовування таймера для отримання нових даних
4) Метод для обробки прийняття даних

На форму додатка я також додав візуальні об'єкти для відображення даних, що прийшли. В результаті компіляції (F5) програми та запуску імпорту по DDE вийшло наступне (Рис. 11):

Імпорт даних їх QUIK у вікно програми


Як ми бачимо, дані успішно імпортуються в наш додаток з терміналу QUIK, тепер перед нами постає завдання створення логіки торгового робота і його програмна реалізація, про що я постараюся написати в наступній статті.
Структура архіву:
1) NDde.dll - динамічна бібліотека, в якій реалізовані функції для роботи з DDE сервером
2) XLTable.cs - клас для обробки даних з QUIK в додаток
3) charts.qpl - портфель для QUIK на мові Qplie для формування історичних счевек
4) INFO.wnd - настройки QUIK
5) Robot - код робота на C #

Схожі статті