syntax = "proto3"; package tinkoff.public.invest.api.contract.v1; option go_package = "./;investapi"; option java_package = "ru.tinkoff.piapi.contract.v1"; option java_multiple_files = true; option csharp_namespace = "Tinkoff.InvestApi.V1"; option objc_class_prefix = "TIAPI"; option php_namespace = "Tinkoff\\Invest\\V1"; import "google/protobuf/timestamp.proto"; import "t_tech/invest/grpc/google/api/field_behavior.proto"; import "t_tech/invest/grpc/common.proto"; service SignalService {//Сервис для получения технических сигналов и мнений аналитиков по инструментам. //GetStrategies — стратегии rpc GetStrategies(GetStrategiesRequest) returns (GetStrategiesResponse); //GetSignals — сигналы rpc GetSignals(GetSignalsRequest) returns (GetSignalsResponse); } //Запрос стратегий. message GetStrategiesRequest { optional string strategy_id = 1; //Идентификатор стратегии. } //Стратегии message GetStrategiesResponse { repeated Strategy strategies = 1; } //Стратегия message Strategy { string strategy_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор стратегии. string strategy_name = 2 [(google.api.field_behavior) = REQUIRED]; //Название стратегии. optional string strategy_description = 3; //Описание стратегии. optional string strategy_url = 4; //Ссылка на страницу с описанием стратегии. StrategyType strategy_type = 5 [(google.api.field_behavior) = REQUIRED]; //Тип стратегии. int32 active_signals = 6 [(google.api.field_behavior) = REQUIRED]; //Количество активных сигналов. int32 total_signals = 7 [(google.api.field_behavior) = REQUIRED]; //Общее количество сигналов. int64 time_in_position = 8 [(google.api.field_behavior) = REQUIRED]; //Среднее время нахождения сигнала в позиции. Quotation average_signal_yield = 9 [(google.api.field_behavior) = REQUIRED]; //Средняя доходность сигнала в стратегии. Quotation average_signal_yield_year = 10 [(google.api.field_behavior) = REQUIRED]; //Средняя доходность сигналов в стратегии за последний год. Quotation yield = 11 [(google.api.field_behavior) = REQUIRED]; //Доходность стратегии. Quotation yield_year = 12 [(google.api.field_behavior) = REQUIRED]; //Доходность стратегии за последний год. } //Запрос сигналов. message GetSignalsRequest { optional string signal_id = 1; //Идентификатор сигнала. optional string strategy_id = 2; //Идентификатор стратегии. optional StrategyType strategy_type = 3; //Тип стратегии. optional string instrument_uid = 4; // Идентификатор бумаги. optional google.protobuf.Timestamp from = 5; // Дата начала запрашиваемого интервала по UTC. optional google.protobuf.Timestamp to = 6; // Дата конца запрашиваемого интервала по UTC. optional SignalDirection direction = 7; // Направление сигнала. optional SignalState active = 8; //Состояние сигнала. optional Page paging = 9; //Настройки пагинации. } //Сигналы. message GetSignalsResponse { repeated Signal signals = 1; //Массив сигналов. PageResponse paging = 2; //Данные по пагинации. } //Сигнал. message Signal { string signal_id = 1 [(google.api.field_behavior) = REQUIRED]; //Идентификатор сигнала. string strategy_id = 2 [(google.api.field_behavior) = REQUIRED]; //Идентификатор стратегии. string strategy_name = 3 [(google.api.field_behavior) = REQUIRED]; //Название стратегии. string instrument_uid = 4 [(google.api.field_behavior) = REQUIRED]; //Идентификатор бумаги. google.protobuf.Timestamp create_dt = 5 [(google.api.field_behavior) = REQUIRED]; //Дата и время создания сигнала по UTC. SignalDirection direction = 6 [(google.api.field_behavior) = REQUIRED]; //Направление сигнала. Quotation initial_price = 7 [(google.api.field_behavior) = REQUIRED]; //Цена бумаги на момент формирования сигнала. optional string info = 8; //Дополнительная информация о сигнале. string name = 9 [(google.api.field_behavior) = REQUIRED]; //Название сигнала. Quotation target_price = 10 [(google.api.field_behavior) = REQUIRED]; //Целевая цена. google.protobuf.Timestamp end_dt = 11 [(google.api.field_behavior) = REQUIRED]; //Дата и время дедлайна сигнала по UTC. optional int32 probability = 12; //Вероятность сигнала. optional Quotation stoploss = 13; //Порог закрытия сигнала по стоплосс. optional Quotation close_price = 14; //Цена закрытия сигнала. optional google.protobuf.Timestamp close_dt = 15; //Дата и время закрытия сигнала по UTC. } //Тип стратегии. enum StrategyType { STRATEGY_TYPE_UNSPECIFIED = 0; //Не определен. STRATEGY_TYPE_TECHNICAL = 1; //Техническая стратегия. STRATEGY_TYPE_FUNDAMENTAL = 2; //Фундаментальная стратегия. } //Направление сигнала. enum SignalDirection { SIGNAL_DIRECTION_UNSPECIFIED = 0; //Не определен. SIGNAL_DIRECTION_BUY = 1; //Покупка. SIGNAL_DIRECTION_SELL = 2; //Продажа. } //Статус сигнала. enum SignalState { SIGNAL_STATE_UNSPECIFIED = 0; //Не определен. SIGNAL_STATE_ACTIVE = 1; //Активный сигнал. SIGNAL_STATE_CLOSED = 2; //Закрытый сигнал. SIGNAL_STATE_ALL = 3; //Все состояния. }