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

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

Страницы: 1
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex,

Код получили, предлагаем продолжить обсуждение вопроса в рамках почтовой переписки.

Цитата
А документации совсем нет, где структура данных описана?
Прикрепляли ранее  документ МБ  с описанием транзакции.
В соответствии в этим документом пробовал именовать поля, не помогло. Хотя там тоже странно, например поле CLIENTCODE. Я использую в новой заявке CLIENT_CODE и оно работает. Исходя из этого непонятно, кто и где осуществляет конверсию полей, либо есть какие-то допустимые варианты написаний. Как например во всех ответах присутствует как ordernum, так и order_num.
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex,

Просьба прислать используемый код (или его фрагмент).
Информацию можно направить на нашу почту  quiksupport@arqatech.com , в этом случае необходимо указать ссылку на данную тему форума в письме.
отправил на емейл
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex,

Просьба прислать используемый код (или его фрагмент).
Информацию можно направить на нашу почту  quiksupport@arqatech.com , в этом случае необходимо указать ссылку на данную тему форума в письме.
хорошо, подготовлю код. А документации совсем нет, где структура данных описана?
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex, добрый день.

Уточните, пожалуйста, с отправкой какой транзакции возникает проблема?
Пример транзакции "Изменение заявки" мы приводили в сообщении #8 этой темы.
Если трудности возникают с отправкой другой транзакции, просим описать ситуацию более подробно.
не могли бы вы уточнить, какие поля являются строго обязательными для изменения и какие они могут принимать заданные значения?
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex, добрый день.

Уточните, пожалуйста, с отправкой какой транзакции возникает проблема?
Пример транзакции "Изменение заявки" мы приводили в сообщении #8 этой темы.
Если трудности возникают с отправкой другой транзакции, просим описать ситуацию более подробно.
Трудности именно с транзакцией "Изменение заявки".
Пробовал разные комбинации названия полей и их значений (на русском, на английском), но так и не смог ни разу добиться изменения хотя бы цены активной заявки. Эксперименты ставил на коротком скрипте, который больше ничего не делает, только ставит и пытается изменить заявку.
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
bespalex написал:
Цитата
Anton Belonogov написал:
bespalex ,

 
Цитата
Здесь "Заявка" это order_num?
 "Заявка" - номер исходной заявки, параметры которой необходимо изменить.

 
Цитата
"Примечание"   "W1//ORDER_AMEND" это значимое поле с жестко заданным значением?
 В параметр "Примечание" помещается код клиента и комментарий к заявке, разделенные слэшем (либо двойным слэшем, в зависимости от настроек брокера).

 
Цитата
В поле цена "Цена"  в качестве десятичного разделителя точка?
 Верно.

 
Цитата
Значение поля "К/П" в случае продажи "Продажа"?
 Верно.

 
Цитата
Как себя ведет эта транзакция в случае если исходная заявка была частично исполнена до изменения?
 Точного ответа у нас нет. Вы можете уточнить эту информацию у специалистов Московской биржи
Спасибо, с учетом вашего ответа, стоит ли заморачиваться с реализацией или более надежно отменить старую и поставить новую заявку?
Что-то никак не удается мне победить эту команду.
Посмотрите пожалуйста.
Вот как у меня формируется транзакция:
sell_transaction = {  # Все значения должны передаваться в виде строк
'TRANS_ID': str(sell_order_id),  # Номер транзакции задается клиентом
'CLIENT_CODE': '62665',  # Код клиента. Для фьючерсов его нет
'ACCOUNT': 'L01-00000F00',  # Счет
'ACTION': 'NEW_ORDER',  # Тип заявки: Новая лимитная/рыночная заявка
'CLASSCODE': class_code,  # Код площадки
'SECCODE': symbol,  # Код тикера
'OPERATION': 'S',  # B = покупка, S = продажа
'PRICE': str(sell_order_lmtPrice),  # Цена исполнения. Для рыночных фьючерсных заявок наихудшая цена в зависимости от направления. Для остальных рыночных заявок цена = 0
'QUANTITY': str(int(order_size / lot_size)),  # Кол-во в лотах
'TYPE': 'L'}#,  # L = лимитная заявка (по умолчанию), M = рыночная заявка

Что тут необходимо передать, чтобы изменить заявку?
Я пробовал все из того, что вы писали выше, поля на русском, ничего не получается, мне возвращается моя строка.
Уникальный номер заявки
 
Просто не нравится этот вариант, тк есть уникальный trans_id, зачем еще один индекс городить. Пока попробовал переделать все на обработку по trans_id, но остается открытым вопрос как быть если система не вернула order_num за разумное время. Пока что приходится такую заявку "забыть" и идти дальше.
Уникальный номер заявки
 
это конечно вариант, но мне он не нравится отсутствием изящества, громоздкостью что ли. Кроме того, как справедливо раньше вы подметили, при работе с питоном приходится экономить операции.
На эту проблему накладывается возможное отсутствие trans_id в сообщениях, который я поддерживаю уникальным на своей стороне. Городить два индекса совсем не хотелось.
И что делать, если order_num не приходит? Ждать? Сколько? получается заявка в неопределенном статусе может находиться неопределенное время.
Уникальный номер заявки
 
Уникальность номеров заявок order_num поддерживается только внутри одного торгового дня. Также как и trade_num для сделок.
Получается при использовании этих параметров в качестве индекса может возникнуть ситуация, что записи имеющиеся совпадут по индексу с новыми заявками и сделками дня, что может привести к труднопредсказуемым последствиям.
Использовать trans_id  в качестве уникального индекса тоже ненадежный способ, т.к. логика его передачи в сообщениях нестабильна. Также например случаются существенные задержки с поступлением OnTransReply и тогда невозможно отменить заявку, т.к. для этого необходим order_num, которого у нас еще может не быть.
Кто как решает эту проблему?
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex,

Цитата
Здесь "Заявка" это order_num?
"Заявка" - номер исходной заявки, параметры которой необходимо изменить.

Цитата
"Примечание"   "W1//ORDER_AMEND" это значимое поле с жестко заданным значением?
В параметр "Примечание" помещается код клиента и комментарий к заявке, разделенные слэшем (либо двойным слэшем, в зависимости от настроек брокера).

Цитата
В поле цена "Цена"  в качестве десятичного разделителя точка?
Верно.

Цитата
Значение поля "К/П" в случае продажи "Продажа"?
Верно.

Цитата
Как себя ведет эта транзакция в случае если исходная заявка была частично исполнена до изменения?
Точного ответа у нас нет. Вы можете уточнить эту информацию у специалистов Московской биржи
Спасибо, с учетом вашего ответа, стоит ли заморачиваться с реализацией или более надежно отменить старую и поставить новую заявку?
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
bespalex, добрый день.

К сожалению, для транзакции "Изменение заявки" описание в фиксированном формате не предусмотрено.
Рекомендуем использовать описание параметров в универсальном формате, пример которого приведен выше.
Здесь "Заявка" это order_num?
"Примечание"   "W1//ORDER_AMEND" это значимое поле с жестко заданным значением?
В поле цена "Цена"  в качестве десятичного разделителя точка?
Значение поля "К/П" в случае продажи "Продажа"?
Как себя ведет эта транзакция в случае если исходная заявка была частично исполнена до изменения?
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
ildarskii, добрый день.

Если правильно понимаем, Вам необходим код для отправки транзакции "Изменение заявки" с помощью QLua, приведем пример такого кода:

Код
  t  =  {}

t[ "TRANS_ID" ]  =   "1" 
t[ "CLASSCODE" ]  =   "TQBR" 
t[ "ACTION" ]  =   "Изменение заявки" 
t[ "Заявка" ]  =   "42342749362"   --номер исходной заявки 
t[ "Торговый счет" ]  =   "L01+00000F00" 
t[ "К/П" ]  =   "Купля" 
t[ "Инструмент" ]  =   "FIVE" 
t[ "Цена" ]  =   "2155" 
t[ "Лоты" ]  =   "2" 
t[ "Примечание" ]  =   "W1//ORDER_AMEND" 
t[ "Снять исходную заявку" ]  =   "Нет" 

