Как правильно сделать запрос gPRC Tinkoff.InvestApi методу GetTechAnalysis?

Ссылка скопирована
1 ответ

Здравствуйте.
Пробую отправить запрос к методу GetTechAnalysis, но получаю ошибку

Unhandled exception. System.ArgumentException: Conversion from DateTime to Timestamp requires the DateTime kind to be Utc (Parameter 'dateTime')    at Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime dateTime)    at Program.Main(String[] args) in C:C#_DEVTestTinkofTestProgram.cs:line 14

Unhandled exception. System.ArgumentException: Conversion from DateTime to Timestamp requires the DateTime kind to be Utc (Parameter 'dateTime') at Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime dateTime) at Program.Main(String[] args) in C:C#_DEVTestTinkofTestProgram.cs:line 14

Что не так с Timestamp, не ка не пойму,
Сам код:

using Google.Protobuf.WellKnownTypes;  internal class Program {     private static void Main(string[] args)     {         var settings = new Tinkoff.InvestApi.InvestApiSettings()         {             AccessToken = "token"         };          var client = Tinkoff.InvestApi.InvestApiClientFactory.Create(settings);          var getTechAnalysis = client.MarketData.GetTechAnalysis(new Tinkoff.InvestApi.V1.GetTechAnalysisRequest         {             IndicatorType = Tinkoff.InvestApi.V1.GetTechAnalysisRequest.Types.IndicatorType.Rsi,             InstrumentUid = "a22a1263-8e1b-4546-a1aa-416463f104d3",             From = Timestamp.FromDateTimeOffset(new DateTime(2023,12,31)),             To = Timestamp.FromDateTime(DateTime.Now),             Interval = Tinkoff.InvestApi.V1.GetTechAnalysisRequest.Types.IndicatorInterval.OneDay,             TypeOfPrice = Tinkoff.InvestApi.V1.GetTechAnalysisRequest.Types.TypeOfPrice.High,             Length = 96,             //Deviation =             //{             //    DeviationMultiplier =             //    {             //        Units = 266,             //        Nano= 905             //    }             //}           }); ;          foreach (var techAnalysis in getTechAnalysis.TechnicalIndicators)         {             Console.WriteLine(                 $"{techAnalysis.Timestamp} {techAnalysis.MiddleBand}");         }     }  }

using Google.Protobuf.WellKnownTypes; internal class Program { private static void Main(string[] args) { var settings = new Tinkoff.InvestApi.InvestApiSettings() { AccessToken = "token" }; var client = Tinkoff.InvestApi.InvestApiClientFactory.Create(settings); var getTechAnalysis = client.MarketData.GetTechAnalysis(new Tinkoff.InvestApi.V1.GetTechAnalysisRequest { IndicatorType = Tinkoff.InvestApi.V1.GetTechAnalysisRequest.Types.IndicatorType.Rsi, InstrumentUid = "a22a1263-8e1b-4546-a1aa-416463f104d3", From = Timestamp.FromDateTimeOffset(new DateTime(2023,12,31)), To = Timestamp.FromDateTime(DateTime.Now), Interval = Tinkoff.InvestApi.V1.GetTechAnalysisRequest.Types.IndicatorInterval.OneDay, TypeOfPrice = Tinkoff.InvestApi.V1.GetTechAnalysisRequest.Types.TypeOfPrice.High, Length = 96, //Deviation = //{ // DeviationMultiplier = // { // Units = 266, // Nano= 905 // } //} }); ; foreach (var techAnalysis in getTechAnalysis.TechnicalIndicators) { Console.WriteLine( $"{techAnalysis.Timestamp} {techAnalysis.MiddleBand}"); } } }

Deviation
закомментировал, по причине возврата NULL.

Подскажите пожалуйста.

Дополнительно:

Ответы:

Вроде же чёрным по белому написно:

Conversion from DateTime to Timestamp requires the DateTime kind to be Utc (Parameter 'dateTime')

Timestamp.FromDateTime(DateTime.Now)
Вот тут надо UtcNow

Timestamp.FromDateTimeOffset(new DateTime(2023,12,31)),

Timestamp.FromDateTimeOffset(new DateTime(2023,12,31)),

и вот тут явно указать kind

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Для того чтобы правильно сделать запрос к методу GetTechAnalysis API Tinkoff.InvestApi через gRPC, необходимо следовать определенным шагам.

1. Подготовьте необходимые данные для запроса, такие как API ключ, тикер инструмента, интересующий вас интервал времени и другие параметры, если они требуются.

2. Определите структуру запроса к методу GetTechAnalysis. Возможно, вам потребуется создать объект запроса с определенными параметрами.

3. Установите соединение с сервером Tinkoff.InvestApi через gRPC. Для этого используйте соответствующий клиент для языка программирования, который вы используете.

4. Отправьте запрос к методу GetTechAnalysis с помощью клиента gRPC, передавая необходимые данные в соответствии с API документацией Tinkoff.InvestApi.

Пример запроса к методу GetTechAnalysis на PHP с использованием gRPC:

$request = new GetTechAnalysisRequest();
$request->setFigi('AAPL');
$request->setInterval('day');
 
list($response, $status) = $client->GetTechAnalysis($request)->wait();

$request = new GetTechAnalysisRequest(); $request->setFigi('AAPL'); $request->setInterval('day'); list($response, $status) = $client->GetTechAnalysis($request)->wait();

Помните, что для успешного выполнения запроса необходимо убедиться, что все данные переданы корректно и в соответствии с требованиями API. После получения ответа от сервера, обработайте его в соответствии с вашей логикой приложения.

Надеюсь, данная информация поможет вам успешно выполнить запрос к методу GetTechAnalysis API Tinkoff.InvestApi через gRPC. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их. Удачи!

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно