Клиентский API > Когда же будет API для терминала.

Разработка с использованием клиентского API
High Profit Trader
Сообщения: 77
Зарегистрирован: 23 мар 2018, 10:54
Поблагодарили: 2 раза

Re: Когда же будет API для терминала.

Непрочитанное сообщение High Profit Trader » 15 фев 2019, 09:47

2155.1506 - это предыдущая.
А в новой не работает?

DenisK
Сообщения: 8
Зарегистрирован: 09 окт 2018, 16:59
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение DenisK » 15 фев 2019, 15:14

Именно новой 4.0.2186.1134 появилась описанная проблема. В двух предыдущих версиях все работало. Как было еще раньше - не знаю, написал роботов только в ноябре :)

piyyy
Сообщения: 97
Зарегистрирован: 15 янв 2018, 16:36
Благодарил (а): 4 раза
Поблагодарили: 8 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение piyyy » 15 фев 2019, 18:24

DenisK

Ждать не нужно. Подпишись на событие OnTerminalConnectionChanged. Когда прийдет событие с параметром ConnectionStatus.Connected логинься.

Вообще нужно код смотреть. Напиши простую программу для теста коннекта.

DenisK
Сообщения: 8
Зарегистрирован: 09 окт 2018, 16:59
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение DenisK » 17 фев 2019, 23:48

Разобрался! Спасибо, piyyy!
Оказалось, теперь нельзя вызывать ADClient.Connect(...) когда терминал уже залогинен.

Вот так с версией 4.0.2186.1135 у меня работает:

Код: Выделить всё

Packer.Initialize(@"C:\Program Files (x86)\Alfa-Direct Pro\ad.xml");
AdClient myClient = new AdClient();

// OnTerminalConnectionChanged with Connected status occurs earlier than this 5 seconds delay. Need rewrite on it.
Thread.Sleep(5000);

ConnectionStatus connectionStatus = myClient.GetConnectionStatus(FrontEndType.AuthAndOperInitServer);
Console.WriteLine($"connectionStatus = {connectionStatus}");

if (connectionStatus != ConnectionStatus.Authorized)
{
      Console.WriteLine("Not yet authorized. Logging in...");
      myClient.Connect(loginVAd, passwordVAd);
}
else
{
       Console.WriteLine("Already logged in.");
}



piyyy писал(а):DenisK

Ждать не нужно. Подпишись на событие OnTerminalConnectionChanged. Когда прийдет событие с параметром ConnectionStatus.Connected логинься.

Вообще нужно код смотреть. Напиши простую программу для теста коннекта.

ensh
Сообщения: 218
Зарегистрирован: 28 июн 2017, 13:56
Благодарил (а): 4 раза
Поблагодарили: 39 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение ensh » 18 фев 2019, 01:25

1. Прочитали бы этот тред с начала, там был пример как и что и задержки обсуждались.
2. Использовать API - мазохизм, берите AdirConnector и данные напрямую, а не через WCF как в API

DenisK
Сообщения: 8
Зарегистрирован: 09 окт 2018, 16:59
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение DenisK » 18 фев 2019, 10:56

Читал, но сделал не правильно. Каждый раз Connect вызывал. Работало... Все живые люди и можем ошибаться. :(
Про adirconnector нашел вашу ветку. Благодарю за совет!

Dmitrius
Сообщения: 4
Зарегистрирован: 18 фев 2019, 12:20
Благодарил (а): 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение Dmitrius » 18 фев 2019, 12:26

Всем привет

Нужны данные по цене: high, low, open, close цена, а так же данные от индикаторов MACD / AO

Используя данный АПИ можно получать свечи 5минутки или как эту инфу еще можно получить в свое приложение .net?

Dmitrius
Сообщения: 4
Зарегистрирован: 18 фев 2019, 12:20
Благодарил (а): 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение Dmitrius » 18 фев 2019, 19:22

Ребят, получилось законнектиться к приложению.

Теперь бы данные от индикатора получить, свечку пятиминутную, а еще надо с заявками работать, открыть, закрыть.
Примеров не нашел в форуме.

Поможет кто-нибудь?

DenisK
Сообщения: 8
Зарегистрирован: 09 окт 2018, 16:59
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение DenisK » 18 фев 2019, 19:47

Могу помочь с заявками.
Создать заявку:

Код: Выделить всё

// Next line should be somewhere after connecting to the terminal.
AdTrading myAdTrading = new AdTrading();

String errorMessage = "";
String OrderClientNumEDocument = "";
OrderClientNumEDocument = adTrading.CreateLimitOrder(AccountId, IdFi, OrderDirection.Buy, Quantity, BuyPrice,
                  LifeTime.D30, out errorMessage);


AccountId - строка вида 12345-000. Можно глянуть в терминале во всплывающем окошке при наведении мыши на синенький кружок с восклицательным знаком рядом с любой заявкой. Account-Id будет справа сверху.
IdFi - Financial Instrument ID. Можно глянуть в терминале на вкладке main, где много всяких инструментов. Там также навести мышь на синенький кружок. Во всплывающей подсказке будет КодИнстр. Это и есть IdFi.
Quantity - количество акций в штуках. Например, для VTB это будет 10000.
Остальные параметры вроде интуитивно понятны.

Получить статус заявки:
orderEntity = adTrading.GetOrderByClientNum(OrderClientNumEDocument);
Если исполнена, то сработает проверка:
orderEntity.IdOrderStatusWithMask == OrderStatus.Filled

Отменить заявку:
adTrading.CancelOrder(InternalOrderId);

InternalOrderId можно вытащить из структуры orderEntity. Это десятизначное число, которое видно во всплывающем окошке с параметрами заявки.

Dmitrius
Сообщения: 4
Зарегистрирован: 18 фев 2019, 12:20
Благодарил (а): 1 раз

Re: Когда же будет API для терминала.

Непрочитанное сообщение Dmitrius » 19 фев 2019, 21:49

DenisK писал(а):Могу помочь с заявками.


Денис благодарствую!
Все работает.


Вернуться в «Клиентский API»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей