Клиентский API > Когда же будет API для терминала.
-
- Сообщения: 24
- Зарегистрирован: 04 сен 2017, 13:30
- Поблагодарили: 3 раза
Re: Когда же будет API для терминала.
Хм ... странно. Точно была раньше эта строчка и также неработало.
Ну ладно. Вроде теперь все запускается, однако в терминале тишина.. видимо из за кривой работы с проксисерверами.
Хотя и пишет что подключение к торговому серверу успешно. Но котировки не изменяются.
Ну ладно. Вроде теперь все запускается, однако в терминале тишина.. видимо из за кривой работы с проксисерверами.
Хотя и пишет что подключение к торговому серверу успешно. Но котировки не изменяются.
-
- Сообщения: 24
- Зарегистрирован: 04 сен 2017, 13:30
- Поблагодарили: 3 раза
-
- Сообщения: 24
- Зарегистрирован: 04 сен 2017, 13:30
- Поблагодарили: 3 раза
Re: Когда же будет API для терминала.
Здравствуйте. В общем все отлично продвигается. В целом можно переводить свои торговые системы на 4. Даже в чем то шустрее стало работать. Ну это лирика.
Далее вопрос возник, может ктото еще сталкивался.
не работает функционал подключения терминала. Вот код:
Почему так происходит? Остальной код нормально работает.
Далее вопрос возник, может ктото еще сталкивался.
не работает функционал подключения терминала. Вот код:
Код: Выделить всё
Packer.Initialize(@"C:\Program Files (x86)\Alfa-Direct Pro\ad.xml");
client = new AdClient();
client.OnConnectionChanged += new Action<AD.Common.Helpers.FrontEndType, AD.Common.DataStructures.ConnectionStatus>(client_OnConnectionChanged);
client.OnServerMessage += new Action<AD.Common.Helpers.FrontEndType, AD.Common.DataStructures.ClientMessageEntity>(client_OnServerMessage);
client.Trading.OnTradeLimitResponse += Trading_OnTradeLimitResponse;
client.Trading.OnOrderChanged += Trading_OnOrderChanged;
ConnectionStatus constat = client.GetConnectionStatus(FrontEndType.AllTypes); // !!! ТУТ ВСЕГДА Disconnected
if (constat == ConnectionStatus.Disconnected)
{
client.Connect("login", "pass"); // ТУТ ВСЕГДА ОШИБКА "Ссылка на объект не указывает на экземпляр объекта.
}
Почему так происходит? Остальной код нормально работает.
-
- Сообщения: 233
- Зарегистрирован: 28 июн 2017, 13:56
- Благодарил (а): 4 раза
- Поблагодарили: 43 раза
Re: Когда же будет API для терминала.
Код: Выделить всё
ConnectionStatus constat = client.GetConnectionStatus(FrontEndType.AllTypes); // !!! ТУТ ВСЕГДА Disconnected
Именно! Ибо нужно знать какой фронтенд спрашивать, а то все... это было бы слишком легко

Наверно, для соединения самый интересный AuthAndOperInitServer.
Код: Выделить всё
client.Connect("login", "pass"); // ТУТ ВСЕГДА ОШИБКА "Ссылка на объект не указывает на экземпляр объекта.
Поспешай медленно... Нужно что-то типа:
Код: Выделить всё
client.OnTerminalConnectionChanged += status =>
{
if (status == ConnectionStatus.Connected)
{
client.Connect("login", "pass");
}
};
или даже
Код: Выделить всё
client.OnTerminalConnectionChanged += status =>
{
if (status == ConnectionStatus.Connected)
{
var connStatus = client.GetConnectionStatus(FrontEndType.AuthAndOperInitServer);
if (connStatus != ConnectionStatus.Authorized)
client.Connect("login", "pass");
}
};
-
- Сообщения: 233
- Зарегистрирован: 28 июн 2017, 13:56
- Благодарил (а): 4 раза
- Поблагодарили: 43 раза
Re: Когда же будет API для терминала.
Вот, кстати, еще способ, без колбека:
Код: Выделить всё
Thread.Sleep(2000); // минимум подбирается эмпирически ;)
var connStatus = client.GetConnectionStatus(FrontEndType.AuthAndOperInitServer);
if (connStatus != ConnectionStatus.Authorized)
client.Connect("", "");
-
- Сообщения: 24
- Зарегистрирован: 04 сен 2017, 13:30
- Поблагодарили: 3 раза
Re: Когда же будет API для терминала.
Не. В любом случае Connect не работает.
Допустим запустил терминал. Но подключение к серверу не выполнил.
Далее запускаю программу и программа должна выполнить подключение терминала и авторизацию. В 3.5 это все работало.
Все переменные равны Disconnected/
Допустим запустил терминал. Но подключение к серверу не выполнил.
Далее запускаю программу и программа должна выполнить подключение терминала и авторизацию. В 3.5 это все работало.
Код: Выделить всё
ConnectionStatus AllTypes = client.GetConnectionStatus(FrontEndType.AllTypes);
ConnectionStatus AuthAndOperInitServer = client.GetConnectionStatus(FrontEndType.AuthAndOperInitServer);
ConnectionStatus BirzArchAndMediaServer = client.GetConnectionStatus(FrontEndType.BirzArchAndMediaServer);
ConnectionStatus OperServer = client.GetConnectionStatus(FrontEndType.OperServer);
ConnectionStatus RealTimeBirzInfoDelayedServer = client.GetConnectionStatus(FrontEndType.RealTimeBirzInfoDelayedServer);
ConnectionStatus RealTimeBirzInfoServer = client.GetConnectionStatus(FrontEndType.RealTimeBirzInfoServer);
Все переменные равны Disconnected/
-
- Сообщения: 233
- Зарегистрирован: 28 июн 2017, 13:56
- Благодарил (а): 4 раза
- Поблагодарили: 43 раза
Re: Когда же будет API для терминала.
Не знаю, у меня этот кодв VS2013 прекрасно работает.
Только нужно правильные dll-ки взять
Только нужно правильные dll-ки взять

Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using AD.Common.DataStructures;
using AD.Common.Helpers;
using ADClientSDK;
namespace CliSdkTest
{
class Program
{
public static AdClient client;
static void Main(string[] args)
{
Packer.Initialize();
Console.WriteLine(@"Disconnected.");
try
{
client = new AdClient();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
client.OnTerminalConnectionChanged += status =>
{
switch(status)
{
case ConnectionStatus.Connected:
Console.WriteLine(
String.Format("Версии библиотеки {0}({1}), версии терминала {2}({3}). ",
AdClient.Version,
AdClient.ProtocolVersion,
AdClient.TerminalVersion,
AdClient.ProtocolTerminalVersion));
break;
case ConnectionStatus.Authorized:
Console.WriteLine("Авторизация терминала прошла успешно.");
break;
case ConnectionStatus.Disconnected:
Console.WriteLine("Терминал отсоединен.");
break;
case ConnectionStatus.Connecting:
Console.WriteLine("Ожидание подключения терминала.");
break;
}
};
Thread.Sleep(2000);
var connStatus = client.GetConnectionStatus(FrontEndType.AuthAndOperInitServer);
if (connStatus != ConnectionStatus.Authorized)
{
Console.Write("Login=");
var login = Console.ReadLine();
Console.Write("Password=");
var password = Console.ReadLine();
client.Connect(login, password);
}
Console.ReadLine();
}
}
}
-
- Сообщения: 24
- Зарегистрирован: 04 сен 2017, 13:30
- Поблагодарили: 3 раза
Re: Когда же будет API для терминала.
Спасибо. Видимо ключевой момент это после инициализации пакера подождать некоторое время. Затем все работает.
А почему не работает событие OnServerMessage;
Вот подписался на событие, но событие никогда не срабатывает.
ClientConnection.OnServerMessage += ClientConnection_OnServerMessage;
А почему не работает событие OnServerMessage;
Вот подписался на событие, но событие никогда не срабатывает.
ClientConnection.OnServerMessage += ClientConnection_OnServerMessage;
Re: Когда же будет API для терминала.
Кто-нибудь пробовал торговать через этот api? Есть какие-то проблемы с получением информации - свои трэйды/заявки? Заявки выставляются/снимаются стабильно?
Сам пока не могу протестировать т.к. счет к Квику привязан.
Сам пока не могу протестировать т.к. счет к Квику привязан.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей