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

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

Страницы: Пред. 1 2 3 4 5 6 7 След.
Конкуренты ведут себя некорректно!!!! QLUA vs MQL5, Мне кажется так не правильно!!! QLUA vs MQL5
 
Добрый день.
Проблема не в том какой язык и как "прикручен" к терминалу. По большому счету нет разницы Lua это или MQL. Проводились тесты интерпретатора против JIT-компилятора, а в этом случае результаты вполне очевидны. Можно взять тесты из примера и провести сравнение Lua vs LuaJIT и получить примерно такое же соотношение времени выполнения.
Подгрузка старых данных при переподключении
 
Добрый день. К сожалению, проблему воспроизвести не получилось.
Цитата
Максим написал:
ds[1]:SetUpdateCallback(function(index) cb(index,v.idx, v.classcode,k) end)
При такой конструкции Вы уверены в правильности передаваемых параметров в функцию обратного вызова?
ниже пример кода, который позволяет корректно передавать в колбек данные из DataSource:
Код
function cb(ds, index )
   local t = ds:T(index)
   message( string.format("%s, %s, %d", ds.class_code, ds.sec_code, index))
end

   class_code = "SPBFUT"
   sec_code = "RIZ6"
   ds  = CreateDataSource(class_code, sec_code, INTERVAL_M1)
   assert(ds)
   ds.update_func = cb
   ds.sec_code = sec_code
   ds.class_code = class_code
   ds:SetUpdateCallback(function(index) ds:update_func(index) end)
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Добрый день.
Это все описано в документации по языку.
https://www.lua.org/pil/6.1.html
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
 
Цитата
Sergey Gorokhov написал:
Цитата
Андрей 77   написал:
А почему нельзя в CreateDataSource, SetUpdateCallback предусмотреть чтобы и class и security и ds были доступны cb ? Но только не переменные с такими именами, а их значения.
Просто это не было реализовано.
Мы зарегистрировали от Вас пожелание на доработку. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Это не было реализовано потому, что пользователи могут сделать реализацию самостоятельно.
Предыдущий пример был не совсем корректный.
Код
function cb(owner, index )
   local t = owner:T(index)
   message( string.format("%s, %s, %d", owner.class_code, owner.sec_code, index))
end

   class_code = "SPBFUT"
   sec_code = "RIZ6"
   ds  = CreateDataSource(class_code, sec_code, INTERVAL_M1)
   assert(ds)
   ds.update_func = cb
   ds.sec_code = sec_code
   ds.class_code = class_code
   ds:SetUpdateCallback(function(index) ds:update_func(index) end)
require( 'mylib' ) - Подключение DLL, не правильно работает QLUA, не подключается DLL
 
Добрый день.
Пришлите mylib.dll на quiksupport@arqatech.com
Встроенные индикаторы в скриптах индикаторов, Встроенные индикаторы в скриптах индикаторов
 
Добрый день.
В возвращаемых свечках есть поле doesExist, которое равно 0 если свечка на данном интервале для запрашиваемого графика не определена.
DDE в QLUA
 
Добрый день.
Поясните, пожалуйста, как Вы видите реализацию данного пожелания?
SearchItems
 
Это просто вариант решения Вашей задачи - использовать SearchItems как итератор по данным.
SearchItems
 
Добрый день.
Вы можете прямо в теле функции сохранять нужную вам информацию и всегда возвращать false.
SearchItems
 
Основные затраты при поиске перебором используя getItem это передача структур данных из хост-программы через стек в скрипт. SearchItems дает возможность уменьшить эти расходы.
Используя Ваш пример я написал похожую реализацию с помощью функции SearchItems. Исходный код я немного модифицировал для подсчета статистики.
Исходный пример
Пример реализации с SearchItems
Результаты тестов на моей машине:
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Николай, я отвечал вот на этот вопрос:
Цитата
Или мне нужно будет её обязательно скопировать внутри коллбека, чтобы данные остались внутри скрипта?
Все остальное - очереди, синхронные функции и т.п. уже обсуждалось не раз на этом форуме
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
 
Добрый день.
Николай немного сгустил краски.
достаточно сохранить ссылку на полученную в колбеке таблицу. Примерно так:
Код
gTrade = {}
function OnTrade(t)
 gTrade = t
end
function main()
--в gTrade будет последняя сделка из OnTrade
end
 
Если я не правильно Вас понял, то опишите задачу подробнее.
SearchItems
 
Цитата
Андрей 77 написал:
В данном случае замедления не будет, а удобство налицо - fn один раз приводится для любых проверок/выборок с любым набором параметров. А раз все равно getItem используется, то такой подход дает максимальное удобство при сохранении скорости. Конечно, если понадобится другой тип выборки (например qty > 1 and qty < 10) то придется отдельную функцию писать.
Добрый день.
А не могли бы Вы привести законченный пример с использованием этой универсальной функции поиска?
Задержка данных при обмене с сервером
 
"для стакана я определяю не задержки а интервал поступления." тогда причем тут задержки, да еще и на игровом сервере?

"У меня получилось, что на вашем тестовом сервере часы отстают на 0.9 сек." отстают от чего? как Вы это измеряли?
Задержка данных при обмене с сервером
 
И как Вы определяете задержки, если на стакане нет метки времени?
Задержка данных при обмене с сервером
 
Цитата
Николай Камынин написал:
Добрый день,
Написал тест для исследования очередей заявок (стаканов).
Пустил его на вашем демо-сервере.
Понятно, что это тестовый сервер.
Но уж больно интересная картинка.
Если не военная тайна,
может кто объяснит эти периодические зависания обмена на 40 секунд
Вот картинка:

спасибо
Добрый день.
Выше Вам уже предлагали выслать нам данные для анализа.
Какое максимальное количество знаков после запятой может содержать min_price_step?
 
Цитата
Вячеслав + написал:
1. Планируется ли менять тип min_price_step с number на string.
3. Те же вопросы для любой переменной типа number c вещественной частью, возвращаемой через QLua API (пока столкнулся только с min_price_step).
1. Нет, не планируется.
2. для любого другого значения точность определяется либо параметром scale на инструменте, либо точность равна 2 если речь идет о деньгах -  лимиты, обороты и т.п.
про колбеки
 
Просто есть два подхода в использовании Lua:
1. Вы пишете на Lua и тогда корутины это то что Вам надо
2. Lua используете как язык для связки своих библиотек и QUIK. В этом случае реализация полностью на ваших плечах.
Но я все еще не понимаю полностью как Вы хотите вызывать функции одного работающего скрипта из другого. Проблем и ограничений в таком подходе явно больше чем преимуществ.
про колбеки
 
А корутины чем Вас не устраивают?
Полностью ли выполнена заявка?
 
Я такой ситуации не представляю.
Полностью ли выполнена заявка?
 
Цитата
Constantin написал:
Цитата
Imersio Arrigo   написал:
А если неактивна, не снята, и balance != 0?
Хотелось бы услышать ответ на этот вопрос.
Добрый день.
Придумайте. пожалуйста, реальную ситуацию для такого случая.
про колбеки
 
Добрый день.
Если Вы подробнее расскажете о том что хотите нам будет проще принять решение о возможностях и способах реализации.
Задержка данных при обмене с сервером
 
