Блог им. 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»:
По базовым контрактам можно получить их символ, им, размер, начальную маржу, размер тика, биржу, тип, начало времени торговли и окончания многое другое:
Здесь можно скачайть программу Базовые контакты.