bazuce (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Дробное значение balance
 
Цитата
_sk_ написал:
У меня была такая проблема. Разработчики больше не поддерживают 7-ю версию терминала. Откатитесь на версию 7.16 (там ещё нет этой ошибки) или перейдите на 8.1 (там уже нет этой ошибки).

А вообще, плохо, конечно, что последний релиз 7-й версии терминала оказался таким вот образом сломан.
Спасибо за информацию я откатился.
Дробное значение balance
 
Привет.

После снятия заявки из скрипта хотел перевыставлять снятый остаток, но обнаружил, что в коллбек OnTransReply приходит сообщение содержащее в поле balance дробное значение. Можете зарегистрировать обращение на исправление? Если нужны дополнительные данные - готов предоставить.
Код
2019-10-1 21:58:14.647784 INFO  OnTransReply.trans_id.101005: Receive result: Заявка 79536677990 снята. Неисполненный остаток: 17.
{price=0,client_code="yyyyy",balance=0.17,time=215813,status=3,date_time={week_day=2,hour=21,ms=976,mcs=976102,day=1,month=10,sec=13,year=2019,min=58},gate_reply_time={week_day=2,hour=21,ms=975,mcs=975790,day=1,month=10,sec=13,year=2019,min=58},first_ordernum=0,trans_id=101005,error_source=0,exchange_code="7953667799",uid=1202,error_code=0,flags=2359297,result_msg="Заявка 79536677990 снята. Неисполненный остаток: 17.",brokerref="",firm_id="xxxx",quantity=0,order_num=79536677990,server_trans_id=882,account=""}

Рынок СПБ, версия программы 7.27.1.18
Разрастается info.wnd от подписок в lua скрипте
 
Возникает проблема приводящая к тому, что квик съедает максимум доступной ему оперативной памяти. Если закрыть квик, он дампит в файл info.wnd большое количество данных, которые он вычитывает при следующем запуске (из-за чего стартует долго) и загружает в память, из-за чего снова возникает проблема с недостатком памяти. Для ее устранения необходимо удалить info.wnd.

Чтобы убедиться, что память потребляет именно квик а не скрипт написал пример, скрипт выводит раз в минуту информацию об использованной памяти:
Скрытый текст


Пример вывода:
Скрытый текст

Как можно решить данную проблему без перезапуска квика и удаления info.wnd? Из-за чего образуется потребляется столько оперативной памяти? Как уменьшить можно потребление?
Заполнение флагов для заявок с tif=FOK
 
Допустил ошибку в первом пункте, да и темы тоже.

Заявка отправляется с типом IOC.
Это несколько меняет логику, получается по такому типу заявок можно получить флаг исполнения в сообщении получаемом при обработки OnOrder только при полном исполнении?

Что в первом, что во втором примере заявка исполнилась только частично
Заполнение флагов для заявок с tif=FOK
 
Цитата
Не понятно зачем гадать. Флаги описаны в документации QLUA.chm
-Описание битовых флагов
--Флаги для таблиц Заявки, Заявки на внебиржевые сделки, Сделки, Сделки для исполнения
Я не гадаю, это и есть интерпретация на основе документации
Цитата

у Вас флаги flags=286.
В битовом представлении это число 100011110
Видим что 0x1 равен 0, а 0x2 равен 1.
Согласно документации это значит что заявка снята.
И на скриншоте она у Вас снята. И по reject_reason она снята.
Почему Вы думаете что она исполнена совсем не понятно. Посмотрите сами в таблице заявок, колонка Статус
Это скриншот таблицы сделок, заявка была исполнена, есть биржевой номер.
Цитата
"кросс сделка" это потенциальная сделка с самим собой.
Возможно в момент срабатывания заявки у Вас была активна другая заявка противоположного направления?
В любом случае, как Вы на нее наткнулись подскажет только брокер.
Мне кажется Вы не совсем полностью рассмотрели второй пример или вообще не посмотрели, давайте опишу его словесно, чтобы стало понятнее:

1. Я отправил заявку с типом FOK (Полностью или отклонить), получил подтверждение что она принята с номером 39888085050
2. Я получил несколько экземпляров OnTrade с частичным исполнением заявки под номером 39888085050
3. Я получил OnOrder по уже частично исполненной заявке 39888085050 со статусом rejected="Вследствие возможной кросс-сделки", и флагами, что заявка снята.
4. После я получил вторую пачку сообщений OnTrade с второй частью исполнения на 10 лотов (не добавил кусок лога)

Является ли валидной ситуация в которой я получил две сделки и статус по заявке - снята с причиной rejected="Вследствие возможной кросс-сделки"?
Заполнение флагов для заявок с tif=FOK
 
Включил запись OnTrade, этот пример получился даже интереснее:


Отправил:
2018-10-01 16:53:26.626 lvl 4: {["Условие исполнения"]="Снять остаток",ACTION="Ввод заявки",CLASSCODE="SPBXM",["Комментарий"]="BBBBB/",TRANS_ID="1031",["К/П"]="Покупка",["Количество"]="20",["Цена"]="99.22",["Инструмент"]="SQ",["Торговый счет"]="AAAAA",["Класс"]="SPBXM",["Тип"]="Лимитированная"}

Получил:
2018-10-01 16:53:26.641 lvl 4: OnTransReply()
2018-10-01 16:53:26.641 lvl 4: {sec_code="SQ",price=99.22,client_code="BBBBB",balance=0,time=165631,status=3,class_code="SPBXM",trans_id=1031,exchange_code="3988808505",date_time={week_day=1,hour=16,ms=880,mcs=880171,day=1,month=10,sec=31,year=2018,min=56},uid=1183,flags=262145,result_msg="Заявка 39888085050 успешно зарегистрирована.",brokerref="BBBBB/",firm_id="CCCCC",quantity=20,order_num=39888085050,server_trans_id=1863,account="AAAAA"}
2018-10-01 16:53:26.683 lvl 4: OnTrade -<
2018-10-01 16:53:26.683 lvl 4: {price=99.22,settle_date=20181003,trade_num=36712950,lower_discount=0,exchange_comission=0,value=992.2,qty=10,reporate=0,clearing_bank_accid="",class_code="SPBXM",userid="",tradenum=36712950,flags=0,canceled_datetime={week_day=1,hour=0,ms=0,mcs=0,day=1,month=1,sec=0,year=1601,min=0},datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},clearing_firmid="",kind=1,canceled_uid=0,ordernum=39888085050,sec_code="SQ",system_ref="",block_securities=0,repoterm=0,broker_comission=0,period=1,client_code="BBBBB",linked_trade=0,firmid="ALRBM",account="AAAAA",yield=0,seccode="SQ",trans_id=1031,upper_discount=0,repo2value=0,start_discount=0,tech_center_comission=0,trade_currency="USD",accrued2=0,order_num=39888085050,repovalue=0,exchange_code="3671295",accruedint=0,settle_currency="USD",cpfirmid="",uid=1183,brokerref="BBBBB/",station_id="3988808505",price2=0,clearing_comission=0,settlecode="T2",bank_acc_id=""}
2018-10-01 16:53:26.683 lvl 4: OnTrade -<
2018-10-01 16:53:26.683 lvl 4: {price=99.22,settle_date=20181003,trade_num=36712950,lower_discount=0,exchange_comission=0,value=992.2,qty=10,reporate=0,clearing_bank_accid="",class_code="SPBXM",userid="",tradenum=36712950,flags=0,canceled_datetime={week_day=1,hour=0,ms=0,mcs=0,day=1,month=1,sec=0,year=1601,min=0},datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},clearing_firmid="",kind=1,canceled_uid=0,ordernum=39888085050,sec_code="SQ",system_ref="",block_securities=0,repoterm=0,broker_comission=0,period=1,client_code="BBBBB",linked_trade=0,firmid="ALRBM",account="AAAAA",yield=0,seccode="SQ",trans_id=1031,upper_discount=0,repo2value=0,start_discount=0,tech_center_comission=0,trade_currency="USD",accrued2=0,order_num=39888085050,repovalue=0,exchange_code="3671295",accruedint=0,settle_currency="USD",cpfirmid="",uid=1183,brokerref="BBBBB/",station_id="3988808505",price2=0,clearing_comission=0,settlecode="T2",bank_acc_id=""}
2018-10-01 16:53:26.683 lvl 4: OnTrade -<
2018-10-01 16:53:26.684 lvl 4: {price=99.22,settle_date=20181003,trade_num=36712950,lower_discount=0,exchange_comission=0,value=992.2,qty=10,reporate=0,clearing_bank_accid="",class_code="SPBXM",userid="",tradenum=36712950,flags=0,canceled_datetime={week_day=1,hour=0,ms=0,mcs=0,day=1,month=1,sec=0,year=1601,min=0},datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},clearing_firmid="",kind=1,canceled_uid=0,ordernum=39888085050,sec_code="SQ",system_ref="",block_securities=0,repoterm=0,broker_comission=0,period=1,client_code="BBBBB",linked_trade=0,firmid="ALRBM",account="AAAAA",yield=0,seccode="SQ",trans_id=1031,upper_discount=0,repo2value=0,start_discount=0,tech_center_comission=0,trade_currency="USD",accrued2=0,order_num=39888085050,repovalue=0,exchange_code="3671295",accruedint=0,settle_currency="USD",cpfirmid="",uid=1183,brokerref="BBBBB/",station_id="3988808505",price2=0,clearing_comission=0,settlecode="T2",bank_acc_id=""}
2018-10-01 16:53:26.684 lvl 4: OnOrder()
2018-10-01 16:53:26.684 lvl 4: {withdraw_datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},price=99.22,value_entry_type=0,balance=10,repo_value_balance=0,value=1984.4,qty=20,passive_only_order=0,class_code="SPBXM",activation_time=0,userid="",expiry=-1,flags=282,linkedorder=0,ordernum=39888085050,sec_code="SQ",canceled_uid=0,side_qualifier=0,client_code="BBBBB",visible=0,firmid="ALRBM",datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},yield=0,reject_reason="Вследствие возможной кросс-сделки",capacity=0,acnt_type=0,repo2value=0,start_discount=0,min_qty=0,ext_order_flags=0,exec_type=3,order_num=39888085050,repovalue=0,repoterm=0,accruedint=0,account="AAAAA",seccode="SQ",uid=0,brokerref="BBBBB/",exchange_code="3988808505",settlecode="T2",price2=0,trans_id=0,bank_acc_id=""}
2018-10-01 16:53:26.684 lvl 4: OnOrder()
2018-10-01 16:53:26.685 lvl 4: {withdraw_datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},price=99.22,value_entry_type=0,balance=10,repo_value_balance=0,value=1984.4,qty=20,passive_only_order=0,class_code="SPBXM",activation_time=0,userid="",expiry=-1,flags=282,linkedorder=0,ordernum=39888085050,sec_code="SQ",canceled_uid=0,side_qualifier=0,client_code="BBBBB",visible=0,firmid="ALRBM",datetime={week_day=1,hour=16,ms=877,mcs=877885,day=1,month=10,sec=31,year=2018,min=56},yield=0,reject_reason="Вследствие возможной кросс-сделки",capacity=0,acnt_type=0,repo2value=0,start_discount=0,min_qty=0,ext_order_flags=0,exec_type=3,order_num=39888085050,repovalue=0,repoterm=0,accruedint=0,account="AAAAA",seccode="SQ",uid=1183,brokerref="BBBBB/",exchange_code="3988808505",settlecode="T2",price2=0,trans_id=1031,bank_acc_id=""}

