Egor Zaytsev написал: Наличие выбранных опций ("Исходя из настроек открытых пользователем таблиц") несмотря на отсутствие открытых таблиц является штатным поведением программы, так как QUIK кроме таблиц заказывает и другие данные, к примеру маржинальные требования по клиенту и другие биржевые параметры.
Stanislav Tvorogov написал: Функция DestroyTable удаляет структуру таблицы. Все данные для отображения при закрытии окна удаляются.
У меня (в Квике 6.17.1.17) если окно таблицы открыто, то при вызове DestroyTable Квик на несколько секунд подвисает (Windows пишет что программа не отвечает), а потом продолжает работать. При этом окно таблицы остается открытым. Не знаю может быть в новых версиях Квика это исправлено.
Документация написана не очень понятно (для меня). Ответьте, пожалуйста, на вопросы и дополните документацию.
1. DestroyTable - написано что "закрывает окно таблицы". Эта функция просто закрывает окно таблицы (и потом его можно заново пересоздать с помощью CreateWindow) или она удаляет (освобождает) структуру таблицы, созданную в AllocTable? Результат ф-ции имеет тип NUMBER, при этом возвращает значения true и false.
2. AddColumn - параметр iCode назван как "код параметра, выводимого в колонке". Как это понимать? Просто как номер столбца? И нумеруется он с единицы или с нуля? Чем отличаются QTABLE_CACHED_STRING_TYPE и QTABLE_STRING_TYPE? Какой использовать тип для вывода строки?
3. InsertRow - параметр key назван как "ключ". Это просто номер строки? И с какого числа он нумеруется (с 1/0)?
По фьючерсы и опционы все включаются в получаемые с сервера. Там загружаются поля БГО, стоимость шага и т.п. Если в ТТП есть фьючерсы или опционы, то дополнительно к этим полям еще добавляются выбранные поля в ТТП.
1. Что-то не вижу в документации по QLua информации по полю result. Пропустили. У меня документация не самая последняя, но подозреваю, что и в последней этого описания нет.
2. Название параметра в каком регистре правильнее указывать? В QPILE написано, что требуется в верхнем регистре. В QLua все равно, как я вижу?
Egor Zaytsev, я имел ввиду что почему-то фьючерсы и опционы выбраны все (почти 7000 штук). Что приводит к тому, что гонится трафик в несколько десятков мегабайт, а так же на диск сбрасываются огромные по размеру данные. Это бы исправить. С акциями такого нет - скачиваются данные только тех бумаг, которые выбраны в таблицах и графиках.
Почему при настройке выбора принимаемых инструментов при выбранном параметре "Исходя из настроек принимаемых инструментов", фьючерсы и опционы выбраны все(!!!), а не только те которые реально используются.
Владимир Петров написал: 40,1 купили (ст. шага цены 6,6848 или 26806 рублей - копейки отбросим для упрощения) прошел день (новая торговая сессия) 40,25 продали днем (ст. шага цены 6,6848 или 26906 рубля) Квик показал вар. маржу 100 рублей Курс доллара поменялся в 16:30, и ст. шага цены зафиксировался на отметке 6,5. То есть 40,25 стали стоить 26065 рублей. В 18:45 счет стал меньше на 841 рубль.
Вот это абсолютно неправильно написано. Так не работает FORTS. Не надо начальные и конечные цены пересчитывать из долларов в рубли и потом их вычитать. Надо сначала долларовые цены вычитать и потом полученную разницу умножать на курс. И тогда у вас прибыль никогда не превратится в убыток.
> Другими словами, вы получили 15 пунктов дохода (100 рублей) днем, а потом если курс доллара изменится в худшую сторону до 17:30, то 15 пунктов дохода может превратиться в минус 100 рублей, то есть в убыток, и эта сумма спишется с вашего счета.
и
> Если в одну текущую сессию был вход и выход из позиций, то проблем нет, но если позиция держится несколько дней, то тут интересно.
Это два совершенно разных случая. В первом случае доход никак не может превратится в убыток, как бы не изменился курс к концу. Во-втором случае позицию держите несколько дней - каждый день вариационная маржа считается дискретно по курсу на этот день. Вот суммы этих значений дают результат за несколько дней, и он может быть интересным. Но не очень, так как курс не настолько сильно меняется, что бы кардинально менять результат.
В документации по sendTransaction функция описана как без параметров. В описании что эта функция возвращает написано что-то невнятное, не дающее реального ответа. Поправьте документацию (QLua.chm).
В принципе должно хватить. Главные затыки будут в Квике, Луа, ну и многое зависит от алгоритма робота - как быстро он работает (этот параметр нам не известен).
>>Но вопрос такой,можно ли закрыть позицию отдельно по номеру сделки?
Нельзя.
>>Как закрыть второму скрипту именно свою позицию не затронув позицию первого скрипта???
Нет здесь "своих" позиций. Есть просто сумма купленных/проданных бумаг.
Первый скрипт купил 1 лот - у тебя в кармане 1 лот. Второй скрипт купил 2 лота - у тебя в кармане стало 3 лота. Второй скрипт продал 2 лота - в кармане остался 1 лот.
Арка уделила бы внимание размерам перекачиваемых данных с сервера на клиента. В частности данным, сохраняемым в таких файлах, как info.log и cur_data.log. Десятки мегабайт - это перебор. Там данные должны тянуть максимум на сотни килобайт.
В API Квика периодически встречаются такие вещи, что числовые значения возвращаются зачем-то в строковом виде. Наследство от QPILE? А при переводе для LUA не смогли сделать по нормальному.
Egor Zaytsev пишет: Мы рассмотрели Ваше пожелание (выставлять стопы из графика.). По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной.
Неужели после тысяча второго такого пожелания это будет наконец реализовано?
_sk_ пишет: может имеет смысл добавить функцию Subscribe_Param(classCode, secCode)?
Формат вызова функции лучше сделать таким: Subscribe_Param(classCode, secCode, paramList). paramList - список параметров бумаги, по которым точно будут приходить данные с сервера Квика - аналогично тому как происходит при открытии ТТП и выбора параметров бумаги для отображения в таблице.
И, кстати, топик-стартер пишет HFT-робота или робота-скальпера? Если да - то надо действовать через Плазу. Если нет - то несколько пипсов играют ли большую роль?
Фёдор Сухов пишет: Даже, если все честные до святости, то тогда вот такое обстоятельство: - У меня, допустим, пинг с сервером 40 милисекунд, а у господина А...кого пинг менее 5 милисекунд. - Кто раньше сможет поставить заявку используя один и тот же робот?
Ответ очевиден же.
Если твоему алгоритму так важны миллисекунды, то аллокируй сервер на площадке биржи. Это стоит денег. Если профит от этого превышает затраты, то - вперед.
Старатель пишет: А что по-вашему отвечает CreateDataSource, если ей задать несуществующий код бумаги в реальном классе? Как ни странно, CreateDataSource возвращает таблицу! А что при этом говорит SetUpdateCallback? true, что согласно документации означает "успешное завершение".
Egor Zaytsev пишет: Значение получает без открытой таблицы.
Так ведь нужно не только получать значения, но и заказать получение изменений по заданной бумаге. Сейчас программно не закажешь, надо чтобы пользователь добавлял бумагу в ТТП. Это еще не считая проблемы с заказом нужного параметра бумаги. Этот параметр нужно заказывать в ТТП, иначе он может быть недоступен.
Egor Zaytsev пишет: Как только брокер проблему решает, заменяет некорректные данные корректными, то на рабочем месте обязательно необходимо делать перезаказ данных с сервера, иначе никак.
По идее, если меняются данные графика не на границе, а где-то внутри старого диапазона, то надо помечать этот график как "грязный" с сохранением временной метки (timestamp) этих исправлений. Клиент считывает эту метку и если она не совпадает с его последней, то перезаказывает данный график.
Начальную загрузку можно производить и в коллбаке. Если первый полученный индекс будет равен 1500, то будет произведена обработка свечей в цикле от последней обработанной (нулевой или первой) до этого индекса. Если гипотетически представим, что потом индекс свечи сразу скакнет на 3000, то обработаются свечи с 1500 по 3000.
_sk_, все надо делать в коллбаке. Снаружи не делай ничего. Заведи переменную, где храни индекс последней обработанной свечи. При вызове коллбака обрабатывай данные от последней обработанной свечи (включительно) до переданного индекса измененной свечи (включительно).
STOP-LOSS DRAG-AND-DROP, При передвижении заявок СТОП-ЛОСС на графике методом drag-&-drop изменяется цена реакции, но не изменяется цена, с которой выставляется заявка