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

Разработка с использованием клиентского API
spbrus
Сообщения: 2
Зарегистрирован: 16 дек 2020, 17:00

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

Непрочитанное сообщение spbrus » 16 дек 2020, 17:15

Привет! Создал подключение как на первой странице, далее для начала хочу получить код инструмента по СПБ например APPLE, но не понятно что писать в Core.DataStorageShared.GetIdFI("AAPL","???"):

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

 static void Instance_ConnectionChanging(Core.LogicConnectionStatus status)
        {
            Console.WriteLine(String.Format("Instance_ConnectionChanging({0})", status.ToString()));

            if (status == Core.LogicConnectionStatus.Connected) Console.Write(Core.DataStorageShared.GetIdFI("AAPL"));
         }

А в ответ приходит -1 ...
Вот еще пробовал тупо по баксу, но ничего не работает (брал из AD.Common.Helpers.MarketBoardType):
Core.DataStorageShared.GetIdFI("USD", "CETS_TOM")
Core.DataStorageShared.GetIdFI("", "CETS_TOM_USD")
Core.DataStorageShared.GetIdFI("USD", "CETS_TOM_USD")

P.S. нашел в логах что спб биржа это SPFPA, ставлю Core.DataStorageShared.GetIdFI("AAPL","SPFPA"), ответ тот же -1...

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

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

Непрочитанное сообщение piyyy » 17 дек 2020, 21:11

-1 дефолтное значение IdFi если по каким-то причинам тикер не найден. Что у тебя возвращает GetObjects()?
GetIdFI("AAPL") - так неправильно вызывать. GetIdFI(string) ожидает что ты передашь ему строку вида "AAPL=СПБ"(не уверен на счет регистра)
Последний раз редактировалось piyyy 18 дек 2020, 23:19, всего редактировалось 1 раз.

spbrus
Сообщения: 2
Зарегистрирован: 16 дек 2020, 17:00

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

Непрочитанное сообщение spbrus » 18 дек 2020, 16:28

piyyy писал(а):-1 дефолтное значение IdFi если по каким-то причинам тикер не найден. Что у тебя возвращает GetObjects()?
GetIdFI("AAPL") - так неправильно вызывать. GetIdFI(string) ожидает что ты передашь ему строку вида "AAPL=SPFPA"(не уверен на счет регистра)

Console.Write(DataStorageShared.GetObject(538378).SymbolObject);
Console.Write(DataStorageShared.GetObject(538378).NameObject);

Привет!
Зависает на GetObject, мигает курсор и все. "AAPL=SPFPA" попробовал, втч в разном регистре, также -1.

Вот полный текст программки, может в чем-то другом проблема?

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

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;
using Core;

namespace AdirConnector
{
    class Program
    {
        static void Main(string[] args)
        {
            // настройка системы логирования
            LogFileManager.Instance.FolderPath = @"F:\Alfa-Direct Conn\Logs\";
            LogFileManager.Instance.LoggingLevel = EventsLoggingLevels.All;
            LogFileManager.Instance.SizeLimit = 32u << 20;

            RunProcessing(); // программа где-то здесь

            Console.ReadLine(); // ожидаем нажатия Enter, что приведет к дисконнекту
            Core.ADConnection.Instance.Disconnect();

            Console.ReadLine(); // ожидаем нажатия Enter, что приведет к выходу из программы
            LogFileManager.Instance.WriteAllStream(); // сбрасываем на диск все логи, из буферов
        }

        static void Instance_ConnectionChanging(Core.LogicConnectionStatus status)
        {
            Console.WriteLine(String.Format("Instance_ConnectionChanging({0})", status.ToString()));

            if (status == Core.LogicConnectionStatus.Connected)
            {
                Thread.Sleep(5000);


                Console.WriteLine("GetIdObject:");
                Console.Write(DataStorageShared.GetObject(538378).SymbolObject);
                Console.Write(DataStorageShared.GetObject(538378).NameObject);

                Console.Write(Core.DataStorageShared.GetIdFI("AAPL", "SPFPA"));
                Console.Write(Core.DataStorageShared.GetIdFI("AAPL=SPFPA"));
                Console.Write(Core.DataStorageShared.GetIdFI("AAPL=spfpa"));
            }
        }

