Интерпретатор языка Lua.pdf, стр.33, 3.11 Функции для работы с заявками. читаем: STRING result sendTransaction(TABLE transaction) В качестве параметра принимает таблицу, в которой имена и значения полей соответствуют параметрам tri-файла (см. Руководство пользователя QUIK, Раздел 6 «Совместная работа с другими приложениями», п. 6.11.3). Там этот пункт отсутствует. Догадываемся, что следует читать п. 6.9.3. ACCOUNT Номер счета Трейдера. Параметр обязателен при «ACTION» = «KILL_ALL_FUTURES_ORDERS». В самом деле, при сделках купли-продажи в этом параметре может быть все, что угодно, его может и не быть вовсе. Но возник теоретический (т.к. на практике нет субсчетов) вопрос: как делать заявки при наличии нескольких субсчетов ФОРТС на одном QUIK?
XXM написал: Там этот пункт отсутствует. Догадываемся, что следует читать п. 6.9.3.
Проблема изучается. Постараемся в ближайшее время дать ответ.
Цитата
XXM написал: В самом деле, при сделках купли-продажи в этом параметре может быть все, что угодно, его может и не быть вовсе.
Уточните пожалуйста, почему Вы так решили? В случае отсутствия параметра ACCOUNT при отправке транзакции на выставление заявки (на покупку/продажу), либо указания в нем "чего угодно", функция sendTransaction вернет следующие сообщения об ошибке:
1) Не указали параметр 2) Указали неверный счет
Цитата
XXM написал: Но возник теоретический (т.к. на практике нет субсчетов) вопрос: как делать заявки при наличии нескольких субсчетов ФОРТС на одном QUIK?
XXM написал: заявка без ошибок регистрируется при account = 'blablabla'.Вроде так быть не должно?
Пришлите, пожалуйста, снимки экрана с сообщением об успешно выставленной заявке и таблицей заявок, в которой данную заявку видно (в частности, поле "Счет"). Будем разбираться.
Что касается опечатки ранее описанных опечаток в документации, документация будет исправлена в одной из очередных версий ПО. Приносим извинения за причиненные неудобства.
1. скриншот. Отчетливо видно, что в заявке account = blablabla OnTransReply подтверждает указанный account. Но вот OnOrder и OnTrade молча игнорируют команду трейдера и делают то, что делают: меняют account на тот, который считают нужным! Это ли не удивительно?
Прошу прощения, в прошлый раз дал не совсем полный ответ. В том, и только в том, случае, если Вам (как UID) выданы права на 1 счет срочного рынка (именно так и есть на нашем учебном сервере), то он будет автоматически подставляться при попытке выставить заявку по срочному рынку, если указать счет фондового рынка. В ином случае, Вы получите сообщение вида "Указанный счет депо не найден: "blablabla".
Исходя из этого:
Цитата
XXM написал: 1. если вместо account = 'SPBFUT001ad' написать account = 'blablabla', мы увидим сообщение: Ошибка: Указанный счет депо не найден: "blablabla", OpenLong, SiH1, B, 1, price=74260.0
Корректно
Цитата
XXM написал: 2. если вместо account = 'SPBFUT001ad' написать account = nil, мы увидим сообщение: Ошибка: Не указано значение поля "Торговый счет", OpenLong, SiH1, B, 1, price=74253.0
Корректно
Цитата
XXM написал: 3. если вместо account = 'SPBFUT001ad' написать account = 'NL0011100043', мы увидим сообщения: Заявка 1892954054859215491 успешно зарегистрирована. ...account = SPBFUT001ad
Тоже корректно (при условии, что Вам доступны права лишь на 1 счет срочного рынка).
Evgeniy Karnaukhov, версию обновил. Руководство пользователя поправили, увидел. Теперь понимаю, что при одном счете ФОРТС в UID в сделках при ошибке в заявке account = 'blablabla' QUIK автоматически подставляет значение account этого счета и заявка идет на исполнение. Хотя считаю, что ответ "Ошибка: Указанный счет депо не найден" был правильным.
Evgeniy Karnaukhov написал: XXM, добрый день. Описанная в данном инциденте ошибка была исправлена в версии 8.12.0 терминала QUIK. Рекомендуем вам обновить версию программы. Приносим извинения за причиненные неудобства.
Вы поторопились с отчетом и извинениями:
Уточню свой предыдущий ответ: Теперь понимаю, что при одном счете ФОРТС в UID в сделках при ошибке в заявке account = 'blablabla' QUIK автоматически подставляет значение account этого счета и заявка идет на исполнение. Хотя считаю, что ответ "Ошибка: Указанный счет депо не найден" был бы правильным.
XXM написал: Вы поторопились с отчетом и извинениями:
Да, действительно наблюдаем опечатку, естественно, должно быть написано "6.10.23". Данную ситуацию разбираем, документацию исправим в одной из очередных версий ПО.
Цитата
XXM написал: Теперь понимаю, что при одном счете ФОРТС в UID в сделках при ошибке в заявке account = 'blablabla' QUIK автоматически подставляет значение account этого счета и заявка идет на исполнение.Хотя считаю, что ответ "Ошибка: Указанный счет депо не найден" был бы правильным.
Давайте уточним. Инцидент регистрировался на тему опечатки в документации, которые Вы привели в первых сообщениях. По поводу ответа на правильный/неправильный ввод данных в "account" Вам было отвечено ранее в #8, что все ответы корректны. Ответ "Ошибка: Указанный счет депо не найден" уже возвращается, если Вы в "account" вводите некорректное название счета. Уточните, пожалуйста, что Вы имели в виду, возможно могли не совсем правильно Вас понять.
Evgeniy Karnaukhov написал: Да, действительно наблюдаем опечатку, естественно, должно быть написано "6.10.23". Данную ситуацию разбираем, документацию исправим в одной из очередных версий ПО.
Ясно.
2.
Цитата
Evgeniy Karnaukhov написал: Давайте уточним. Инцидент регистрировался на тему опечатки в документации, которые Вы привели в первых сообщениях. По поводу ответа на правильный/неправильный ввод данных в "account" Вам было отвечено ранее в #8, что все ответы корректны. Ответ "Ошибка: Указанный счет депо не найден" уже возвращается, если Вы в "account" вводите некорректное название счета. Уточните, пожалуйста, что Вы имели в виду, возможно могли не совсем правильно Вас понять.
Тема опечатки меня волновала в 135-ю очередь, там я, как писал, уже догадался, ЧТО именно следут читать:
Цитата
XXM написал: "6.11.3 ... Там этот пункт отсутствует. Догадываемся, что следует читать п. 6.9.3."
3.
Цитата
Evgeniy Karnaukhov написал: По поводу ответа на правильный/неправильный ввод данных в "account" Вам было отвечено ранее в #8, что все ответы корректны. Ответ "Ошибка: Указанный счет депо не найден" уже возвращается, если Вы в "account" вводите некорректное название счета. Уточните, пожалуйста, что Вы имели в виду, возможно могли не совсем правильно Вас понять.
"было отвечено ранее в #8, что все ответы корректны" тоже читал, понял. Также прочитал, что " Ответ "Ошибка: Указанный счет депо не найден" уже возвращается, если Вы в "account" вводите некорректное название счета." Мое уточнение будет состоять в том, вышесказанное вами НЕВЕРНО в случае одного счета в рабочем QUIK. И в сообщении #6 привожу скриншот (Отчетливо видно, что в заявке account = blablabla OnTransReply подтверждает указанный account. Но вот OnOrder и OnTrade молча игнорируют команду трейдера и делают то, что делают: меняют account на тот, который считают нужным!). И сделка, поданная с "account = blablabla" проходит, как будто так и должно быть, и не важно, account <> blablabla! Считаю верным во всех случаях ошибочного указания параметра account возвращать ответ "Ошибка: Указанный счет депо не найден", а не будет "автоматически подставлять" счет срочного рынка.
Прошу прощения, в прошлый раз дал не совсем полный ответ. В том, и только в том, случае, если Вам (как UID) выданы права на 1 счет срочного рынка (именно так и есть на нашем учебном сервере), то он будет автоматически подставляться при попытке выставить заявку по срочному рынку, если указать счет фондового рынка. В ином случае, Вы получите сообщение вида "Указанный счет депо не найден: "blablabla".
А вот это уже не правильно., как было сказано выше. Указан не правильный счет, заявка не должна выставляться. Да-же при том если разрешение выдано только на один счет для фондового. Ситуации бывают разные. И не важно, нужно проверять условия посланной команды и если не соответствуют, выдавать причину ошибки. Без подставки/изменения счета. На крайний случай можно в описании ошибки написать, что у вас разрешение для торговли на этом рынке выдано на счет БЛАБЛАБЛА. Ну это было бы логичней.
Константин написал: ... Указан не правильный счет, заявка не должна выставляться...
Именно так! ---------------- Одна функция позволяет себе заменить счет в заявке на такой, как ему кажется, БОЛЕЕ правильный счет, а другой тогда можно будет и количество подправить?
Речь идет в ветке "Программирование на языке Lua". При подаче заявки руками через форму заявки мы не сможем ошибочно ввести аккаунт "blablabla" в поле "Торговый счет". Поэтому говорить "тоже самое происходит и при подаче заявки руками" не корректно.
XXM написал: Мое уточнение будет состоять в том, вышесказанное вами НЕВЕРНО в случае одного счета в рабочем QUIK.И в сообщении #6 привожу скриншот (Отчетливо видно, что в заявке account = blablablaOnTransReply подтверждает указанный account. Но вот OnOrder и OnTrade молча игнорируют команду трейдера и делают то, что делают: меняют account на тот, который считают нужным!). И сделка, поданная с "account = blablabla" проходит, как будто так и должно быть, и не важно, account <> blablabla!Считаю верным во всех случаях ошибочного указания параметра account возвращать ответ "Ошибка: Указанный счет депо не найден", а не будет "автоматически подставлять" счет срочного рынка.
В сообщении #6 Вы прислали скриншот, на котором ввод "blablabla" в account приводит к тому, что введенное значение игнорируется и подставляется счет срочного рынка. Далее, в сообщении #7 Вы привели:
Цитата
XXM написал: 1. если вместо account = 'SPBFUT001ad' написать account = 'blablabla', мы увидим сообщение:Ошибка: Указанный счет депо не найден: "blablabla", OpenLong, SiH1, B, 1, price=74260.0
Просьба уточнить, что подразумевалось под этим пунктом?
XXM написал: 1. если вместо account = 'SPBFUT001ad' написать account = 'blablabla', мы увидим сообщение:Ошибка: Указанный счет депо не найден: "blablabla", OpenLong, SiH1, B, 1, price=74260.0
Просьба уточнить, что подразумевалось под этим пунктом?
В сообщении #6 в п.2 приведен код программы SuperScalp.lua Если выставить в function send_order() параметр account = 'blablabla', то при выставлении заявки при rus = true trans_params{} будет таким:
XXM, благодарим за пояснения. В ходе изучения ситуации пришли к предположению, что текст "Ошибка: Указанный счет депо не найден..." вероятно появляется в результате работы Вашего скрипта. Так как по умолчанию при неправильно введенном счете для срочного рынка он автоматически заменяется на корректный при условии, что у клиента есть только один торговый счет для срочного рынка.