From bb3bb53cf0ed75df57f23350a8c08af17a8f1094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=A7=D0=B5=D1=87=D0=B5?= =?UTF-8?q?=D1=82?= Date: Thu, 6 May 2021 09:41:41 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B3=D0=BE=20=D1=81=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/02 - Accounts.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/Examples/02 - Accounts.py b/Examples/02 - Accounts.py index 1150b11..f139b2a 100644 --- a/Examples/02 - Accounts.py +++ b/Examples/02 - Accounts.py @@ -78,16 +78,16 @@ def GetAccount(ClientCode='', FirmId='SPBFUT', TradeAccountId='SPBFUT00PST', Lim print(f'- Фьючерсная позиция {activeFuturesHolding["sec_code"]} {activeFuturesHolding["totalnet"]} @ {activeFuturesHolding["cbplused"]}') else: # Для остальных фирм accountMoneyLimit = [moneyLimit for moneyLimit in moneyLimits # Денежный лимит - if moneyLimit['client_code'] == ClientCode and # Выбираем по коду клиента - moneyLimit['firmid'] == FirmId and # Фирме - moneyLimit['limit_kind'] == LimitKind and # Дню лимита - moneyLimit["currcode"] == CurrencyCode][0] # Валюте + if moneyLimit['client_code'] == ClientCode and # Выбираем по коду клиента + moneyLimit['firmid'] == FirmId and # Фирме + moneyLimit['limit_kind'] == LimitKind and # Дню лимита + moneyLimit["currcode"] == CurrencyCode][0] # Валюте print(f'- Денежный лимит {accountMoneyLimit["currentbal"]}') accountDepoLimits = [depoLimit for depoLimit in depoLimits # Бумажный лимит - if depoLimit['client_code'] == ClientCode and # Выбираем по коду клиента - depoLimit['firmid'] == FirmId and # Фирме - depoLimit['limit_kind'] == LimitKind and # Дню лимита - depoLimit['currentbal'] != 0] # Берем только открытые позиции по фирме и дню + if depoLimit['client_code'] == ClientCode and # Выбираем по коду клиента + depoLimit['firmid'] == FirmId and # Фирме + depoLimit['limit_kind'] == LimitKind and # Дню лимита + depoLimit['currentbal'] != 0] # Берем только открытые позиции по фирме и дню for firmKindDepoLimit in accountDepoLimits: # Пробегаемся по всем позициям secCode = firmKindDepoLimit["sec_code"] # Код тикера entryPrice = float(firmKindDepoLimit["wa_position_price"]) @@ -97,18 +97,18 @@ def GetAccount(ClientCode='', FirmId='SPBFUT', TradeAccountId='SPBFUT00PST', Lim lastPrice *= 10 # Умножаем на 10 print(f'- Позиция {classCode}.{secCode} {firmKindDepoLimit["currentbal"]} @ {entryPrice:.2f}/{lastPrice:.2f}') accountOrders = [order for order in orders # Заявки - if (order['client_code'] == ClientCode or ClientCode == '') and # Выбираем по коду клиента - order['firmid'] == FirmId and # Фирме - order['account'] == TradeAccountId and # Счету - order['flags'] & 0b1 == 0b1] # Активные заявки - for accountOrder in accountOrders: # Пробегаемся по всем заявка + if (order['client_code'] == ClientCode or ClientCode == '') and # Выбираем по коду клиента + order['firmid'] == FirmId and # Фирме + order['account'] == TradeAccountId and # Счету + order['flags'] & 0b1 == 0b1] # Активные заявки + for accountOrder in accountOrders: # Пробегаемся по всем заявкам isBuy = accountOrder['flags'] & 0b100 != 0b100 # Заявка на покупку print(f'- Заявка номер {accountOrder["order_num"]} {"Покупка" if isBuy else "Продажа"} {accountOrder["class_code"]}.{accountOrder["sec_code"]} {accountOrder["qty"]} @ {accountOrder["price"]}') accountStopOrders = [stopOrder for stopOrder in stopOrders # Стоп заявки - if (stopOrder['client_code'] == ClientCode or ClientCode == '') and # Выбираем по коду клиента - stopOrder['firmid'] == FirmId and # Фирме - stopOrder['account'] == TradeAccountId and # Счету - stopOrder['flags'] & 0b1 == 0b1] # Активные стоп заявки + if (stopOrder['client_code'] == ClientCode or ClientCode == '') and # Выбираем по коду клиента + stopOrder['firmid'] == FirmId and # Фирме + stopOrder['account'] == TradeAccountId and # Счету + stopOrder['flags'] & 0b1 == 0b1] # Активные стоп заявки for accountStopOrder in accountStopOrders: # Пробегаемся по всем стоп заявкам isBuy = accountStopOrder['flags'] & 0b100 != 0b100 # Заявка на покупку print(f'- Стоп заявка номер {accountStopOrder["order_num"]} {"Покупка" if isBuy else "Продажа"} {accountStopOrder["class_code"]}.{accountStopOrder["sec_code"]} {accountStopOrder["qty"]} @ {accountStopOrder["price"]}') @@ -121,6 +121,8 @@ if __name__ == '__main__': # Точка входа при запуске это GetAllAccounts() # Получаем все счета. По ним можно будет сформировать список счетов для торговли print() GetAccount() # Российские фьючерсы и опционы (счет по умолчанию) + # По списку полученных счетов обязательно проверьте каждый! + # GetAccount('<Код клиента>', '<Код фирмы>', '<Счет>', <Номер дня лимита>, '<Валюта>') # Выход qpProvider.CloseConnectionAndThread() # Перед выходом закрываем соединение и поток QuikPy из любого экземпляра