result  =   sendTransaction (t)
  

Также Вы можете ознакомиться с более подробной информацией о данной транзакции и ее параметрах в материалах Московской биржи:  http://ftp.moex.com/pub/ClientsAPI/ASTS/docs/ORDER_AMEND_Russian.pdf .
Антон, пожалуйста, можете все-таки помочь разобраться, как отправить транзакцию на изменение заявки в английских терминах?
Почему trans_id приходит 0?
 
Сорри, не только по отмене, но и по исполнению тоже.
На самом деле, может прийти несколько сообщений, в некоторых будет 0, а в некоторых корректное значение.
Почему trans_id приходит 0?
 
Обратил внимание, что по отмене заявки приходит trans_id=0.
Это либо баг, либо недосмотр, т.к. нарушает логику сквозной нумерации. Почему 0?
Практически во всех остальных случаях trans_id приходит корректный.
Возможно это исправить?
Ограничения при использовании QuikSharp.lua
 
Цитата
nikolz написал:
Я выкладывал тесты.
Но с питоном не делал.
Он медленнее luajit примерно в 30 раз.
да уже увидел тесты
Ограничения при использовании QuikSharp.lua
 
Цитата
nikolz написал:
Цитата
bespalex написал:
   перебор тоже вариант  
Чаще всего отключение происходит ровно в 10:00:05. Не знаю, может какое-то технологическое переключение в начале сессии, которое триггерит выкидыш. Не думаю, что если бы дело было в core.dll оно бы так выглядело.
 Дело в том, что нет смысла передавать все данные из КВИК через луа в питон.
-------------
Моя концепция создания робота такая:
-----------
Робот условно содержит две части - я их назвал по аналогии с человеком - спинной и головной мозг.
Спинной - это все колбеки в КВИКЕ и все торговые операции в КВИКЕ.
Их нет смысла  перегонять в питон и обратно.
Это фактически автомат стандартных действий, которые не зависят никак от стратегии и тактики торговли.
Эту часть я реализую в КВИКЕ на луа + си for lua.
------------------
Головной мозг -  это прогнозы, управление капиталом, стратегии торговли можно и нужно реализовывать
в дополнительных потоках и приложениях  на любых языках, в том числе и питоне.
---------------------  
Вот для этого организую  взаимодействие КВИКа через Луа с python, rust,julia, terra, luajit и т д
================  
Сейчас обмен любыми данными делаю через mapping files.
Скорость обмена просто аховая, так как это обмен через память .
Нет никаких оберток. Поддерживаются все форматы.
Строки передаю как хеш.  Это фактически два целых числа.
Объем данных ограничен лишь объемом дисков.
----------------------  
Хочу сделать формирования запроса произвольных данных от сторонних приложений.
===========
И еще замечу, что если Вы исполняете скрипт для питона без jit либо трансляции в СИ,
то это раз в пять медленнее, чем на луа.
Спасибо, очень познавательно.
У меня задача немного проще сейчас: адаптировать существующего робота для работы с Quik. В принципе не сказать, что медленно, цикл проверок на триггер занимает около 50-150мс (вместе со всеми транзакциями). Для моих задач этого пока достаточно. В вашей системе какое время обработки получается?
Ограничения при использовании QuikSharp.lua
 
Цитата
nikolz написал:
Цитата
bespalex написал:
 
Цитата
nikolz  написал:
 
Цитата
 bespalex   написал:
QuikPy
  Если умеете программировать на луа и питон, то делаете обмен данными между приложением на питон и приложением на Луа. Либо ищите такой скрипт.
КВИК вообще при этом не требуется.
Потом скрипт луа для обмена запускаете в КВИК.
 Не очень понял, т.к. QuikPy это и делает. Он работает на питоне в связке с QuikSharp, который запущен в QUIK. Вот между ними связь и теряется периодически.  
