Клиентский API > AdirConnector

Разработка с использованием клиентского API
Bobson
Сообщения: 17
Зарегистрирован: 10 фев 2019, 12:55
Благодарил (а): 4 раза
Поблагодарили: 6 раз

Re: AdirConnector

Непрочитанное сообщение Bobson » 19 апр 2019, 12:15

В FinInfoExtEntity нет ничего такого, чтобы была необходимость организовывать подписку на него.
Просто запросите информацию один раз при старте программы. Для фьючерсов можно запросить по окончанию основного и/или промежуточного клиринга.

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

using AD.Common.Helpers;
using AD.Common.DataStructures;
using Core;
       public void GetFinInfoExtEntity()
       {
            FinInfoExtEntity finInfoExtEntity;
            if (DataStorageShared.FinInfoExt.TryGetValue(idFi, out finInfoExtEntity))
            {
                Debug.Print(finInfoExtEntity.ToString());
            }
            else
            {
                Debug.Print("Не шмогла найти finInfoExtEntity");
            }
        }

IdFI инструмента можно получить так:

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

    int IdFI = DataStorageShared.GetIdFI("SiH9", "ФОРТС");

Обратная операция:

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

     var q = DataStorageShared.GetObject(IdFI).SymbolObject;
     var s = DataStorageShared.GetObject(IdFI).NameObject; ;


P.S.
Но всё это игры в песочнице. По-крайней мере до тех пор, пока не будет возможности подавать и удалять поручения, хотя бы лимитные.
P.P.S.
В любом случае нужно будет переписать половину терминала. И это без GUI.

Vit123
Сообщения: 19
Зарегистрирован: 29 окт 2018, 09:49
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: AdirConnector

Непрочитанное сообщение Vit123 » 19 апр 2019, 15:11

Спасибо Bobson.
Не был подключен DataStorageShared.

Цитата
Но всё это игры в песочнице. По-крайней мере до тех пор, пока не будет возможности подавать и удалять поручения, хотя бы лимитные.

Разве Core.OrderSendManager.CreateClientOrderEntity для выставления лимитной заявки не будет работать?

Vit123
Сообщения: 19
Зарегистрирован: 29 окт 2018, 09:49
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: AdirConnector

Непрочитанное сообщение Vit123 » 22 апр 2019, 16:16

Пробую подавать заявку так:
var str = OrderSendManager.TryCreateOrder(OrderType.LMT,OrderDirection.Buy,292660,"1111-000",1,price,false,LifeTime.D30).DebugLog;
Ничего не получается. Не ясно как сертификат загрузить, может дело в нём?
И ещё не понятно почему цена массивом должна быть.

Vit123
Сообщения: 19
Зарегистрирован: 29 окт 2018, 09:49
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: AdirConnector

Непрочитанное сообщение Vit123 » 22 апр 2019, 22:01

После долгих переборов методов удалось поставить лимитную заявку.

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

string message;
ClientOrderEntity clientOrder;
OrderSendManager.CreateClientOrderEntity(292660, OrderType.LMT, QuantityType.QTY, "11111-000", out message, out clientOrder,LifeTime.D30);clientOrder.Quantity=1;
clientOrder.LimitPrice=3400;
clientOrder.BuySell=OrderDirection.Buy;   
var str = OrderSendManager.SendOrder(clientOrder,true);


В clientOrder так же есть все параметры для любых видов заявок.

Marcello
Сообщения: 17
Зарегистрирован: 31 авг 2017, 11:42
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: AdirConnector

Непрочитанное сообщение Marcello » 24 апр 2019, 09:29

Vit123 писал(а):После долгих переборов методов удалось поставить лимитную заявку.

А у меня не получается. В логе OrderCreate появляются только две строки:

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

2019.04.24 00:02:33.603   Started creating order...
2019.04.24 00:02:33.604   Applying template...

А в аналогичном логе терминала их больше:

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