Цитата
Николай Камынин написал:
Цитата
Michael Bulychev   написал:
Сервер 10 секунд занимался тем, что отдавал вам очередь более приоритетных данных. По моему, наиболее адекватная оценка будет по времени последней сделки на ликвидном рынке.
так как ТВС - это приоритетные данные, а вечером особо ничего срочного нет, но получаем все теже 0.2-10 секунд,
то Ваши рассуждения - это просто Ваши гипотезы, ничем не подтвержденные.
--------------------------------------------------------
мечтать не вредно, но бесполезно.
Добрый день.
1. Исследования о задержках надо показывать не нам, а Вашему брокеру.
2. Если хотите что мы попробовали разобраться в проблеме, то присылайте нам информацию для анализа:
- архив терминала без ключей;
- исходники скриптов которые крутились в этот момент;
- исходники Ваших библиотек, которыми вы измеряете время и все остальное;
А так, "по фотографии", очень сложно дать какие-либо рекомендации
про тики
 
Если тиковый источник данных построен не по параметру торгов, то для него используются обезличенные сделки (все сделки).
Какую задачу Вы решаете пытаясь сопоставить конкретную сделку тику в источнике данных?
про тики
 
Однозначно сопоставить можно только по номеру сделки, все остальное это примерные оценки.
про тики
 
Добрый день.
Это сделать невозможно.
Задержка данных при обмене с сервером
 
Цитата
тот самый написал:
показывает наиболее загруженные IP брокера и предлагает переподключиться на другой канал.
Как это выглядит? мониторинг загрузки серверов на стороне брокера?
Если так, то наверное это единственный надежный способ. Все остальные способы дают оценку некоторых несвязанных между собой  параметров.
Задержка данных при обмене с сервером
 
Добрый день.
На мой взгляд в том что Вы предлагаете больше вопросов чем реальной пользы. Это касается и синхронизации времени в отдельном приложении и повышения приоритета данных.
И о какой "приблуде" идет речь?
Полностью ли выполнена заявка?
 
Добрый день.
В заявке есть поле balance (остаток). Если заявка не активна и balance == 0 , то заявка исполнена полностью
Задержка данных при обмене с сервером
 
Сервер 10 секунд занимался тем, что отдавал вам очередь более приоритетных данных. По моему, наиболее адекватная оценка будет по времени последней сделки на ликвидном рынке.
Задержка данных при обмене с сервером
 
Цитата
Николай Камынин написал:
2 измерение запаздывания данных с сервера (зеленая линия) Это параметр LASTPINGDURATION
Добрый день.
Николай, в этой ветке я уже объяснял Вам что это за параметр и почему его нельзя соотносить с обычным ping-ом.
SearchItems
 
Код
function search_callback(p1, p2, p3)
   if p1==1 and p2==2 and p3==3
      --тут мы решили что уже хватит искать
      return nil
   end
end
В результат вернутся все ранее найденные индексы, включая последний, на котором вернули nil
SearchItems
 
Добрый день.
Сейчас функция обратного вызова должна возвращать true/false, предлагаю интерпретировать ситуацию с возвратом функцией nil, как конец выполнения SearchItem. Такая реализация устроит?  
не выгружается info.exe
 
Код
DS={};
function DS_6(cl,se)   -- создание источников тиков
    local int=INTERVAL_TICK;
    local x=cl..se..tostring(int);
    if DS[x]==nil then
        local ds,er=CreateDataSource(cl,se,int);ds:SetEmptyCallback();
        if err then 
            Log(err,"err_ds"); 
        else      
            message("ADD " .. x)
            DS[x]=ds;
        end
    end
end

function OnStop(s)
    stopped = true
end
function main()
    local n=getNumberOf("securities")
    for i=0, n-1 do
        sec = getItem("securities", i)
        if sec and sec.class_code == "SPBFUT" then
            DS_6("SPBFUT", sec.code)
        end
    end
    while not stopped do
        sleep(500)
    end
end
Этот код не приводит к зависанию ни на 6.17 ни на версии 7. Можете прислать нам архив терминала, либо самостоятельно снять полный дамп процесса после закрытия окна. Например с помощью ProcDump
не выгружается info.exe
 
На 6.17.3 не повторяется. Кроме того, приведенный выше код не "запускается" - DS_6 не вызывается, источники данных создаваться не будут.
не выгружается info.exe
 