В документации QuikPy написано:
------------------
Возможные ошибки  Если возникают ошибки, связанные с core.dll, то все варианты этой библиотеки выложены в проекте QUIKSharp
   Путем перебора подбираете подходящую для вас версию core.dll
 Если возникают ошибки при исполнении LUA скриптов, то, возможно, были обновления в QUIK или LUA. Последняя версия LUA скриптов находится  Они не учитывают мои специфические правки, но должны работать без ошибок с последней версией QUIK.
 Успешного перебора.
перебор тоже вариант  :lol:
Чаще всего отключение происходит ровно в 10:00:05. Не знаю, может какое-то технологическое переключение в начале сессии, которое триггерит выкидыш. Не думаю, что если бы дело было в core.dll оно бы так выглядело.
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
paluke написал:
TRANS_ID=1;CLASSCODE=TQBR;ACTION=Replace Order;Order=42342749362;Trading account=L01+00000F00;Direction=Buy;Board=TQBR;Security=FIVE;Price=2155;Lots=2;Broker reference=W1//ORDER_AMEND;Cancel origin order=No;
Спасибо, попробую :idea:  
Ограничения при использовании QuikSharp.lua
 
Цитата
nikolz написал:
Цитата
bespalex написал:
QuikPy
Если умеете программировать на луа и питон, то делаете обмен данными между приложением на питон и приложением на Луа. Либо ищите такой скрипт.
КВИК вообще при этом не требуется.
Потом скрипт луа для обмена запускаете в КВИК.
Не очень понял, т.к. QuikPy это и делает. Он работает на питоне в связке с QuikSharp, который запущен в QUIK. Вот между ними связь и теряется периодически.  
MOVE_ORDER на фондовом рынке мос.биржи?
 
Цитата
Anton Belonogov написал:
ildarskii, добрый день.

Если правильно понимаем, Вам необходим код для отправки транзакции "Изменение заявки" с помощью QLua, приведем пример такого кода:

Код
  t  =  {}

t[ "TRANS_ID" ]  =   "1" 
t[ "CLASSCODE" ]  =   "TQBR" 
t[ "ACTION" ]  =   "Изменение заявки" 
t[ "Заявка" ]  =   "42342749362"   --номер исходной заявки 
t[ "Торговый счет" ]  =   "L01+00000F00" 
t[ "К/П" ]  =   "Купля" 
t[ "Инструмент" ]  =   "FIVE" 
t[ "Цена" ]  =   "2155" 
t[ "Лоты" ]  =   "2" 
t[ "Примечание" ]  =   "W1//ORDER_AMEND" 
t[ "Снять исходную заявку" ]  =   "Нет" 

result  =   sendTransaction (t)
  

Также Вы можете ознакомиться с более подробной информацией о данной транзакции и ее параметрах в материалах Московской биржи:  http://ftp.moex.com/pub/ClientsAPI/ASTS/docs/ORDER_AMEND_Russian.pdf .
Не могли бы вы еще привести такой же пример кода для английских наименований полей и их значений?
Например, у меня используется 'ACTION': 'NEW_ORDER', а тут как будет для изменения?
Коды ощибок, error codes
 
Цитата
Anton Belonogov написал:
bespalex, добрый день.

У сообщений системы QUIK отсутствуют числовые коды.
Просим уточнить, каким образом получена строка "8635230 Вы не можете снять данную заявку"; если есть возможность, прикрепите скриншот данного сообщения в терминале.

Мы можем зарегистрировать пожелание на добавление числовых кодов для сообщений об ошибках, возвращаемых системой QUIK при выполнении транзакций.
Для этого просим Вас описать желаемую реализацию.
В качестве примера реализации могу привести IB API: https://interactivebrokers.github.io/tws-api/message_codes.html
То есть попросту удобно иметь исчерпывающий перечень сообщений об ошибках с кодами, их удобно обрабатывать. Тем более если необходимые поля в структуре данных имеются.
Коды ощибок, error codes
 
Цитата
Anton Belonogov написал:
bespalex, добрый день.

У сообщений системы QUIK отсутствуют числовые коды.
Просим уточнить, каким образом получена строка "8635230 Вы не можете снять данную заявку"; если есть возможность, прикрепите скриншот данного сообщения в терминале.