2019.04.23 20:52:07.029   Started creating order...
2019.04.23 20:52:07.029   Applying template...
2019.04.23 20:52:07.029   Creating document text...
2019.04.23 20:52:07.029   Signing...
2019.04.23 20:52:07.038   Sending: 23.04.2019 19:52:10: 01.01.0001 0:00:00 [ClientOrderEntity(65): ....

Что я делаю не так?

Vit123
Сообщения: 19
Зарегистрирован: 29 окт 2018, 09:49
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: AdirConnector

Непрочитанное сообщение Vit123 » 24 апр 2019, 11:34

Я так понял нужна инициализация.
У меня тоже через раз выставлялась, ключ сертификата то загрузится, то нет.
Решить проблему помогло :

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

OrderSendManager.Instance.Init();


До установления коннекта.

В логе появится:
019.04.23 14:28:17.293 Started creating order...
2019.04.23 14:28:17.293 Applying template...
2019.04.23 14:28:17.730 Creating document text...
2019.04.23 14:28:17.777 Signing...
2019.04.23 14:28:17.839 Sending:
Так же появится лог по ключу сертификата, где будет сказано, что ключ загружен.

Marcello
Сообщения: 17
Зарегистрирован: 31 авг 2017, 11:42
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: AdirConnector

Непрочитанное сообщение Marcello » 24 апр 2019, 13:15

Может кому-то будет полезным пример подачи заявки с указанием времени активации и "длительности":

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

string message;
ClientOrderEntity clientOrder;
Core.OrderSendManager.CreateClientOrderEntity(149199, OrderType.LMT, QuantityType.QTY, "11111-000", out message, out clientOrder, LifeTime.GTT);
clientOrder.Quantity = 2000;
clientOrder.LimitPrice = 90.0;
clientOrder.BuySell = OrderDirection.Buy;

var aTime = "25.04.2019 10:00:00"; // время активации
clientOrder.ActivationTime = DateTime.ParseExact(aTime, "dd.MM.yyyy HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo);

var wdTime = "25.04.2019 10:05:00"; // время окончания
clientOrder.WithDrawTime = DateTime.ParseExact(wdTime, "dd.MM.yyyy HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo);

var str = Core.OrderSendManager.SendOrder(clientOrder, true);

Vit123
Сообщения: 19
Зарегистрирован: 29 окт 2018, 09:49
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: AdirConnector

Непрочитанное сообщение Vit123 » 24 апр 2019, 20:10

Ребята, кто знает как на балансы подписаться?
Позиции приходят без подписки, а балансы молчат.

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

Re: AdirConnector

Непрочитанное сообщение ensh » 25 апр 2019, 14:07

Vit123 писал(а):Ребята, кто знает как на балансы подписаться?
Позиции приходят без подписки, а балансы молчат.

Балансы - результат агрегации позиций, то есть подписываемся на позиции, а потом опрашиваем балансы периодически и смотрим что поменялось.
Смотрите четвертый или пятый пост в теме, там по таймеру одновременно получают обновления позиций и балансов

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

Re: AdirConnector

Непрочитанное сообщение piyyy » 25 апр 2019, 17:29

Vit123

Вызов OrderSendManager.Instance.Init() не имеет смысла, т.к. он ничего не делает. Единственный результат это создание объекта OrderSendManager (см. паттерн Singleton). Что эквивалентно:

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

var _orderSendManager = OrderSendManager.Instance;


Однако, до вызова OrderSendManager.CreateClientOrderEntity() он и так создается в рантайме.

Межуд этими сообщениями происходит подгрузка ключа в другом трэде. Скорее всего, искать причину нужно в этом направлении.

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

2019.04.23 20:52:07.029   Applying template...
2019.04.23 20:52:07.029   Creating document text...


Попробуй так:

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

Sign.Instance.LoadCerificate(true, false);
// Так же можно поробовать так
//Sign.Instance.LoadCerificate(true);
//while (!Sign.Instance.IsKeyLoaded)
//{
//    Thread.Sleep(1000);
//}
string message;
..........................


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

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

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