Здравствуйте, Для каждого источника нужно задать свою функцию через SetUpdateCallback. Но так как действия будут производиться одни и те же, будет удобней создать одну функцию, а через колбеки просто ее вызывать
Николай Бехтерев, Нет, параметры все таки лучше задать, так как если колбека не будет то опять будет ошибка. Только задать правильно, то есть маленькими буквами
Николай Бехтерев, Это уже другая история. Во первых PRICE неправильно писать. Так как Lua регистрозависимый язык. Нужно писать маленькими буквами.
Во вторых, как было сказано работать будет только при новых сделках. То есть если сделки были ДО запуска скрипта, то скрипт их не увидит. Если хотите чтобы отображался номер последней сделки, нужно использовать getItem
Николай Бехтерев, У Вас для этого уже все написано. Все что нужно удалить строку и все. Далее, согласно коду при появлении новой сделки Вы получите сообщение
Проверили все работает. Скорее всего Вы неверно указали параметры, код фирмы или торговый счет. Проверьте какие параметры указанны в таблице ограничений по счетам. Первый параметр функции, будет указан в колонке Фирма Второй в колонке Торговый счет. Третий параметр, это тип лимита, он указан правильно. Также проверьте версию терминала. Актуальная сейчас 6.16.1
Если разобраться не получится, пришлите нам для анализа архив с терминалом Quik (без ключей доступа) и файл с полным кодом программы на адрес quiksupport@arqatech.com
sam063rus пишет: и последний вопрос: из материалов с других форумов - мы знаем, что "main" запускается (а вместе с ней и создаётся отдельный поток) после колбека "OnInit" - значит ли это , что, если в скрипте не будет прописан колбек OnInit - то и для функции "main" не будет создан отдельный поток???
-------------------- этот, как и предыдущий вопрос относится не только к Михаилу, но и к другим разработчикам.
Нет не значит. И как-то комментировать то что сказано на других форумах считаем излишним.
На сколько становится понятно, Вы говорите что проблема заключается в появлении значения "1000" в переменной sec_code. Если так, нужно смотреть выше, что попадает в эту переменную и от куда оно туда попадает, а не то где Вы с ней работаете.
lergen пишет: также как и до переключения а стоп заявку нужно "сделать своей" что бы её можно было модифицировать? Я правильно вас понял?
Да все правильно. Связанно это с тем, что "стоп заявки" это сущность Quik и биржа про них вообще ничего не знает. Сами по себе, они существуют только внутри сервера Quik. Поэтому при переключении на другой сервер, нужно менять привязку у стоп заявок. Обычные заявки хранятся на бирже, поэтому не важно от куда Вы к ней подключитесь. Можете подключиться на прямую, минуя брокера, и Вы все равно сможете управлять своими заявками.
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Albert Eritsyan пишет: Вопрос можно поставить иначе, а именно, получить списоккласс/инструмент по которым нельзя подавать ордера из-за ограничений заранее известных квику от брокера,
Как было сказано, есть два варианта 1) транзакций нет в принципе 2) транзакции есть, но установлены ограничения со стороны брокера. Следует понимать что в 99% случаев это условные ограничения. То есть торговать можно, но только с некоторыми ограничениями. Например не больше какого-то объема, или по ограниченному диапазону цен. Так вот, чтобы точно решить поставленную Вами задачу, нужно делать запрос именно с теми параметрами которые будут в заявке. Таким образом, для 2го случая, просто так взять и получить список, не представляется возможным.
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Да, и Вы не ответили на самый главный вопрос, чем эта проверка лучше заранее определенного списка классов заданных пользователем? На наш взгляд заранее заданный список куда лучше, так как избавляет от ошибок
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Albert Eritsyan пишет: Приведенный мной выше код и его результаты показали ошибочность такого подхода, так как в этом случае "как раз приглашают не в ту дырку" (см выше класс Опционов, когда они не доступны для торговли)
Я не вижу в Вашем коде применение названного подхода. Еще раз, рекомендация была явно указать какие классы Вам нужны для торговли а не вычислять их.
Цитата
Albert Eritsyan пишет: Т.е. проверка наличия или отсутствия номера заявки и цифрового кода в скобках гарантия, что транзакцию отвергли по причине ограничений Брокера? Или возможны ситуации, когда Брокерские ограничения отсутствуют но отклик такой же?
Нет, я же сказал, это гарантия что транзакция была отвергнута сервером. Это НЕ тоже самое что отвергнута из за ограничений брокера. Но для решения Вашей задачи это одно и тоже. Ситуации могут быть разные, например брокер не загрузил лимиты, или какой-то сбой. Это не является ограничением, но тем не менее сервер отвергает заявку.
Цитата
Albert Eritsyan пишет: Хотел также уточнить, а возможность доработки самого Квика, в плане предоставления клиентам списка доступных для транзакций инструментов в принципе не выполнима? Ведь это избавит от необходимости нагружать КВИК подобного рода проверочными ордерами.
На счет технической возможности я не могу сейчас дать ответ. На первый взгляд такое возможно, однако точно можно сказать только после регистрации пожелания и проведения анализа. Другой вопрос, в том а чем это лучше проверочных ордеров? Вам все равно также придется перебирать классы.
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Albert Eritsyan пишет: То есть если я правильно понял, в первом случае речь идет о "глубоко научном методе тыка", исключая возможность оптимизации круга инструментов (исключив не доступные для транзакций) количество лотов в ситуации, когда нужно быстро определиться?
Да речь идет о глубоко научном... Собственно можно поступить проще, как подсказали участники форума выше. Просто указать нужные классы. Это будет куда разумней, иначе есть шанс попасть "не в ту дырку".
Цитата
Albert Eritsyan пишет: А втором случае есть какие либо специальные коды отказов в транзакции (либо четко ограниченный круг таковых, обусловленных именно наличием такого рода ограничений)?
Если в ответ на транзакцию нет номера заявки, и нет какого либо цифрового кода в круглых скобках и нет слова FORTS, значит заявка была отвергнута сервером. Кроме случая когда транзакции не доступны (нет прав) И кроме случаев когда тест транзакции содержит синтаксическую ошибку. В этом месте ошибку возвращает терминал Quik
Список доступных для транзакций инструментов, получение списка инструментов для совершения транзакций с учетом различных аккаунтов у одного и того же брокера.
Серж пишет: Тут вопрос ещё в том, а знает ли сам терминал по каким инструментам трейдеру разрешены операции? Или он узнаёт об этом только, когда в ответ на транзакцию с сервера приходит ответ с ошибкой?
Здравствуйте, Есть два пути. 1) по классу может стоять запрет на транзакции в правах. В этом случае подать заявку через интерфейс нельзя, просто пункт меню будет не активен. Через Lua определить такие классы можно, например подав заведомо неисполнимую транзакцию. Если в ответ придет что-то вроде, для данного класса транзакция не найдена, значит стоит запрет в правах. 2) Транзакции могут быть доступны, но ограничены брокером. Способов ограничить великое множество. В этом случае транзакция в терминале будет, и ее даже можно будет подать. Но в ответ будет приходить тот-или иной отказ в зависимости от способа ограничения.
Дмитрий пишет: Вопрос немного не по теме - а айсберг заявки можно выставлять не только по акциям на фондовой секции Московской биржи, но также и на других секциях (на валютном, на срочном рынке)?
В общем случае нет нельзя. Но в частном, у нас есть спец модуль для сервера. Если брокер его у себя поставит, то можно будет ставить эмуляцию айсберг заявки.
swerg пишет: Есть ли в планах опубликовать список доступных транзакций, причем как-то однозначно идентифицированных (например, тупо уникально пронумерованных)? иначе мне не очень понятно как может подать такую транзакцию англоговорящий трейдер (а ведь таковые вроде как есть, судя по новостям). Или таковым не судьба подавать подобные транзакции?
Если мы опубликуем список доступных транзакций то наша документация просто лопнет :) Дело в том что на каждом рынке, на каждом классе, для разных целей, есть разные транзакции. И их просто гигантское количество. Посмотрите сами в меню Торговля - Транзакции, Вы увидите сколько их. А представьте что у менеджера их еще больше. А если еще подсчитать сколько классов существует.... Самые популярные транзакции опубликованы в руководстве и для них в коде прошиты константы, которые Вы и видите в руководстве. А для остальных, константы не прописаны, и подавать такие транзакции нужно как есть. Это самое "как есть" очень легко увидеть добавив транзакцию в карман транзакций и сделав экспорт из него в tri файл. Мы называем это универсальный формат транзакции.
Англоязычные пользователи будут подавать транзакции на английском. Я чуть слукавил, говоря что по английски нельзя Дело в том, что в русском терминале надо подавать такие транзакции только на русском, а в английском только на английском. Но нельзя подавать русские транзакции в английском или английские в русском. Это правило касается только для универсального формата транзакций.
Здравствуйте, Средствами скрипта сделать стоп заявку своей можно отправив транзакцию со следующими параметрами local trans = { ["TRANS_ID"] = "1", ["ACTION"] = "Сделать стоп-заявку своей", ["CLASSCODE"] = "SPBFUT", ["Номер стоп-заявки"] = "123456789" } local res = sendTransaction(trans)
sam063rus,Я в вопросе опечатался. Вопрос на самом деле, от куда должна начинаться трендовая линия, а не свечка.
От кудадолжна начинаться трендовая линия нарисованная от максимума часовой свечки, при переключении на 5 минутный таймфрейм, при условии что за час было две сделки с максимальной ценой в 11:35 и в 11:50
Здравствуйте, Пример из жизни: За час было две сделки с одной ценой. Эта цена была максимальной в этом часе одна в 11:35, вторая в 11:50
График часовой. Рисуем трендовую линию по 11часовой свечке, где начало линии, это максимум свечки. Переключаемся на 5ти минутный таймфрейм. По Вашей логике от куда должна начинаться свечка, со свечи в 11:35 или со свечи в 11:50??
Параметры кажутся правильными. Уточните какая именно версия терминала у Вас установлена 6.16.0 или 6.16.1? Если 6.16.0, обновитесь до 6.16.1 и повторите попытку.
Здравствуйте, Ничего не менялось, код у нас работает (проверяли на версии 6.16.1) Параметр LINKED_ORDER появится только когда стоп заявка исполнится, быть может в этом проблема?
самое интересное, что если удалить скрипт из списка и опять добавить - то, всё находится без проблем
Самое интересное в том что если путь не указан то файл ищется по относительному пути. и так как при первом запуске он правильный то все работает. Но как только путь где-либо поменять (например открыть другой скрипт из другой папки), то первый теряет свою папку и после перезапуска уже не запускается. Но как только Вы его удалите и добавите снова, то путь восстановится. Решение уже было озвучено. Надо явно указать путь к модулю.
У нас есто много разных FIX приборов, для разных целей разные приборы. И для каждого из них спецификация протокола описана в руководстве пользователя. Соответственно если у Вас есть какой-либо из наших FIX приборов, поищите информацию в документации.