softandiron/tinkproject

Не выгружаются внебиржевые сделки

Radiomaka opened this issue · 21 comments

При выгрузке не отображаются никакие внебиржевые сделки, только комиссия за них. Примеры тикеров DQ, ZIM, ADES, TRLY.

Боюсь, что это вот сюда:
https://github.com/TinkoffCreditSystems/invest-openapi/issues
и в поддержку Тинькова.

Ошибка аналогична невозможности выгрузки валют, кроме Рубля, Доллара и Евро

Точно это к Тинькову. Реализовать на данный момент не получится.
Ограничения скрипта

Добрый день!

Произведена работа по подключению нового API - не могли бы вы посмотреть - сохраняется ли проблема в нем?
Код расположен в ветке API2.

Все установил, обновил, но вываливается с такой ошибкой
Traceback (most recent call last): File "C:\Users\Acer\Nextcloud2\INVEST\TEST2\main.py", line 469, in <module> my_positions = creating_positions_objects() File "C:\Users\Acer\Nextcloud2\INVEST\TEST2\main.py", line 129, in creating_positions_objects ave_buy_price_rub = calculate_ave_buy_price_rub(this_pos) File "C:\Users\Acer\Nextcloud2\INVEST\TEST2\main.py", line 39, in calculate_ave_buy_price_rub if ops.operation_type == 'Buy' or ops.operation_type == 'BuyCard': File "C:\Users\Acer\Nextcloud2\INVEST\TEST2\tgrpc\classes.py", line 233, in operation_type return OPERATION_TYPES[self.type] KeyError: 'Доход по сделке РЕПО овернайт'

Исправил.
Если все закончится благополучно, просьба в логах просмотреть на строчки подобные:
Warning: Unknown operation type: Доход по сделке РЕПО овернайт
Просьба их скинуть сюда.

Файл посчитался, но внебиржевые сделки (тикеры TLRY, SBSW,BTU) не показываются

Ошибки выскакивали такие:
[ERROR] Parser: Что-то не то со свечами! В этот день было IPO? Или размещение средств?
14:34:51 [ERROR] Parser: 2021-09-17 00:00:00 - BBG00YQ7XR05 - ZIM
[WARNING] root: Вероятно, был обратный сплит KSPI@GS - отношение цен 1:1

Вроде все

Можно попросить запустить следующее в папке со скриптом:

from datetime import datetime
import tgrpc
import json
from configuration import Config

config = Config()

tinkoff_access = tgrpc.tgrpc_parser(config.token)

out = {}

for account in tinkoff_access.get_accounts_list():
    account_data = {"positions": {}, "operations": {}}
    print("Collecting positions")
    for position in tinkoff_access.get_portfolio(account.id):
        ticker = tinkoff_access.get_instrument_raw(position.figi).ticker
        account_data["positions"][ticker]={
            "figi": position.figi,
            "instrument_type": position.instrument_type,
        }
    print("Collecting operations")
    for operation in tinkoff_access.get_operations(account.id,
                                                   datetime(1970, 1, 1, 1, 1),
                                                   datetime.now()):
        account_data['operations'][operation.id] = {
            "operation_type": operation.type,
            "figi": operation.figi,
            "instrument_type": operation.instrument_type,
            "status": operation.status,
        }
    out[account.name] = account_data
    break

with open("mve.json", "w") as f:
    f.write(json.dumps(out, ensure_ascii=False, indent=2))

print("End of script")

Должен сформироваться файлик mve.json
просьба или передать его мне или хотя бы часть строчек, если там есть эти тикеры, а так же "интересные" операции.
В файлике нет цен, сумм или количеств купленного.

Traceback (most recent call last):
File "C:\Users\Acer\Nextcloud2\INVEST\TEST1\1.py", line 2, in
import tgrpc
ModuleNotFoundError: No module named 'tgrpc'

Пробую pip install tgrpc не показывает ничего

Судя по ошибкам выше, файлик должен располагаться в папке: C:\Users\Acer\Nextcloud2\INVEST\TEST2, там же где папка tgrpc, то есть в коренной папке скрипта tinkproject.

Заново загрузил проект и запустил. Теперь вываливаются такие ошибки
Traceback (most recent call last): File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 469, in <module> my_positions = creating_positions_objects() File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 129, in creating_positions_objects ave_buy_price_rub = calculate_ave_buy_price_rub(this_pos) File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 36, in calculate_ave_buy_price_rub rate_for_date = data_parser.get_exchange_rates_for_date_db(date) File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 47, in get_exchange_rates_for_date_db rates[currency] = get_exchange_rate_db(date, currency) File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 37, in get_exchange_rate_db rates = get_exchange_rate(date) File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 52, in get_exchange_rate rate = ExchangeRates(date) File "C:\Users\Acer\AppData\Local\Programs\Python\Python39\lib\site-packages\pycbrf\rates.py", line 60, in __init__ parsed = self._parse(raw_data) File "C:\Users\Acer\AppData\Local\Programs\Python\Python39\lib\site-packages\pycbrf\rates.py", line 95, in _parse xml = ElementTree.fromstring(data) File "C:\Users\Acer\AppData\Local\Programs\Python\Python39\lib\xml\etree\ElementTree.py", line 1347, in XML parser.feed(text) File "<string>", line None xml.etree.ElementTree.ParseError: mismatched tag: line 4, column 100

