Sergey Gorokhov (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 68 69 70 71 72 73 74 75 76 77 78 След.
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
Код
 for bid_i=1, bid_count, 1 do
   bid_quantity = tonumber( bid[bid_i]["quantity"] )
   if (bid_quantity > max_bid_count) then
      max_bid_count = bid_quantity
      max_bid_price = bid[bid_i]["price"]
   end
end  
почему я тут могу получить NIL? или если у меня не загрузится стакан, то как раз поэтому у меня NIL и выходит?
У нас не воспроизводится.
Приведите полный текст ошибки.
Цитата
Eldar пишет:
и что по поводу логики подскажете
Цитата
Eldar пишет:
получается что обычно OnQuote работает с открытыми стаканами, но через Subscribe_Level_II_Quotes я подписываюсь на изменения.
то есть в первом цикле делаю Subscribe_Level_II_Quotesпо всем тикетам, а потом отрабатываю через OnQuote (а внутри через getQuoteLevel2) ?
второй цикл не нужен, так как изменить данные нужной строки таблицы вывода я могу через SetCell, где ключем будет код бумаги.
Вы программист, Вам решать какую логику использовать.
Заявка с фиксированным объемом исполнения
 
Цитата
Денис Кирилин пишет:
Спасибо за ответ!
незачто
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
почему я тут могу получить NIL? или если у меня не загрузится стакан, то как раз поэтому у меня NIL и выходит?
Выложите полный текст скрипта.
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
вопрос немного у другую тему - а могу я автоматически стопануть скрипт, если закрыто окно с таблицей вывода?
Да, используйте для этого условие на функцию IsWindowClosed
Задержка при обмене по DDE
 
Цитата
Kirill Toporkov пишет:
Спасибо за помощь!
пожалуйста.
ЗАЯВКИ
 
Здравствуйте,
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
второй цикл - это внесение изменений в таблицу.
Тогда уберите getQuoteLevel2 и все что с ним связано из второго цикла. Ее достаточно взять 1 раз перед циклом "for i=1, 30 do"
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
мне Subscribe_Level_II_Quotes запросить один раз на каждую бумагу в отдельном цикле?а потом получать стакан по getQuoteLevel2?
Да, так будет оптимальней. Повторные вызовы Subscribe_Level_II_Quotes абсолютно лишние.
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
Цитата
Sergey Gorokhov пишет:
Вынесите Subscribe_Level_II_Quotes в отдельный цикл, перед строкой "while is_run do" заказывать постоянно одни и те же стаканы нет смысла. Плюс, сам цикл "for i=1, 30 doсовершенно не понятен. Зачем он?
мне надо запросить объемы в стаканах по 30 бумагам.
мне Subscribe_Level_II_Quotes запросить один раз на каждую бумагу в отдельном цикле?а потом получать стакан по getQuoteLevel2?
Посмотрите код внимательней.

Вот Вы гоняете в цикле все бумаги по очереди:
Код
for key, value in spairs(tikets) do


Далее, для каждой из этих бумаг Вы вызываете функцию Quotes в которой вызываете цикл "for i=1, 30 do"
Таким образом, если в таблице "tikets" у Вас 30 бумаг, то в общем случае, за одну итерацию, цикл "for i=1, 30 do" приведет к тому что функции внутри него будут вызваны 30*30=900 раз.
Конечно, сложно судить не видя полного кода, но на мой взгляд 900 раз вызывать одни и те же функции совершенно излишне.

Цитата
Eldar пишет:

то есть ставить условие

То есть ограничить просмотр строк в стакане количеством этих строк.
Для этого надо использовать параметры "bid_count" и "offer_count"
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
Eldar пишет:
поломался код
Какую ошибку пишет?
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
Цитата
"Eldar пишет:
и т.д.
первая проблема -перебор 30 строк в таблице это долго.
Вынесите Subscribe_Level_II_Quotes в отдельный цикл, перед строкой "while is_run do" заказывать постоянно одни и те же стаканы нет смысла. Плюс, сам цикл "for i=1, 30 do  совершенно не понятен. Зачем он?

Цитата
Eldar пишет:
вторая -если сделаю меньший sleep то часто не получаю данные стакана.
На заказ данных по очередному скакану требуется время, но 250 как-то много. обычно хватает 10-50. Быть может терминал чем-то нагружен? Попробуйте провести эксперимент с sleep(50) но при этом закрыв все посторонние окна в терминале.
Цитата
Eldar пишет:
временами ошибка attempt to perform arithmetic on local 'delta ' (a string value )
Тут проще, если стакан не полный, то при обращении к пустой строке стакана функция выдаст nil, отсюда и ошибка.

Цитата
Eldar пишет:
причину отловить не могу. механизмов отладки нет (или я не нашел где они).
Механизмов отладки много, самый простой это логирование через PrintDbgStr. Также в интернете можно почитать про Decode и ее аналоги.
getCandleByTime
 
Здравствуйте!

Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Задержка при обмене по DDE
 
Цитата
Kirill Toporkov пишет:
Может существуют еще какие-то способы устранения проблемы или нужно искать проблему в DDE?
Проблема с самого начала была именно в DDE сервере.
Эксперимент с увеличением параметра, только доказывает это.
Соответственно, если и можно сделать что-то, то именно на стороне Вашего DDE сервера.
Задержка при обмене по DDE
 
Цитата
Kirill Toporkov пишет:
Подскажите, как избавиться от этой проблемы?
если терминал Quik передает данные в DDE сервер очень быстро, а сам DDE сервер не успевает обрабатывать поступающие в него данные, то происходит накопление очереди из отправляемых данных. В результате чего происходит торможение.
попробуйте увеличить параметр price-timeout
Поля в OnOrder, требуются разъяснения
 
Здравствуйте,
Цитата
Viktor MMM пишет:
1. Идентификатор пользователя (trans_order["uid"])
UID это номер Вашей учетной записи в базе Вашего брокера.

Цитата
Viktor MMM пишет:
А как через sendtransaction в эти поля занести значения? Поле COMMENT из гайда не работает. Но там и написано, что оно для группового снятия. Значит есть какое-то другое поле. Какое?
Комментарий указывается в параметре CLIENT_CODE после знака разделителя "//" или "/" (зависит от настроек на стороне брокера)
Например:
["CLIENT_CODE"]="12345//Привет"
Процентное изменение от цены закрытия, Стандартные средства quik
 
Когда ответ будет, мы его опубликуем.
Поэтому ждите.
Пожелания по квику и LUA
 
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Пожелания по квику и LUA
 
Цитата
Сергей Радченко пишет:
просьба добавить возможности:
1 менять цвет у линии в индикаторе
2 Также добавьте отображение индикатора в виде баров, свечей, гистограммы.
3 Будет супер если появится возможность рисовать индикаторы, графики без привязки ко времени.
1. Менять цвет уже сейчас можно. или имеется в виду динамическое изменение цвета?
2. мы уже работаем над этим
3. в этом пункте не совсем понятно. уточните пожалуйста на примере.
Создание своего события, локальный callback
 
Цитата
Viktor MMM пишет:
Совершенно верно. Двумя и более.
Просто так, такое событие сделать не получится.
Нам известно что пользователи решают задачу использованием Named pipe.
Также кто-то даже написал отдельную dll которая использует Name Space.
Но проще всего использовать простое чтение/запись из файла

Поделиться ссылками на примеры не могу, так как это сторонние проекты.
Создание своего события, локальный callback
 
Здравствуйте,
Правильно ли я понял, речь идет про взаимодействие между двумя разными скриптами?
закрытие всех заявок на срочном рынке
 
Цитата
Серж пишет:
Правильно ли я понимаю ваш ответ, что в QUIK поддерживаются параметры/значения_параметров транзакций различных бирж, не описанные в Руководстве пользователя QUIK? Нам осталось только угадать как они могут называться в вашей интерпретации?
Не надо  ничего гадать, все транзакции которые не описаны в нашей документации, имеют стандартные параметры описанные в интерфейсе к конкретной бирже. Одно лишь перечисление всех возможных полей транзакций заняло бы в руководстве страниц 200.
Поэтому простите, но описывать их мы не будем.

Все доступные транзакции всегда есть в меню Торговля - Транзакции.
Все транзакции которые там есть можно добавить в карман транзакций и от туда сохранить в tri файл таким образом можно узнать какие параметры можно вводить в транзакции.
Цитата
Серж пишет:
Поддерживается ли параметр MODE = 3 ?
Относительно значения 3 для параметра транзакции MODE сообщаем, что в текущий момент данное значение в системе QUIK не поддерживается.
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Дмитрий пишет:
И при этом графики в терминале не открыты.
А Вы до этого их открывали?
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Сергей Радченко пишет:
не работает пишет:attempt to call method 'SetEmptyCallbac' (a nil value)
А прошу прощения, это я опечатался.
Напишите так:
Код
......
ds=CreateDataSource(Class_Code, Sec_Code, INTERVAL_M15) 
ds:SetEmptyCallback()
sleep(100)
......

CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Сергей Радченко пишет:
не работает пишет:attempt to call method 'SetEmptyCallbac' (a nil value)
Значит терминал старый, обновите до актуальной версии (сейчас это 6.17)
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Нет Вы поняли не правильно.
Если у Вас нет открытого графика по нужному инструменту, но ранее он открывался, значит Вы не подписаны на изменение по нему данных. В этом случае данные в терминале есть и CreateDataSource сработает, но только для тех данных которые остались в памяти терминала.
Если в течении сессии график вообще не открывался, то CreateDataSource вообще не сработает в этом случае нужно заказать данные. Это можно сделать либо открыв окно с графиком, либо вызвав функцию ds:SetEmptyCallbac() один раз.

На сколько становится понятно, график у Вас не открыт и скорее всего открываться не будет.
Значит напишите так:

Код
......
ds=CreateDataSource(Class_Code, Sec_Code, INTERVAL_M15) 
ds:SetEmptyCallbac()
sleep(100)
......
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Сергей Радченко пишет:
Как определить оптимальное время на закачку? Просто если поменять инст. на RIM5 проблем нет. Куда втыкать sleep до CreateDataSource или после и сколько ставить единиц? Как определить полноту передачи массива свечей?
Втыкать sleep после CreateDataSource
Определить можно только поставив эксперимент.

Цитата
Сергей Радченко пишет:
SetUpdateCallback позволяет генерить событие если свечка изменилась, а если не изменилась , то ничего не делать. Да это здорово для обработки текущей свечи. Но я больше склоняюсь к получению данных из таблиц данных через getParamExкак пример getParamEx ("SPBOPT", mas_opt_par["code"], "NUMCONTRACTS").param_value
Если Вы используете getParamEx зачем Вам CreateDataSource? Да еще и с интервалом 15.
Если для того чтобы заказать данные то нужно использовать тиковый интервал и подписаться через SetEmptyCallback()
CreateDataSource, не грузятся данные при формир. через CreateDataSource
 
Цитата
Сергей Радченко пишет:
если воткнуть sleep(100) в самом начале то выведет
Да на закачку данных требуется время, так и должно быть.
Цитата
Сергей Радченко пишет:
Как лучше получать данные если иструментов для работы в цикле много, и обращения частые? У меня задача тащить по одной свечке из множества инст. и хотелось бы получать правильные данные.
Лучше, ловить данные в колбеке SetUpdateCallback
Рыночная цена опциона
 
Цитата
lergen пишет:
Нужно указывать именно актуальную цену(лучший бид/аск) или вариант с макс/мин возможной(худшей) ценой должен также работать?
Трансляция мин/макс цен на опционах появилась сравнительно недавно.
Если она у Вас транслируется, можете использовать ее. Если нет, значит брокер еще не обновил шлюз, тогда используйте бид/аск
Рыночная цена опциона
 
Здравствуйте
По опционам автоподстановка цены не работает. нужно явно указывать цену
Процентное изменение от цены закрытия, Стандартные средства quik
 
Цитата
Alex пишет:
Неделя прошла... Есть результат изучения проблемы ?
К сожалению пока ответа нет
Заявка с фиксированным объемом исполнения
 
Цитата
sam063rus пишет:
а как же: "немедленно или отклонить"?
Читайте внимательней, клиенту надо чтоб "она не снималась".
Превышение ГО при импорте заявок через API
 
Здравствуйте,
Проблема вряд ли вызвана API
Рекомендуем для начала задать вопрос брокеру.
Заявка с фиксированным объемом исполнения
 
"Поправка, "только в полном объеме" да и еще чтобы "она не снималась". такое не возможно
Заявка с фиксированным объемом исполнения
 
Здравствуйте,
Чтобы "только в полном объеме" то такое невозможно. см правила торгов
Таблциа Истории
 
Цитата
Дмитрий пишет:
Цитата
Sergey Gorokhov пишет:
речь идет про SetUpdateCallback.
Для него интервал не имеет значения ( не считая тикового ).
А в чем разница работы SetUpdateCallback при выборе тикового интервала и при выборе любого другого?
Тиковые данные, это по сути Таблица Всех Сделок только в виде графика, а интервальные данные это уже сжатая информация с сервера. От сюда возникает гигантская разница в количестве. Интервальных данных может быть максимум 60*24+3000=4440, а тиковых неограниченное количество. Из за этого при работе с тиковыми данными могут быть тормоза
Таблциа Истории
 
Цитата
Серж пишет:
ечь в данном случае идёт о получении изменения параметров или таблице истории изменений. Разве для этого имеет значение интервал (не считая тикового)?
речь идет про SetUpdateCallback.
Для него интервал не имеет значения (не считая тикового).
Поэтому и ответ "на свое усмотрение"
Таблциа Истории
 
Цитата
Constantin Constantin пишет:
Sergey Gorokhov , а какой временной интервал лучше при этом заказывать?
Такой который даст Вам исчерпывающую информацию для анализа.
Таблица истории по Стакану, Таблица истории по Стакану
 
Цитата
Optimus1 Optimus1 пишет:
Ну хотя бы такую инфомрацию. Вопрос в том, можно ли эту информацию получить офф.лайн, то есть, как таблицу истории по стакану в конце дня, потому как собирать ее в течении для онлайн, не вариант прям.
Только онлайн.
И получить вечером нельзя
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
Цитата
Дмитрий пишет:
А разве одного file:close() не достаточно?
Вы посмотрите код, он до close не доходит просто.
С учетом sleep чтобы добраться до close надо ждать суток трое
Простой код по созданию файла с ценами из all_trades таблички, файл создаётся, но пустой, табличку получаем.
 
добавьте команду
file:flush()
Баг с валютой шага
 
Цитата
Reshpekt Fund Russia пишет:
в шлюз этот параметр вообще не передаётся.
Здравствуйте,
Спросите биржу еще раз, только "Валюта шага цены" в QUIK на бирже называется "Валюта платежа"
Таблциа Истории
 
Цитата
Серж пишет:
А пока данное пожелание не реализовано, разумно ли вместо OnParam использовать функции CreateDataSource и SetUpdateCallback на каждый из отслеживаемых параметров? Не окажет ли это негативного влияния на производительность?
Здравствуйте,
На производительность не должно оказать влияния, но с оговоркой что речь идет о разумном количестве заказываемых параметров.
Не могу подключиться к рабочему месту через TRANS2QUIK.dll, проблема
 
Здравствуйте,
Поменяйте слеш на "\" если не поможет, проверьте наш пример API_Tester_DLG будет работать?
Таблциа Истории
 
Цитата
Дмитрий пишет:
добавить в функцию OnParam(STRING class_code, STRING sec_code) еще один параметр, сообщающий, изменение значений каких именно параметров ТТП привело к вызову этой функции
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Таблциа Истории
 
Цитата
sam063rus пишет:
слишком большие накладные расходы, снижение быстродействия.
Но это же нужно только для ответа на вопрос автора. Никто не заставляет держать кучу таблиц одновременно. к тому же на производительность это не должно влиять только на удобство просмотра.

Цитата
Дмитрий пишет:
Или все же биржа отправляет в этом случае только текущие (последние) значения параметров?
Только текущие значения.
Таблциа Истории
 
Цитата
Sergey Gorokhov пишет:
А то что цифры в этом изменении фактически остались те же никто не проверяет
Кстати, если интересно, отследить параметр который изменился, все таки можно.
Если построить по каждому из параметров, отдельную таблицу истории. Для каждого параметра своя таблица. Потом посмотреть по времени, какой из параметров прислал два одинаковых значения подряд тот и виноват
Таблциа Истории
 
Цитата
Дмитрий пишет:
Непонятно, как программа узнает об этих изменениях, если она получает данные только срезами, а эти изменения произошли в промежутке между срезами и в конечном счете на момент получения второго среза ничего не изменилось.
Раз в период, с биржи приезжает кучка параметров. Эта кучка отправляется от сервера клиенту. Клиент в свою очередь, обновляет только те данные которые приехали, а те которые не приехали оставляет в предыдущем значении. раз в промежуток между срезами были изменения, то биржа отправит эту самую кучку. А то что цифры в этом изменении фактически остались те же никто не проверяет
Таблциа Истории
 
Цитата
Дмитрий пишет:
Цитата
sam063rus пишет:
есть лишь обычная программа-сервер, которая мониторит изменение биржевого потока и выдаёт его клиентам
Это надо понимать так, что когда речь идет о получении значений ТТП срезами, то это касается лишь передачи данных от сервера QUIK в терминал, в то время как сам сервер QUIK получает с биржи и отслеживает абсолютно все изменения этих параметров непрерывно , а не срезами?
Никто ничего не "мониторит" То есть, не существует какого-либо алгоритма определения "изменились данные" или это "предыдущее значение". Раз в период, с биржи приезжает кучка параметров. Эта кучка отправляется от сервера клиенту. Клиент в свою очередь, обновляет только те данные которые приехали, а те которые не приехали оставляет в предыдущем значении
Таблциа Истории
 
Цитата
Optimus1 Optimus1 пишет:
Если изменения были, почему мы не увидим их в таблице историй ?? Ведь изменения произогли во время среза. Если же изменение произошли в промежутками между срезами, то система, как я понимаю, не должна знать о изменении/
Если по простом, например, до среза было 100 заявок, произошел срез он показал в таблице 100 заявок. Потом произошло увеличение стало 101 и тут же уменьшение, опять 100. Для программы это означает что данные изменились значит их нужно показать, вот он и показывает цифру 100.
Таблциа Истории
 
Цитата
Дмитрий пишет:
То есть получается, что, с одной стороны, в терминале нет данных о том, что параметр изменился.
А с другой стороны они вроде бы в терминале есть, раз такая строка попадает в Таблицу истории значений параметров.
Получается что так. Если предложите способ как обойти эту ситуацию, можем зарегистрировать пожелание
Страницы: Пред. 1 ... 68 69 70 71 72 73 74 75 76 77 78 След.
Наверх