Michael Bulychev пишет: Добрый день. В вашем случае можно данные из функций обратного вызова (OnOrder, OnTrade ...) складывать в одну или несколько очередей и обрабатывать данные в main(). В этом случае Вы сами будете контролировать порядок обработки данных.
День добрый, Михаил! Не могли бы Вы натолкнуть на способ такого складывания? sam063rus, спасибо, но корутины пока выше моих возможностей.
Sergey Gorokhov пишет: Это нельзя сделать, так как появление очереди приведет к полному отказу в работе терминала.
Вроде же разрабы говорили, что события встают в очередь и хронология не меняется. Значит очередь эта возникает. Что подразумеваете под "полным отказом"? просто подвисает?
Сергей, спасибо что отозвались. Нет. Происходит событие. Вы говорите, что терминал подвисает и начинает его обрабатывать. Мне же надо, чтобы при возникновении события сначала доработала какая -то моя функция, а потом уже пошла обработка события. Причем по моему выбору. В каких-то для меня критичных местах. То есть не код в событии продолжал работать, а, например, тот же main. Доработал бы до какого-то места, а потом бы разрешил обработать событие. Это возможно?
Добрый день! Проясните, пожалуйста алгоритм работы. Работает скрипт, происходит событие. Скрипт прерывается и включается обработка? А потом скрипт продолжает работу? Как сделать так, чтобы пока, например, функция не выполнится, обработка не выполнялась? В тех случаях, когда мне так надо. Бывают случаи, например когда нужно снять заявки. Скрипт начинает их удалять, одну удалил, произошло событие - снятие, и скрипт может сбиться, потому что данные для второго удаления уже изменились, а мне надо, чтобы первый "слепок" данных не менялся.
Вечер добрый! Не помню, использовал я раньше на купайле это поле или нет, но в документации по таблице заявок оно было. Имело три значения. Сейчас в документации по клуа я его не вижу, пытаюсь вызвать - nil. Как теперь добраться до этого поля анализируя таблицу заявок? Хочу отсечь те, что "KILLED" например..
И мне вот кажется, что отсутствие глоб. переменных какой то архаизм.. Вэлс 4 и тот поддерживает. Через это глобальное поле можно было бы общаться между скриптами напрямую, а не через ж.. файлы. Вот что-что, но этого я не ожидал от продукта, внедренного недавно. События - есть, ура, двинулись. Глоб. переменных нет. Приехали.
s_mike@rambler.ru, понимаю, конечно, что не мне адресовано Ваше сообщение, но если б разработчики реализовали то, о чем шла речь у меня, и задокументировали, то мне бы, не программисту, было бы проще сделать некоторые вполне адекватные вещи. Конечно, каждый должен заниматься своим делом, нечего мне лезть в эту тему для себя, когда есть программисты. Но с другой стороны, есть и другие заинтересованные лица, которые хотят, чтобы народу было по-больше на рынке, чтоб больше людей в квике копались и т.д. Вот на балансе этих интересов и развивается продукт. Как может)
по вопросу 2. Значение в это поле заносится из формы выст. заявки (снизу два поля - Код Клиента//Поручение). А как через sendtransaction в эти поля занести значения? Поле COMMENT из гайда не работает. Но там и написано, что оно для группового снятия. Значит есть какое-то другое поле. Какое?
s_mike@rambler.ru, спасибо. С ними, гляжу без 100 грамм не разобраться. пока буду дописывать ручками в файл) Вы не знаете, а такое возможно, запустив квик, скайт, писать скрипт в скайте и чтоб он работал с qlua. Подхватывал данные, сделки отсылал.. чтоб не мучаться каждый раз в квик не грузить скрипт для проверки. Это вообще реально?))
s_mike@rambler.ru, первый же пример не работает. Я уже как то пытался колдовать с юлианским календарем, тоже по формулам не сходилось. По первому примеру у меня выдает 1379097615, а у Вас 1379094015. Ну и как следствие, при обратном преобразовании в данном случае время уплывает. Что может быть?
Скажите, есть ли возможность напрямую работать со временем? Без разбора на часы/минуты, анализа и т.д.? Например хочу проверить одно время относительно другого. больше оно или меньше.
sam063rus,спасибо! да нет, я не лукавил, зато, похоже, не понятно как пропустил стандартные библиотеки. Сейчас попробовал вычислить модуль и получилось. math в квике есть. За ссылку еще раз спасибо. А то читаю что ни поподя, а столкнувшись с разницей в синтаксисе того что я нашел и того, что вижу в в квике понял, что поиск первоисточника той еще задачкой будет. Что на англицком, не страшно. Лишь бы правильно.
sam063rus,не подскажете, где найти информацию по функциям LUA? тут даже вычисление модуля не нашел, да и синтаксис отличается.. Получается что LUA в квике не тот LUA, а какой тот - не знаю.
lergen,вот и я подумал, стоит ли в данном случае глубоко копать (не хочу обидеть разработчиков, понятно, что и я не программист но и продукт не идеальный). Тоже думаю запустить доп проверку и рубить хвосты.. Не потому что прям не могу понять как сделать, а потому что понимаю, что предусмотренное мной может рассыпаться от всяких "нюансов недодукомментированных" и прочих "недо..."
Вопрос практикам. Может быть ситуация, когда скрипт повторно выставляет заявку, хотя по алгоритму и по работе скрипта такой ситуации быть не должно? Весь скрипт на анализ кидать смысла нет, вопрос в общем, бывает такой баг или нет? Скрипт два дня работает. Выставляет новую заявку только после получения подтверждения о снятии предыдущей. Все работало нормально. Оставил на 2 часа без присмотра, вернулся - две заявки. Одна залипла. С чем связано - не выяснить. Можно, конечно, опять скрипт проверять и т.д.. Если багов таких ни у кого не наблюдалось, тогда буду проверять, копать. Если бывает - оставлю как есть. Зона видимости переменных, надеюсь, на другие открытые скрипты не распространяется, таких-то "чудес" не бывает??))
Серж, да, спасибо.. Я уже понял. Событие - ЛЮБОЕ изменение. Его обрабатываем и выясняем. Только надо запоминать предыдущее значение. Подписаться на изменение конкретного параметра не возможно.
Дмитрий, добрый день! Вам удалось найти список? А то вижу тут так и не ответили на вопрос.. Если да, сообщите, пожалуйста. Тоже интересно. Если сам найду - скину сюда.
Да можно, в функции getParamEx вы и указываете тот параметр на которых хотите подписаться. Т.е пр вызове функции Onparam вы можете вызваться функцию getParamEx и получить значение необходимого параметра.
Я, Constantin Constantin,теперь тоже так думаю. Но слова Егора Зайцева понял иначе. Что можно вызвать функцию при изменении именно тор цены, а не ТТП в целом, а потом разбираться было ли там изменение нужного мне параметра или нет.
не могу удалить прошлое свое сообщение, удалите, пожалуйста. Вот рабочий скрипт
Код
is_run=true
function main( ... )
while is_run do
sleep(2000)
end
end
function OnParam(class,sec)
if class == "SPBOPT" and sec == "SR6500BR5" then
tp1 = getParamEx(class,sec,"theorprice")
message(class.." "..sec.." "..tp1.param_value,2)
end
end
function OnStop(stop_flag)
is_run=false
end
но логику в нем я вижу следующую: произошло изменение (не важно чего) в ТТП по опционам. Вызывается функция моя и в ней я анализирую, что пришло. Это не есть подписка именно на событие изм. теор. цены. Я что-то не так сделал или это и есть максимум в решении задачи?
is_run=true
function main( ... )
while is_run do
sleep(2000)
end
end
function OnParam(class,sec)
if class == "SPBOPT" and sec == "SR006500BR5" then tp = getParamEx(class,sec,"theorprice") end
message(tp,2)
end
function OnStop(stop_flag)
is_run=false
end
Хочу, чтобы при изменении теор цены выскочило сообщение. Понимаю, что ошибка в пока что не понимании принципов построения. Можете ответить, что не так?
Егор, еще вопрос. А в qlua в принципе можно получить реакцию при изменении конкретного параметра, как у меня? Судя по документации OnParam вызовется при любом изменении текущих параметров, а потом уже я разбираю какое значение принял интересующий меня параметр.
Здравствуйте, Егор! Спасибо, что откликнулись. Я хотел увидеть скрипт полностью. С синтаксисом. Чтобы была обозначена функция, например просто сообщение выдавала по изменению цены. Чтобы main был прописан с обработкой этой функции (именно Function, обращение к ней, а не в теле main). В итоге я хотел на этом примере разобраться, как правильно писать скрипты на qlua. Я только начинаю осваивать этот язык, и хочу понять конструкцию. Понимаю, что задача простая, но требует время. Если будет возможность, был бы признателен за помощь. На примере я бы быстрее разобрался. как в свое время с купайлом. Нужен старт. Еще раз спасибо за отклик. Если у Вас руки так и не дойдут, понимаю.
Добрый день! Решил освоить азы qlua. Не понимаю, какая конструкция должна быть, чтобы запустить свою функцию по событию.
Код
T = getParamEx("SPBOPT","SR6000BQ5","theorprice")
message(T.param_value,2)
а событие - изменение этого параметра в ТТП
Пожалуйста, напишите этот скрипт полностью. С обозначением функции, с main, все как полагается. Очень буду признателен, а то собираю куски по частям, ерунда какая то получается..