Вадим Никитин (Все сообщения пользователя)

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

Страницы: 1
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Владимир,

Я имел ввиду случай, когда торги по инструменту уже открылись, а сделок ещё нету.
И цены спроса и предложения стоят на месте. Тогда ваш способ не подойдёт, потому что ничего не изменяется, хотя торговать уже можно.

А вы какие цены анализируете для определения торгуемости инструмента?
Цену последней сделки или цены спроса и предложения?
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Цитата
nikolz написал:
Забыл сказать.
Способ High~=Low надо использовать не для торгуемого Вами инструмента, а для ликвидного, например , используйте это правило для сбербанка как индикатор, что торги идут.  

Такой способ подойдёт, чтобы определить, что торги в принципе начались, например после клиринга.

Но не подойдёт, чтобы определить, что торги идут по конкретному инструменту.

Kolossi, Nikolay,

Безусловно. К тому же, скорее всего, значения этих параметров могут быть разные у разных брокеров.
И нет никаких гарантий, что они когда-нибудь не поменяются.
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
airat,

На 100% надёжно этого не узнать никак.
В любом случае из-за задержек сети и ещё чего там, любой параметр будет обновляться позже, чем происходит событие на сервере.

То как определять отстанов и возобновление торгов зависит от вашей стратегии и когда вы хотите получить эти данные - сразу или допустима задержка.

Если можно с задержкой.

Делайте как советует Владимир, так можно точно определить, что торги идут.
Хотя бывает например фьючерс на Транснефть.
Низколиквидный, сделок по нему за день с десяток набирается, и по ним трудно определить, что торги идут.
Но на долгосроке он может давать приличный доход. Так что для таких инструментов нужен другой подход.

Можно делать и как nikolz советует, но сделки могут какое-то время идти по одной и той же цене, тогда цены Open, High, Low, Close все будут одинаковые.
Если надо сразу, то не годится. Хотя, если торги идут, то на ликвидном инструменте значения быстро поменяются.

Если надо сразу.

Ну, насколько это возможно:)

Это можно определять по параметрам ТТТ.
Одного TRADINGSTATUS - состояние сессии недостаточно. Он может показывать 1, когда торги не идут.
Как пример, в прошом году была приостановка торгов на валютном рынке из-за сбоя биржи.
В итоге по валюте этот параметр транслировался со значением 1, но статус торгов был приостановлено.
Поэтому можно проверять ещё параметры STATUS - статус торговли инструментом и TRADINGPHASE - статус биржевой сессии.

По значениям могу сказать только для срочного рынка: STATUS = 1, TRADINGSTATUS = 1, TRADINGPHASE = 2.
На остальных рынках могут быть другие значения, или может их вовсе не быть, например на акциях нет TRADINGPHASE.

Так что решайте сами, что вам конкретно нужно.
move_orders, move_orders
 
Цитата
krabykraby написал:
Благодарю
Вопросик еще: А через Mode 2, можно одну заявку переставлять?
Пользовался только MODE 0, так что тут не помогу.
Здесь только пробовать самому.
Скорее всего можно, но лучше проверить.
На каком-нибудь не очень ликвидном инструменте.
getParamEx
 
Nikolay, Владимир,

Согласен, самый простой и надёжный способ - держать тикеры списком. Они так редко меняются, что обновлять список не проблема.

Nikolay,

Действительно, проверил, довольно много таких, у которых не совпадает.
getParamEx
 
Цитата
Владимир написал:
Вадим Никитин, А в чём здесь Profit? Мне доводилось торговать одновременно фьючерсами и соответствующими акциями, но они всегда торговались независимо друг от друга, как совершенно разные тикеры. Так намного проще и, на мой взгляд, даже эффективнее. Даже фьючерсы на один и тот же инструмент, но с разным временем экспирации иногда торгуются одновременно: один потихоньку сворачивает свою деятельность, а второй "принимает эстафету" - даже они ничего не знают друг о друге. Зачем это всё?
Да это другой Profit:)

Просто идиома, или мем в сетевом общении. Значит, что достиг цели. Таких примеров много в Интернете.

Типа, например, у человека есть цель получить все фьючерсы на акции.
Описываешь список действий, чтобы этой цели достигнуть, а последним пунктом пишешь Profit - цель достигнута.

Это как OK - значит хорошо.

А зачем это всё, тут уж только топикстартер в курсе:)
getParamEx
 
Цитата
Alexander написал:
Подскажите кто знает если. С помощью getParamEx есть ли параметры в ТТТ такие, чтобы отсортировать фьючерсы на акции от остальных фьючерсов. В квике по названию вроде ничего не подходит. Или как-то такое сделать по другому. Т.е. я получаю: sec_list = getClassSecurities("SPBFUT") и потом мне из всей этой кучи надо выделить только фьючерсы на акции. По класскоду у всех "SPBFUT", что у индексных, что у товарных, что у акционных. Пока вижу только вариант через string.gmatch и шаблон, но тогда для каждого варианта(смотрим на мосбирже все фьючи на акции) надо указать шаблон. Так пока делаю, но это длинно, для каждой акции свой шаблон. И спиок на бирже могут поменять и придётся менять код. Типа бы какого-нибудь не только класскоде, а ещё бы и подкласса иметь на фьючерсы на акции.
1) Получаете список всех фьючерсов из класса SPBFUT
2) Получаете список всех акций из класса TQBR
3) Проходитесь по всем нужным фьючерсам из пункта 1 (с требуемой датой исполнения и т.п.),
   доставая из их спецификации код базового актива. Можно например через getSecurityInfo или из ТТТ.
4) Проверяете есть ли такой код в списке кодов акций из пункта 2.
5) Если есть, значит этот фьючерс - фьючерс на акцию.
6) Profit...
move_orders, move_orders
 
Цитата
krabykraby написал:
1)move_order можно ли переставить ТОЛЬКО 1 ОРДЕР? всего 1 ордер от меня и именно один этот ордер переставить? подскажите как если это возможно.продажа по 100 2ух лотов, переставил на 101 1 лот.
Допустим отправили такую заявку, и она встала в стакан:
Код
local new_order = {
   TRANS_ID  = 10,
   CLASSCODE = "SPBFUT",
   SECCODE   = "****",
   ACCOUNT   = "***********",
   ACTION    = "NEW_ORDER",
   TYPE      = "L",
   OPERATION = "S",
   PRICE     = "100",
   QUANTITY  = "2",
}
Теперь переставляем, order_num - номер выставленной в стакане заявки:
Код
local move_order = {
   TRANS_ID               = 20,
   CLASSCODE              = "SPBFUT",
   SECCODE                = "****",
   ACCOUNT                = "***********",
   ACTION                 = "MOVE_ORDERS",
   MODE                   = "1",
   FIRST_ORDER_NUMBER     = tostring(order_num),
   FIRST_ORDER_NEW_PRICE  = "101",
   FIRST_ORDER_NEW_QUANTITY = "1"
}

Цитата
krabykraby написал:
2)я отправил move_orders. как только брокер получит мою транзакцию - он переставит в эту же миллисекунду или через ~150мс реакции? те это заявка предусмотрена БИРЖЕЙ или это некая "алго" заявка на стороне сервера quik?
MOVE_ORDERS реализована на стороне биржи как единая атомарная операция, соответственно она сразу идёт от брокера на биржу.
Перестановка исполняется полностью, или не испоняется вообще.

Пруфы:

пункт 5.4 в https://ftp.moex.com/pub/ClientsAPI/Spectra/CGate/prod/docs/p2gate_ru.pdf

Цитата
krabykraby написал:
3)поведение move_order при изначальной заявке Book-Or-Cancel
Если переставляется Book-Or-Cancel заявка, то флаг passive_only_order сохраняется, это значит, что, если при перестановке заявка может исполниться, то такая перестановка будет отклонена без снятия заменяемой заявки.
Повторюсь - перестановка исполняется полностью, или не испоняется вообще.

Ещё одна важная вещь.

Иногда биржа не может снять или переместить заявку по одной ей известной причине.
QUIK в таком случае присылает сообщение что-то вроде "Невозможно снять/переместить заявку *******************. Попробуйте позже".

Так что эту проблему вам тоже нужно будет решать.

А вообще вот хороший совет:)
Цитата
Владимир написал:
krabykraby, Да не занимайтесь Вы фигнёй с перестановкой ордеов! Снять старую заявку и поставить новую ТЫСЯЧЕКРАТНО проще. Тем более, что нет никакой гарантии, что на момент перестановки старая заявка не успеет исполниться - полностью или частично. И ловля микросекунд в Квике тоже называется "онанизм" - здесь время измеряется в секундах, иногда даже в десятках секунд или в минутах. А работа через GetParamEx АДНАЗНАЧНА проще, надёжнее и быстрее, чем всё остальное.
К тому же для Book-Or-Cancel это вообще единственный вариант.
Пассивная заявка в sendTransaction(), Как правильно заполнить
 
