Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

русская кодировка для вывода сообщений или ввода заявок с автопреносом #13

Closed
SatCat opened this issue May 16, 2023 · 1 comment

Comments

@SatCat
Copy link

SatCat commented May 16, 2023

Приветствую!
Обнаружил, что в питоновской локали utf-8 проблемы с выводом в QUIK сообщений на русском.
Да и не только наверное локаль виновата. Lua в принципе будет дробить уникод-символы на два символа.

Внес небольшое исправление для формирования правильного для QUIK json-а

def ProcessRequest(self, Request):
        # ориг.версия
        #rawData = dumps(Request)  # Переводим запрос в формат JSON
        #self.socketRequests.sendall(f'{rawData}\r\n'.encode())  # Отправляем запрос в QUIK`

        # новый вариант делать json-совместимый запрос к неумеющим-правильно-unicode-lua
        bstring = (f"{Request}\r\n").replace("'", '"').encode("cp1251")
        self.socketRequests.sendall(bstring)  # Отправляем запрос в QUIK
        
        
        fragments = []  # Гораздо быстрее получать ответ в виде списка фрагментов

Теперь текст сообщений в QUIK на русском.
Например:

str_rus = "Ёжик в тумане окейно. Eng OK too."
print(f'Отправка сообщения в QUIK: {str_rus} {qpProvider.MessageInfo(str_rus)["data"]}')  # Проверка работы QUIK. 

Транзакции с автопереносом (которые надо делать на русском) тоже выставляются:
Например:

transaction = {  
     'TRANS_ID': "20", 
     'CLASSCODE': 'FUTSPREAD', 
     'ACTION': 'Ввод заявки на спрэд фьючерсов',  
     'Инструмент': 'EuM3EuU3',  
     'Торговый счет': TradeAccountId,  
     'Тип': 'Лимитированная',  
     'К/П': 'Покупка',  
     'Своп-Цена': str(price),  
     'Количество': str(quantity),
     'Условие исполнения': "Поставить в очередь",
     'Комментарий': '',
     'Переносить заявку': 'Да',    
     'Дата экспирации': '20230531',  
        }  

print(f'Новая лимитная заявка отправлена на рынок: {qpProvider.SendTransaction(transaction)["data"]}')

cia76 added a commit that referenced this issue May 16, 2023
@SatCat
Copy link
Author

SatCat commented May 16, 2023

Спасибо, оперативно, но заметил,что теперь "\r\n" стало дважды. )

        raw_data = f'{request}\r\n'.replace("'", '"').encode('cp1251')  # Переводим в кодировку Windows 1251
        self.socket_requests.sendall(f'{raw_data}\r\n'.encode())  # Отправляем запрос в QUIK

cia76 added a commit that referenced this issue May 16, 2023
@SatCat SatCat closed this as completed May 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant