Не выгружаются внебиржевые сделки
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 ответа...
Спасибо большое!
В файлике есть тикеры DQ, TLRY, ZIM (только 1 счет выдается тем скриптом, поэтому может не все).
уточните пожалуйста:
- Есть ли они на закладке Portfolio?
- Есть ли они на вкладке с операциями в разделе покупка или на их месте стоит 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
Заранее благодарю!
Огромное спасибо за помощь!
По итогам:
- Внебиржевые бумаги выводятся в список портфолио, можно посмотреть историю операций по ним. Однако - вывод как текущей цены, так и свечей - ограничен со стороны Тинькофф, что приводит к "иногда появляющимся" данным в таблице, а иногда - просто нулевым значением в последней.
- Фьючерсы - выводятся, вычисляется цена, есть исторические данные, подсчет долей в структуре активов.