Мы можем зарегистрировать пожелание на добавление числовых кодов для сообщений об ошибках, возвращаемых системой QUIK при выполнении транзакций.
Для этого просим Вас описать желаемую реализацию.
Такой error_code приходит, например:
{'error_code': 8635230, 'flags': 2359297, 'trans_id': 12345, 'quantity': 0.0, 'brokerref': '', 'order_num': 0, 'class_code': 'TQBR', 'uid': 214786, 'status': 5, 'client_code': '62665', 'result_msg': 'Вы не можете снять данную заявку', 'server_trans_id': 260, 'gate_reply_time': {'day': 1, 'sec': 0, 'hour': 0, 'min': 0, 'week_day': 1, 'ms': 0, 'mcs': 0, 'month': 1, 'year': 1601}, 'price': 0.0, 'date_time': {'day': 28, 'sec': 53, 'hour': 20, 'min': 16, 'week_day': 4, 'ms': 960, 'mcs': 960393, 'month': 12, 'year': 2023}, 'sec_code': 'SBER', 'balance': 0.0, 'exchange_code': '', 'time': 201653, 'first_ordernum': 0, 'error_source': 2, 'account': '', 'firm_id': 'MC0058900000'}
Ограничения при использовании QuikSharp.lua
 
Цитата
nikolz написал:
А зачем Вам QuikSharp? Его делали когда в КВИКЕ не было VMLua. В ту поры был смысл.
Сейчас смысла нет, кроме непонятных затыков.
Или я не прав?
Я использую QuikPy для python, он коннектится к QuikSharp. Есть какие-то другие решения?
Ограничения при использовании QuikSharp.lua
 
Да, именно так, от QuikSharp отваливается, при этом сервер подключен.
Коды ощибок, error codes
 
То есть по сути на вашей стороне коды не используются, а только стандартизированные строковые сообщения типа "Превышен лимит по деньгам"?
А что за код тогда 8635230, он откуда берется? Или он всегда один и тот же с любыми ошибками?
Не очень понятно, почему не присвоить ошибкам коды, как-то строковые обрабатывать не очень элегантно.
Ограничения при использовании QuikSharp.lua
 
Случается так, что периодически отключается клиент от терминала Quik. Соединение с сервером при этом остается рабочим.
Подозреваю, что есть какие-то ограничения на количество передаваемых данных, после которого случается падение, тк явление наблюдается в периоды повышенной активности, например на открытии.
Кто-нибудь сталкивался? как это лечится?
Коды ощибок, error codes
 
Цитата
Anton Belonogov написал:
bespalex, добрый день.

Просим Вас уточнить, о каких именно ошибках идет речь.
Я постоянно вижу в сообщениях коды, например:
(210) Снято заявок: 1. Снято количество: 1. Нельзя снимать: 0.
(160) Заявка на покупку N 30534448 зарегистрирована.
ОШИБКА: (916) Заявка не может быть отменена. Указанная заявка уже не активна. Текущий статус заявки 'W'
также при разборе ответов:
8635230 Вы не можете снять данную заявку
и тп
Есть документация по всем кодам ошибок и структуре данных об ошибках?
Восстановление соединения QuikPy
 
Кто-нибудь пользуется QuikPy?
Подключение реализуется:
app = QuikPy()
В случае потери соединения на стороне Quik, он переходит в режим ожидания подключения клиента.
Как корректно восстановить соединение со стороны клиента?
При попытке пересоздания app=QuikPy() рушатся треды, т.к. не видят нового подключения.
Коды ощибок, error codes
 
Кто-нибудь знает какие существуют коды ошибок и формат данных сообщения об ошибке?
Разрыв соединения в фоновом режиме, Разрыв соединения в фоновом режиме
 
Цитата
major написал:
Цитата
nikolz написал:
 
Цитата
major  написал:
Коллеги, подскажите как бороться?
Если оставить работающего квика в фоновом режиме, не обращаясь к нему, но он разрывает соединение .
 отключите на компе режим сна
Помогло это решение?
Страницы: 1
Наверх