OnOrder

Страницы: 1
RSS
OnOrder, снятие заявки
 
Скрипт отправляет транзакцию на снятие заявки.
Допустим, OnOrder получен раньше или OnTransReply вообще не пришел.
Есть возможность установить инициатора снятия: сам скрипт, пользователь (вручную) или, может, другой бот?
Надо делать так, как надо. А как не надо - делать не надо.
 
Вся информация есть в ontransreply.

если этот колбек к вам не пришел, значит, нужно исправлять аппаратную часть.

если у машины нет колеса, бесполезно искать кнопку в салоне, которая бы позволила ехать.  
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
если этот колбек к вам не пришел, значит, нужно исправлять аппаратную часть.
По секрету: проблема может быть не на стороне клиента, чью аппаратную часть будете исправлять?  :wink:
Надо делать так, как надо. А как не надо - делать не надо.
 
В любом случае мерами программного свойства эти проблемы не решаются. Их нужно решать другими способами - административными или какими-то еще.

Однако есть большие сомнения, что вы получаете от сервера валидную информацию во всем, кроме одного колбека. В этом случае проблема гарантированно не аппаратная или сетевая, а проблема вашего ПО.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Старатель написал:
Скрипт отправляет транзакцию на снятие заявки.
Допустим, OnOrder получен раньше или OnTransReply вообще не пришел.
Есть возможность установить инициатора снятия: сам скрипт, пользователь (вручную) или, может, другой бот?
если скрипт отправил заявку, то он знает это
если заявку сняли но он не отправлял то тоже знает.
кому надо устанавливать инициатора?
 
и главное зачем скрипту знать, что сняли по заявке пользователя или другого бота?
------------------------------
какой любопытный скрипт вы написали.
 
Цитата
Николай Камынин написал:
и главное зачем скрипту знать
Так и знал, что кто-нибудь из зевак будет задавать кучу вопросов.  :smile:
Ну, например, для реализации функции для фондовой и валютной секций, аналогичной "MOVE_ORDERS" на срочке.
Заявку может снять пользователь, но скрипт не сразу об этом узнает, особенно, когда биржа тормозит, и колбеки приходят с задержкой в несколько секунд.
OnTransReply - один из колбеков, доставка которого не гарантируется, ну так сложилось.
Рассуждения "кто, зачем и почему" не интересуют.

Интересует ответ на вопрос в первом сообщении темы с учётом особенностей архитектуры ИТС QUIK.
Надо делать так, как надо. А как не надо - делать не надо.
 
Вопрос можно поставить так:
Можно ли из Lua-скрипта определить, что заявка снята по транзакции этого скрипта, если OnTransReply не получен?
Надо делать так, как надо. А как не надо - делать не надо.
 
Добрый день.

На структуре заявки есть поле canceled_uid, это UID пользователя снявшего заявку. Если пользователь снимает заявку руками, то скрипт не получит OnTransReply, он получит только OnOrder, и тогда:

- если поля на заявке uid и canceled_uid заполнены и не равны, то заявку выставил один пользователь, а снял другим;

- если uid и canceled_uid равны, то заявку выставил и снял один и тот же пользователь;

- если canceled_uid пустой (равен 0), то значит заявка снята, например, биржей или же до сервера Quik не доехал трансреплай о снятии заявки;

 
uid и canceled_uid будут равны при выставлении/снятии заявки от имени одного логина как пользователем так и скриптом.
Увы, но при отсутствии OnTransReply это не поможет.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Старатель написал:
Допустим, OnOrder получен раньше или OnTransReply вообще не пришел.
Есть возможность установить инициатора снятия: сам скрипт, пользователь (вручную) или, может, другой бот?
Такой возможности нет.
OnOrder - это сигнал с биржи "параметры заявки изменились". Просто параметры, просто некоей заявки (ну или возникла новая заявка). Никакой привязки к транзакции (т.е. источнику возникновения этой заявки) - нет. И не может быть.
Так что надо перепридумывать логику робота так, чтобы такая информация не требовалась.
Используйте пользовательский комментарий для различения заявок от разных роботов или ручного ввода, по нему разделяйте OnOrder, например.
Страницы: 1
Читают тему
Наверх