Блог им. traderblogger
Первое знакомство с API брокера.
Базовые контракты, которыми можно торговать у брокера сегодня получим с помощью API.
Для этого создаем новое приложение Windows Forms. Не забываем подключать библиотеки api.dll, Commlib.dll и protoSharp.Core.dll:
Далее создаем на форме следующие элементы:
Далее текст программы с подробными комментариями:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace BaseContracts { public partial class Form1 : Form { static OEC.API.OECClient oecapi; public Form1() { InitializeComponent(); //создаем клиента oecapi = new OEC.API.OECClient(); oecapi.UUID = "9e61a8bc-0a31-4542-ad85-33ebab0e4e86"; //логин и пароль. В последующем можно поменять в программе. login.Text = "TradeInwest.ru"; password.Text = "TradeInwest.ru"; //Обработчик успешного соедининения oecapi.OnLoginComplete += new OEC.API.OnLoginCompleteEvent(oecapi_OnLoginComplete); //обработчик неудачного соединения oecapi.OnLoginFailed += new OEC.API.OnLoginFailedEvent(oecapi_OnLoginFailed); //Обработчик рассоединения oecapi.OnDisconnected += new OEC.API.OnDisconnectedEvent(oecapi_OnDisconnected); //кнопка рассоединения неактивна disconnect.Enabled = false; } //обработчик клика на кнопке "Connect" private void button1_Click(object sender, EventArgs e) { //Просто подключаемся к серверу с указанными логином и паролем. oecapi.Connect("api.openecry.com", 9200, login.Text, password.Text, true); } //обработчик удачного соединения private void oecapi_OnLoginComplete() { //Сообщаем об успешном соединении lStatus.Text = "Соединение установлено. Счет:"+oecapi.Accounts.First.Name; //пока есть соединение кнопка Connect - не активна. connect.Enabled = false; //а вот кнопку DisConnect делаем активной disconnect.Enabled = true; //И заполняем списки контрактов baseContractsToList(); } //обработчик неудачного соединения. private void oecapi_OnLoginFailed(OEC.Data.FailReason reason) { lStatus.Text = "Соединение не удалось: "+reason.ToString(); //колдуем над доступностью кнопок connect.Enabled = true; disconnect.Enabled = false; } //обработчик рассоединения private void oecapi_OnDisconnected(bool unexpected) { //колдуем над доступностью кнопок connect.Enabled = true; disconnect.Enabled = false; } //обработка клика на кнопку Disconnect private void disconnect_Click(object sender, EventArgs e) { //отсоединяемся. oecapi.Disconnect(); lStatus.Text = ""; } //процедура заполнения список базовых контрактов. private void baseContractsToList() { string infoAboutBaseContract=""; //перебираем коллекцию базовых контрактов в цикле foreach(OEC.API.BaseContract currentBaseContract in oecapi.BaseContracts ) { //готовим строку с основными параметрами базового контракта infoAboutBaseContract="Тикер: "+currentBaseContract.Symbol+"; Имя: "+currentBaseContract.Name+"; Группа: "+currentBaseContract.ContractGroup+"; Размер контракта: "+currentBaseContract.ContractSize+"; Валюта: "+currentBaseContract.Currency+"; Биржа: "+currentBaseContract.Exchange+"; Начальная маржа: "+currentBaseContract.InitialMargin+"; Размер тика: "+currentBaseContract.TickSize+"; Тип контракта: "+currentBaseContract.Type; //если контракт - фьючерс, то отправляем строку в список фьючерсов if (currentBaseContract.ContractKind== OEC.Data.ContractKind.Future) listFutures.Items.Add(infoAboutBaseContract); //А если контракт - опцион, то в список опционов else if (currentBaseContract.ContractKind== OEC.Data.ContractKind.Option) listOptions.Items.Add(infoAboutBaseContract); infoAboutBaseContract = ""; } } } }
Запускаем программу и нажимаем на кнопку «Connect»:
По базовым контрактам можно получить их символ, им, размер, начальную маржу, размер тика, биржу, тип, начало времени торговли и окончания многое другое:
Здесь можно скачайть программу Базовые контакты.