Заново загрузил проект и запустил. Теперь вываливаются такие ошибки Traceback (most recent call last): File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 469, in <module> my_positions = creating_positions_objects() File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 129, in creating_positions_objects ave_buy_price_rub = calculate_ave_buy_price_rub(this_pos) File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 36, in calculate_ave_buy_price_rub rate_for_date = data_parser.get_exchange_rates_for_date_db(date) File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 47, in get_exchange_rates_for_date_db rates[currency] = get_exchange_rate_db(date, currency) File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 37, in get_exchange_rate_db rates = get_exchange_rate(date) File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 52, in get_exchange_rate rate = ExchangeRates(date) File "C:\Users\Acer\AppData\Local\Programs\Python\Python39\lib\site-packages\pycbrf\rates.py", line 60, in __init__ parsed = self._parse(raw_data) File "C:\Users\Acer\AppData\Local\Programs\Python\Python39\lib\site-packages\pycbrf\rates.py", line 95, in _parse xml = ElementTree.fromstring(data) File "C:\Users\Acer\AppData\Local\Programs\Python\Python39\lib\xml\etree\ElementTree.py", line 1347, in XML parser.feed(text) File "<string>", line None xml.etree.ElementTree.ParseError: mismatched tag: line 4, column 100

Это похоже на ошибку ответа с центробанка... потому что ошибки идут к формированию XML ответа...

mve.zip

Спасибо большое!
В файлике есть тикеры DQ, TLRY, ZIM (только 1 счет выдается тем скриптом, поэтому может не все).
уточните пожалуйста:

  1. Есть ли они на закладке Portfolio?
  2. Есть ли они на вкладке с операциями в разделе покупка или на их месте стоит None вместо Ticker?

После загрузки с сайта центробанка
15:52:22 [INFO] root: ГДР Etalon Group PLC
15:52:23 [WARNING] root: Вероятно, был обратный сплит BBG000BKLH74 - отношение цен 1:1
15:52:23 [INFO] root: Gap
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:24 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт


15:52:46 [INFO] root: ..positions are ready
15:52:46 [INFO] root: calculating parts
15:52:46 [INFO] root: creating operations objects..
15:52:46 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:46 [WARNING] tgrpc-classes: Unknown operation type: Удержание комиссии за непокрытую позицию
15:52:46 [WARNING] tgrpc-classes: Unknown operation type: Доход по сделке РЕПО овернайт
15:52:46 [WARNING] tgrpc-classes: Unknown operation type: accruing_varmargin
15:52:46 [ERROR] tgrpc: local variable 'result' referenced before assignment
15:52:46 [ERROR] Parser: Get instrument by figi error
15:52:46 [ERROR] Parser: 'NoneType' object has no attribute 'figi'
Traceback (most recent call last):
File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 484, in
my_operations = create_operations_objects()
File "C:\Users\Acer\Nextcloud2\INVEST\44\main.py", line 318, in create_operations_objects
ticker = data_parser.get_ticker_by_figi(this_op.figi, this_op.instrument_type)
File "C:\Users\Acer\Nextcloud2\INVEST\44\data_parser.py", line 167, in get_ticker_by_figi
ticker = instrument.ticker
AttributeError: 'NoneType' object has no attribute 'ticker'

Спасибо большое за файл!
В файлике есть тикеры DQ, TLRY, ZIM (только 1 счет обрабатывается тем скриптом, поэтому может не все).
уточните пожалуйста:

Есть ли они на закладке Portfolio?
Есть ли они на вкладке с операциями в разделе покупка или на их месте стоит None вместо Ticker?

Спасибо большое за файл! В файлике есть тикеры DQ, TLRY, ZIM (только 1 счет обрабатывается тем скриптом, поэтому может не все). уточните пожалуйста:

Есть ли они на закладке Portfolio? Есть ли они на вкладке с операциями в разделе покупка или на их месте стоит None вместо Ticker?

Файл не создается

Да, потом понял.
Есть пара багов в самом API - которые препятствуют обработке, но пока не могу это подтвердить.
На следующей неделе Тинькофф обещает запустить функционал токенов только на чтение и с ограничением на счета, какие можно просматривать, могу я попросить Ваш для отработки работы скрипта?

Напишите как он выйдет, посмотрим чем смогу помочь

Добрый день, @Radiomaka !

Появилась возможность делать Read-Only Token на 1 счет.
https://www.tinkoff.ru/invest/settings/api/
Если есть возможность и желание, не могли бы Вы предоставить его мне?
Желательно на счет, где есть проблемные токены и сделки.

Например в телеграмм: @alexanderk_md

Заранее благодарю!

Огромное спасибо за помощь!
По итогам:

  • Внебиржевые бумаги выводятся в список портфолио, можно посмотреть историю операций по ним. Однако - вывод как текущей цены, так и свечей - ограничен со стороны Тинькофф, что приводит к "иногда появляющимся" данным в таблице, а иногда - просто нулевым значением в последней.
  • Фьючерсы - выводятся, вычисляется цена, есть исторические данные, подсчет долей в структуре активов.