Karina Dmitrieva,

Поддерживаю BlaZed, очень полезная функциональность, которая бы сделала формат заявок более полным.

Тем более, раз уж можно написать order["EXECUTION_CONDITION"] = "PUT_IN_QUEUE", то можно сделать чтобы можно было написать и order["EXECUTION_CONDITION"] = "BOOK_OR_CANCEL".
Всего одну константу добавить:)
Пассивная заявка в sendTransaction(), Как правильно заполнить
 
Внимательнее пожалуйста:)

Не "EXECUTION_CONDITION", а "Execution condition". Пробел.

У разных брокеров могут быть разные названия параметров.
Также возможно влияет регистр.

Попробуйте транзакции точно как в моих примерах, если не сработает, то тогда делайте через карман транзакций и экспорт в .tri файл.
Это точно должно сработать.
Пассивная заявка в sendTransaction(), Как правильно заполнить
 
Верно, следует использовать универсальный формат транзакций.

Он зависит от того какой язык интерфейса выставлен в QUIK, а так же возможно и от версии QUIK и брокера.

Примеры:

для русского языка
Код
local order = {}
order["TRANS_ID"]           = "1"
order["CLASSCODE"]          = "SPBFUT"
order["ACTION"]             = "Ввод заявки"
order["Торговый счет"]      = ************
order["К/П"]                = "Покупка"
order["Тип"]                = "Лимитированная"
order["Класс"]              = "SPBFUT"
order["Инструмент"]         = "SiM3"
order["Цена"]               = "60000"
order["Количество"]         = "1"
order["Условие исполнения"] = "Только пассивная"
для английского языка
Код
local order = {}
order["TRANS_ID"]            = "1"
order["CLASSCODE"]           = "SPBFUT"
order["ACTION"]              = "Order entry"
order["Trading account"]     = ************
order["Buy/Sell"]            = "Buy"
order["Type"]                = "Limit"
order["Class"]               = "SPBFUT"
order["Security"]            = "SiM3"
order["Price"]               = "60000"
order["Quantity"]            = "1"
order["Execution condition"] = "Book or cancel"
Можете попробовать.

И ещё, на всякий случай отмечу, что у такой заявки будет выставлен флаг passive_only_order, который сохраняется при любых дальнейших операциях с ней.
Поэтому, например последующая перестановка заявки на цену, которая возможно приведёт к её немедленному исполнению будет отклонена.
В общем, при любых действиях пассивную заявку следует считать пассивной заявкой:)
Не снимаются заявки в секции FORTS
 
Andrey Perchits,

На всякий случай отмечу, что иногда биржа не может снять/заменить даже реально существующую заявку и присылает сообщение "Невозможно снять/заменить заявку XXX. Попробуйте позже".

При этом номера заявок верные и торги по инструменту идут.

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

Там 1 ГБ не в секунду а в час:)
Выгрузка библиотек
 
Alexander,

Цитата
Перезапуск как таковой не сложен. А вот время он занимает прилично, и это утомляет.
Полностью согласен, долго запускается. Запуск MS VS и загрузка проекта в неё и то быстрее происходят:)

Это странно, ведь грузится-то он даже ещё не скачивая данные с сервера, да и вообще не подключаясь к нему. Он походу парсит все сохранённые данные по всем инструментам во всех таблицах в одном главном потоке, хотя это и не обязательно для старта.

Цитата
Я даже простую DLL, фактически пустую загружаю и скрипт с одной функцией вызова из неё и то же самое.
Вот это тоже странно, если библиотека, которую вы приводили здесь не выгружается указанными способами, то что-то явно не так. Она же вообще не создаёт никаких ресурсов, значит FreeLibrary должен её освободить. Попробуйте через Process Explorer от Руссиновича посмотреть, какие процессы её используют. Вроде он показывает кем захвачен файл. Может и более простой есть способ, но я давно в Windows не копался.

Цитата
10.0.1.18
Цитата
Lua 5.3.5
Как то в одной из версий QUIK 9 появилась регрессия, что даже такой скрипт
Код
function main()
    while true do
        sleep(1000)
    end
end
приводил к утечке памяти со скоростью около 1 ГБ в секунду. Потом исправили, вроде. Но я до сих пор на QUIK 8.13.1.16. Мало ли что:)

Так что это может быть одна из очередных регрессий. А раньше оно работало, возможно потому, что GC у Lua, просто успевал как-то сразу очищать таблицу модулей, вызывая FreeLibrary. Хотя это, скорее всего тоже случайность, ведь его поведение не очень детерминировано.

В десятке плагин Lua могли доработать так, что теперь это не происходит, а может ещё и файл остаётся где-то открытым. Но это домыслы. Нужна отладка того, что там происходит. Только говорят, что в десятке сделали защиту от отладки:)

Даже интересно стало, попробую как будет время покопаться а этой теме.
Выгрузка библиотек
 
nikolz, поддерживаю, очень хорошая книга.

Alexander, а какой версии вы используете QUIK и Lua к нему?
Выгрузка библиотек
 
Цитата
nikolz написал:
Цитата
Вадим Никитин написал:
И ещё.

Допустим, сделали библиотеку.
Запустили скрипт.
Библиотека создала потоки, выделила ресурсы, ещё там чего сделала.
Скрипт упал.
Всё это добро осталось висеть.
Как его удалить - никак.

<irony>Конечно, можно сохранить куда-то при создании хэндл каждого ресурса, а после специальной библиотекой вычищать всё это</irony>

Это к чему.
Смотрю тему уже месяц обсуждают.
Действительно ли перезапуск Квика так сложен, что стоит тратить на этот костыль столько времени? Тем более, что это будет крайне ненадёжное решение. Ведь по сути делается то, что не предусмотрено по дизайну, а это всегда ведёт к Undefined Behaviour. В итоге можно потратить ещё больше времени на отладку костыля, вместо того, чтобы разрабатывать торговую стратегию.

В револьвере шесть пуль, а ноги всего две:)
Вы немного неправильно рассказали взаимодействие процессов и DLL.
Но это не принципиально.
-----------------------------
Товарищи обсуждают эту тему потому , что учатся писать программы,
-------------------------------
Так как облаживаю DLL вне QUIK, то нет надобности выгружать dll из QUIK.
---------------------------------------
Поэтому написал эту функцию из спортивного интереса.
У меня на это ушло не более часа, чтобы уточнить некоторые моменты, разобраться и провести тесты,
------------------------------
Последний вариант не требует включение каких либо функций в выгружаемую библиотеку.
---------------------------
DLL занимает 39 Кбайт для обращения на C
и 44 Кбайта для обращения на Lua.

Да, конечно согласен. Возможно есть неточности. Память человека всё же подвижная материя:)

Учиться всегда полезно. Могу порекомендовать прочитать изучающим тему Windows:
  • Джеффри Рихтер, Кристоф Назар - Windows via C/C++. Программирование на языке Visual C++
  • Марк Руссинович et al. - Внутреннее устройство Windows
В них достаточно подробно описаны механизмы взаимодействия различных компонентов Windows.

Тоже не использую Квик для разработки, разрабатываю в Linux:)

Но как-то интересовался этой темой, пришёл к тому же варианту, что вы описали.
Также делал, чтобы можно было ликвидировать потоки, которые оставались в случае падежа скрипта.
Но для себя счёл всё это недостаточно надёжным поэтому решил, что проще перезапустить Квик в экстренном случае.
Выгрузка библиотек
 
И ещё.

Допустим, сделали библиотеку.
Запустили скрипт.
Библиотека создала потоки, выделила ресурсы, ещё там чего сделала.
Скрипт упал.
Всё это добро осталось висеть.
Как его удалить - никак.

<irony>Конечно, можно сохранить куда-то при создании хэндл каждого ресурса, а после специальной библиотекой вычищать всё это</irony>

Это к чему.
Смотрю тему уже месяц обсуждают.
Действительно ли перезапуск Квика так сложен, что стоит тратить на этот костыль столько времени? Тем более, что это будет крайне ненадёжное решение. Ведь по сути делается то, что не предусмотрено по дизайну, а это всегда ведёт к Undefined Behaviour. В итоге можно потратить ещё больше времени на отладку костыля, вместо того, чтобы разрабатывать торговую стратегию.

В револьвере шесть пуль, а ноги всего две:)
Выгрузка библиотек
 
Цитата
Здесь мне кажется не совсем верно написали.
Не то что бы неверно. Скорее неполно:)

Когда запускаете программу, а она юзает ДЛЛ, то ОС создаёт маппинг в памяти на файл этой ДЛЛ, файл становится защищённым от манипуляций.

После для каждого процесса, который эту самую ДЛЛ пользует, ОС делает отображение сегментов кода и констант, ну и ещё там чего надо, в адресное пространство этого процесса.

То бишь,
  • маппинг на файл в памяти - один для всех
  • код, константы, всё что не изменяется - общие для всех
  • данные, глобальные переменные, всё что изменяется - для каждого процесса свои
  • данные, глобальные переменные, всё что изменяется - для всех потоков в одном процессе общие
Там по сути два счётчика - общий для файла и ещё свой для каждого процесса.

Когда запускается процесс, увеличивается счётчик файла, а когда процесс завершается, то счётчик файла уменьшается. Когда этот счётчик обнуляется, то маппинг удаляется, и файл освобождается для всяких манипуляций.

Когда вы делаете LoadLibrary увеличивается счётчик процесса, а когда FreeLibrary уменьшается счётчик процесса. Когда этот счётчик обнуляется, то удаляется отображение в адресное пространство только этого процесса. Маппинг на файл остаётся в памяти. Но если это последний процесс, который использовал эту ДЛЛ, то тогда и маппинг из памяти тоже должен удалиться.

Так, что то, что вам советует nikolz, должно работать. Я некогда проводил такие тесты, и могу это подтвердить. По сути вы вызываете GetModuleHandle(имя библиотеки), он возвращает хэндл, а после передаёте этот хэндл во FreeLibrary. Если это единственный процесс, что использует библиотеку, то она должна освободиться.
Выгрузка библиотек
 
Цитата
Alexander написал:
Цитата
Вадим Никитин написал:
Безусловно, можно выгрузить библиотеку и принудительно. Для этого можно найти HANDLE библиотеки по её имени, что-то вроде GetModuleHandle и вызвать FreeLibrary с ним.
Есть такая функция, которая по имени выдаёт хэндл для библиотеки?

Да, есть.

GetModuleHandle

https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlea

Но здесь же указано, что плохо вызывать потом FreeLibrary.
Выгрузка библиотек
 
Когда вы загружаете библиотеку в Lua через require, или ещё каким-нибудь образом, то Lua вызывает LoadLibrary. ОС загружает библиотеку в адресное пространство процесса, то есть QUIK'а и захватывает файл библиотеки как используемый.

Эта библиотека представляет собой ресурс с подсчётом ссылок, то есть сколько бы раз вы не вызвали LoadLibrary, библиотека загрузится лишь единожды, при этом будет увеличиваться только счётчик ссылок.

Для того, чтобы выгрузить библиотеку, процесс, в адресном пространстве, которого она находится, должен вызвать FreeLibrary ровно столько раз, сколько раз она была загружена, уменьшая счётчик ссылок. Когда счётчик ссылок обнулится, то ОС выгрузит библиотеку и освободит файл.

То есть, библиотеку загруженную через require в скрипте Lua, адекватно может выгрузить только этот самый Lua, а точнее его сборщик мусора, в коде которого есть FreeLibrary, но сделать он это может как сразу после завершения скрипта, а может и через день:)

Безусловно, можно выгрузить библиотеку и принудительно. Для этого можно найти HANDLE библиотеки по её имени, что-то вроде GetModuleHandle и вызвать FreeLibrary с ним.

Но так делать не следует:)

Как уже упомянуто, библиотека в адресном пространстве процесса присутствует в единственном экземпляре. То есть, если несколько скриптов используют одну библиотеку и запускаются из одного процесса QUIK, то все они будут использовать одну и ту же копию библиотеки.

Это может привести к весьма занятным эффектам. Пусть в библиотеке имеется глобальная переменная. В этом случае все скрипты будут иметь доступ к этой переменной, и для всех она будет одна и та же. Если один скрипт изменит её, то все остальные увидят эти изменения. Здесь сразу возникают проблемы с многопоточностью и разделяемым владением ресурсами.

И теперь самое главное, вы хотите выгрузить эту библиотеку откуда-то. Но ведь её могут использовать другие скрипты. Что ведёт к последствиям.

В общем, создавать и освобождать ресурс должен один и тот же субъект.

Подход предложенный Kalmar, может вам очень помочь. Подобная обёртка даст возможность не париться с тем, кто чего загружает-выгружает, а при желании, позволит управлять несколькими библиотеками.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Брокер ответил. Всё оказалось до банального просто.
Когда я ещё тестировал исполнение заявок, то на самом деле уже сталкивался с этой ошибкой. И забыл:)
Меня ещё тогда поразил неадекватный перевод сообщения.
Вспомнил, когда брокер ответил.

Итак,

Order depth should be positive означает Количество в заявке должно быть положительно.

Хорошо, что она произошла, помогла найти серьёзный баг в коде:)

Ещё немного полезной информации.

QUIK с английским интерфейсом на все ошибки, у которых один статус транзакции выдаёт одинаковое сообщение.

Например:

срабатывает коллбек OnTransReply(trans_reply) с trans_reply.status = 4

русский QUIK может вывести (формулировки могут слегка отличаться):
  • Сейчас эта сессия не идёт
  • Не удалось свести FOK заявку
  • Заявка book-or-cancel не выставлена, так как это привело бы к её немедленному исполнению
  • ...
английский же на все эти ошибки выведет:
  • Transaction checking failed
При этом все имеющиеся поля у trans_reply будут одинаковые.

Таким образом, отличить данные ошибки в английской версии QUIK можно только эвристически:)

Всем спасибо за уделённое время.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
nikolz,

И в коллбеке и в окне сообщения.

Я думаю смысла нет гадать, лучше дождаться, что ответит брокер. Мой обычно отвечает:)

Как будет ответ, напишу здесь. Вдруг ещё кому-то понадобится.
Правда всё же хорошо бы знать как оно по-русски, но не факт что разработчики прочитают и ответят:)
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Нет:)

В первом абзаце указано: лимитка на продажу 10 штук CNY-6.23 по цене 11.567.

Вы предположили:
Цитата
Kalmar написал:
Цитата
Вадим Никитин написал:
"Order depth should be positive".
В русском языке есть ошибка "цена заявки должна быть положительна".
Не совсем бьется с depth )) но может это оно?
Цена 11.567 очевидно положительна.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Цитата
Kalmar написал:
Цитата
Вадим Никитин написал:
"Order depth should be positive".
В русском языке есть ошибка "цена заявки должна быть положительна".
Не совсем бьется с depth )) но может это оно?
Первый абзац :)
Цитата
Вадим Никитин написал:
Была отправлена обыкновенная лимитная транзакция на продажу 10 лотов фьючерса CNY-6.23 по цене 11.567 - лучшей на момент выставления заявки. В ответ на транзанкцию терминал выдал указанное сообщение.

Меня просто интересует, что оно означает на самом деле?

Поскольку прямой перевод "Глубина заявки должна быть положительной" выглядит бессмыслицей.
Что за термин "глубина заявки"?

Поэтому и обращаюсь к разработчикам, чтобы узнать смысл сего сообщения.

Словить эту ошибку трудно, так как за 4 года и тысячи заявок, это первая такая.

Попробую ещё у брокера спросить. У него должна быть более подробная информация о произошедшем.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Если нужна какая-то ещё информация, то могу попробовать предоставить, если это будет возможно. Но судя по всему на форуме такой ошибки ещё не было.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Была отправлена обыкновенная лимитная транзакция на продажу 10 лотов фьючерса CNY-6.23 по цене 11.567 - лучшей на момент выставления заявки. В ответ на транзанкцию терминал выдал указанное сообщение.

Меня просто интересует, что оно означает на самом деле?

Поскольку прямой перевод "Глубина заявки должна быть положительной" выглядит бессмыслицей.
Что за термин "глубина заявки"?

Поэтому и обращаюсь к разработчикам, чтобы узнать смысл сего сообщения.
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Если перевести ошибку, то да, смысл может быть такой.

Но цена была равна лучшей заявке на продажу, и встречные завки в стакане присутствовали.

И как можно выставить заявку вне очереди, тем более по одному из самых ликвидных фьючерсов CNY-6.23?

Возможно глюк системы, но хотелось бы всё-таки уточнить у разработчиков в чём смысл данного сообщения и в каких случаях QUIK может его выдавать, потому как в английском интерфейсе он выдаёт одни и те же сообщения на разные ошибки транзакций?
Ошибка "Order depth should be positive", Ошибка "Order depth should be positive"
 
Здравствуйте.

Сегодня система QUIK на отправленную транзакцию выдала ошибку "Order depth should be positive".
Все предыдущие транзакции с такими же параметрами успешно исполнялись.
Язык QUIK - английский.

Подскажите пожалуйста, что значит данная ошибка?
Страницы: 1
Наверх