        static void Instance_OnConnectionStatusChanged(FrontEndType frontendType, ConnectionStatus status)
        {
            Console.WriteLine(String.Format("Instance_ConnectionChanged({0}, {1})", frontendType.ToString(), status.ToString()));
        }


        static void OnFrontEndConnectionStatusChanged(FrontEndType frontendType, ConnectionStatus status)
        {
            Console.WriteLine(String.Format("Instance_ConnectionChanged({0}, {1})", frontendType.ToString(), status.ToString()));
        }

        static void RunProcessing()
        {
            Core.ConnectionInfo.Instance.Load(ApplicationPaths.ConnectionInfoFilePath);

            Core.ADConnection.Instance.ConnectionChanging += Instance_ConnectionChanging;
            Core.ADConnection.Instance.OnFrontEndConnectionStatusChanged += Instance_OnConnectionStatusChanged;

            Console.Write("Login=>");
            var login = Console.ReadLine();

            Console.Write("Password=>");
            var password = Console.ReadLine();
           
            Core.ADConnection.Instance.Login(login, password);
        }

    }
}

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

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

Непрочитанное сообщение piyyy » 18 дек 2020, 23:18

Если ты запускал и логинился в терминал, то почти вся информация есть в локальной DB. C:\Users\Username\AppData\Local\Alfa-Direct\DB. Для того чтобы получить информацию нужно загрузить ее DataStorageShared.LoadDatabaseData(Action<EntityType> callback, Func<Task> task).

Поправка к моему предыдущему посту. GetIdFI(string) ожидает что ты передашь ему строку вида "AAPL=СПБ" "USD=ВР TOM".

Вообще советую начать с коннекта к WCF сервису (ADClientSDK.dll) если такие сложности возникают. Там все проще и поиск по инструментам есть AdDictionaries.SearchInstruments(string name, ObjectGroup objectGroup)

ifinch
Сообщения: 14
Зарегистрирован: 14 янв 2021, 14:47
Благодарил (а): 1 раз
Поблагодарили: 1 раз

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

Непрочитанное сообщение ifinch » 20 авг 2021, 11:06

Есть коннектор при попытке подключиться через который выдается следующая ошибка. Естьли мысли в чем дело? (NetProtocol.dll на месте)

System.TypeInitializationException: The type initializer for '#=zNSJwfNMcvXHlIMoaOLnUnyd_bnZbb4le_Q==' threw an exception.
---> System.TypeInitializationException: The type initializer for 'AD.Common.Helpers.Packer' threw an exception.
---> System.IO.FileNotFoundException: Could not load file or assembly 'NetProtocol, Version=4.0.1900.1900, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'NetProtocol, Version=4.0.1900.1900, Culture=neutral, PublicKeyToken=null'
at AD.Common.Helpers.Packer..cctor()
--- End of inner exception stack trace ---
at AD.Common.Helpers.Packer.Initialize()
at #=zNSJwfNMcvXHlIMoaOLnUnyd_bnZbb4le_Q==..cctor()
--- End of inner exception stack trace ---
at #=zNSJwfNMcvXHlIMoaOLnUnyd_bnZbb4le_Q==..ctor(AlfaDirectMessageAdapter #=zG6JT1Uo=)
at StockSharp.AlfaDirect.AlfaDirectMessageAdapter.OnSendInMessage(Message message)
at StockSharp.Messages.MessageAdapter.SendInMessage(Message message)

sbels
Сообщения: 2
Зарегистрирован: 18 окт 2021, 17:06

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

Непрочитанное сообщение sbels » 19 окт 2021, 00:55

А удалось кому-нибудь получить котировки?
Смотрю
int RequestChartArchive(CandleType candleType, int idFi, DateTime centerPoint, BaseTimeFrame timeFrame, int days);

так она же int возвращает, причем увеличивающиеся каждый раз, что это?)


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

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

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