3. Зачем так много вызовов OnTrade?
4. Почему причина снятия заявки теперь reject_reason="Вследствие возможной кросс-сделки"?
Заполнение флагов для заявок с tif=FOK
 
Возникла проблема при попытке интерпретации флагов, получаемых при обработке OnOrder(), биржа SPB.

Я отправляю:
2018-10-01 15:10:55.731 lvl 4: {["Условие исполнения"]="Снять остаток",ACTION="Ввод заявки",CLASSCODE="SPBXM",
                               ["Комментарий"]="comment",TRANS_ID="540",["К/П"]="Продажа",["Количество"]="50",["Цена"]="100.97",
                               ["Инструмент"]="SQ",["Торговый счет"]="AAAAA",["Класс"]="SPBXM",["Тип"]="Лимитированная"}

В ответ получаю набор сообщений:
2018-10-01 15:10:55.746 lvl 4: OnTransReply()
2018-10-01 15:10:55.746 lvl 4: {sec_code="SQ",price=100.97,client_code="BBBBB",balance=0,time=151400,status=3,
                               class_code="SPBXM",trans_id=540,exchange_code="3988228638",date_time={week_day=1,
                               hour=15,ms=963,mcs=963583,day=1,month=10,sec=0,year=2018,min=14},uid=1183,flags=393217,
                               result_msg="Заявка 39882286380 успешно зарегистрирована.",brokerref="BBBBB",firm_id="CCCCC",
                               quantity=50,order_num=39882286380,server_trans_id=1863,account="AAAAA"}