Добрый день.
Сообщите версию терминала и приведите полный код, пожалуйста. Пока воспроизвести проблему у себя не удалось.
Задержка данных при обмене с сервером
 
Добрый день.
Возможно он называется не совсем понятно, но показывает ровно то, для чего был сделан. Если не устраивают результаты - используйте стандартный пинг.
Задержка данных при обмене с сервером
 
Добрый день.
В чем-то действительно есть сходство со стандартным пингом. Разница только в уровне реализации. Я имею ввиду сетевую модель OSI. Еще раз повторю - приоритет у таких сообщений в протоколе минимальный. Поэтому большие задержки могут в случае если:
  • достаточно интенсивный поток торговых данных на сервере и серверу есть что отправить клиенту кроме ответа на пинг;
  • клиент недостаточно быстро выбирает данные по сети от сервера. Это может быть по причине плохой связи либо "тормозов" терминала;
В общем ничего особенно страшного в больших числах нет, при условии что терминал в это время не испытывает проблем с получением данных.
Задержка данных при обмене с сервером
 
Добрый день.
Пинг, который Вы смотрите в параметре LASTPINGDURATION, не является пингом в классическом понимании (ICMP протокол). Это определенные данные, которыми терминал и сервер обмениваются в процессе работы. Приоритет таких сообщений очень низкий. Это значит что ответные "понги" клиенту будут отправляться только в том случае, если больше нет торговых данных в очереди на отправку. Этим и объясняется разница между приведенными выше данными.
ParamRequest vs CreateDataSource
 
Да, любые.
ParamRequest vs CreateDataSource
 
Цитата
Старатель написал:
Теперь бы ещё такую, но независимо от настройки «Получение данных»
ParamReques работает независимо от галочек. Вернее если включен "умный заказ", то ParamReques включает галочки на принимаемых классах и параметрах
ParamRequest vs CreateDataSource
 
Цитата
quio написал:
Получается, единственное отличие в наличии автоматической отписки после останова скрипта? (после CreateDataSource терминал сам отписку не выполняет)
Добрый день.
Отличие в том, что если нет соответствующей настройки в терминале, то не будет заказана история по параметру (тиковая или интервальная). Этот заказ предназначен для функции OnParam
dofile()
 
Видимо пути не настроены. Попробуйте прописать полный путь к lua.exe если он у Вас есть на машине.
dofile()
 
Добрый день.

os.execute("lua " .. <путь к Вашему скрипту>)
OnTransReply, status
 
1. Еще раз - "значение может быть nil" - в некоторых случаях это поле может отсутствовать в ответе на транзакцию. Если есть и оно не заполнено значит нечем его заполнять.
3. Возможно это проверяет торговая система. В транзакции нет привязки номера заявки к счету.
4. отдельный ответ от сервера QUIK.
OnTransReply, status
 
Добрый день.
1. В документации написано "значение поля может быть nil"
3. Подать транзакцию на перестановку заявок с разных счетов можно, если у вас прав достаточно.
4. на каждую переставленную заявку приходит отдельный ответ.
QUIK(версия 7.0.4.10), приколы
 
Добрый день.
Пришлите нам код индикатора на котором воспроизводится ошибка.
QUIK(версия 7.0.4.10), приколы
 
Добрый день.
Пришлите нам код индикатора на котором воспроизводится ошибка.
OnParam присылает нулевые колбеки
 
Добрый день.
По приведенному коду нельзя сказать ничего конкретного. На первый взгляд все работает корректно и вполне могут быть такие ситуации.
Коллекция объектов, Получение значений коллекции с помошью функции GET_COLLECTION_ITEM
 
Добрый день.
Поясните, пожалуйста, почему Вы связываете время доступа с пропуском элементов?
Страницы: Пред. 1 2 3 4 5 6 7 След.
Наверх