2018-10-01 15:10:55.761 lvl 4: OnOrder()
2018-10-01 15:10:55.761 lvl 4: {withdraw_datetime={week_day=1,hour=15,ms=962,mcs=962914,day=1,month=10,sec=0,year=2018,min=14},
                               price=100.97,value_entry_type=0,balance=1,repo_value_balance=0,value=5048.5,qty=50,passive_only_order=0,
                               class_code="SPBXM",activation_time=0,userid="",expiry=-1,flags=286,linkedorder=0,ordernum=39882286380,
                               sec_code="SQ",canceled_uid=0,side_qualifier=0,client_code="BBBBB",visible=0,firmid="CCCCC",
                               datetime={week_day=1,hour=15,ms=962,mcs=962914,day=1,month=10,sec=0,year=2018,min=14},yield=0,
                               reject_reason="Истекло время действия",capacity=0,acnt_type=0,repo2value=0,start_discount=0,
                               min_qty=0,ext_order_flags=0,exec_type=3,order_num=39882286380,repovalue=0,repoterm=0,
                               accruedint=0,account="AAAAA",seccode="SQ",uid=0,brokerref="BBBBB",exchange_code="3988228638",
                               settlecode="T2",price2=0,trans_id=0,bank_acc_id=""}
2018-10-01 15:10:55.761 lvl 4: OnOrder()
2018-10-01 15:10:55.761 lvl 4: {withdraw_datetime={week_day=1,hour=15,ms=962,mcs=962914,day=1,month=10,sec=0,year=2018,min=14},
                               price=100.97,value_entry_type=0,balance=1,repo_value_balance=0,value=5048.5,qty=50,
                               passive_only_order=0,class_code="SPBXM",activation_time=0,userid="",expiry=-1,
                               flags=286,linkedorder=0,ordernum=39882286380,sec_code="SQ",
                               canceled_uid=0,side_qualifier=0,client_code="BBBBB",visible=0,firmid="CCCCC",
                               datetime={week_day=1,hour=15,ms=962,mcs=962914,day=1,month=10,sec=0,year=2018,min=14},yield=0,
                               reject_reason="Истекло время действия",capacity=0,acnt_type=0,repo2value=0,start_discount=0,
                               min_qty=0,ext_order_flags=0,exec_type=3,order_num=39882286380,repovalue=0,repoterm=0,
                               accruedint=0,account="AAAAA",seccode="SQ",uid=1183,brokerref="BBBBB",
                               exchange_code="3988228638",settlecode="T2",price2=0,trans_id=540,bank_acc_id=""}

Если я правильно обрабатываю поле, то мне пришли следующие флаги:
flag1 - Заявка снята
flag2 - Заявка на продажу
flag3 - Заявка лимитная
flag4 - Разрешить сделки по разным ценам
flag8 - Снять остаток

При этом заявка была исполнена (на время не обращайте внимание, у меня рассинхронизация между логом и сервером, OnTrade к сожалению записывал):




1. Насколько я понимаю, флаги в данном случае заполнились неверно? И причина описанная в reject_reason тоже невалидная? Как правильно определить что заявка с типом FOK была исполнена при обработке OnOrder ?
2. Почему по бирже СПБ приходят два одинаковых callback в OnOrder ?
Страницы: 1
Наверх