Озадачился сделать dll не на студии, а с помощью MSYS2 . Собирается, но не работает в квике ((
Есть подозрение, что не линкуется как следует lua53.lib, погуглил исходный код (чтоб собрать под тем же MSYS2) - а нету, может, плохо искал. Вылезают ссылки с уже откомпилированной библой.
Переношу аккуратно папку с квиком на сервер, запускаю квик, и выдаётся вот что:
Периодически в течении 2-х лет провожу такую процедуру (отлаживаю на домашнем компе, потом копирую квик на сервер), ранее проблем не было вообще. Как можно решить проблему?
TGB,а как квик может обновиться "неожиданно для вас"? Появляется оповещение "На сервере появилась новая версия, обновить?" Если нажмёте кнопочку "нет" , то будете работать на старой версии.
Владимир написал: Так делайте на тесте - получайте текущие значения не из TTT, а из файла
Дык, визуализация ж нужна! На графике квика можно посмотреть, как и что, понаставить меток, где купил, где продал, воочию, так сказать, оценить стратегию.
Чего не сделаешь с бездушным файлом с миллионами байтов...
HHMMSS = getInfoParam("SERVERTIME")
if string.len(HHMMSS) == 7 then hcc, mcc, scc = string.match(HHMMSS,"(%d)%p(%d%d)%p(%d%d)") else hcc, mcc, scc = string.match(HHMMSS,"(%d%d)%p(%d%d)%p(%d%d)")
end
hcc = tonumber(hcc) if type(hcc) ~= 'number' then hcc = 0 end
mcc = tonumber(mcc) if type(mcc) ~= 'number' then mcc = 0 end
scc = tonumber(scc) if type(scc) ~= 'number' then scc = 0 end
потом работаю с часами и минутами:
Код
if type(hcc) == 'number' and type(mcc) == 'number' then
if hcc > 10 and mcc < 5 then
-- какие-то действия
end
end
И на строку "if hcc <= 10 and hcc >= 9 and mcc < 5 then" периодически вылетает вышеупомянутый ворнинг. Почему он выскакивает? Ведь вроде все преобразования в числа и дополнительные проверки произведены!
s_mike@rambler.ru, т.е. чтобы определить, что последняя или предпоследняя свеча является закрытой, нужно знать, идут ли торги. А прямой функции, позволяющей это определить, я так понимаю, нет?
Использовал относительный путь, но имеется несколько папок с квиками от разных брокеров и мой фреймворк почему-то "путает" папки (папки типа "С:\Quik1" , "C:\Quik2" , и т.д.). Поэтому решил использовать абсолютный путь для исключения ошибок. Как определить абсолютный путь?
Запускаешь скрипт первый раз - выдаёт ошибку на скрине. Запускаешь второй - квик слетает, не оставляя дампа. Имеет смысл снять дамп с помощью for_dump ?
Ну вот, обновил до 8.5.2.11 (до этого была 8.3.2.4) , и при запуске работавшего ранее без проблем скрипта квик вылетел с сообщением что-то вроде "закрыто рабочее место QUIK". Откатил обратно к 8.3.2.4 - всё нормально работает.
Anton написал: где происходит урезание 64 бит до 32 и где signed/unsigned mismatch в сравнениях, скорей всего откуда-то оттуда ноги растут
unsigned переменных нет вообще, код написан очень просто. Я просто взял проект из VS2013, поместил в VS2017, открыл, пофиксил все ворнинги, на которые ругалась новая версия VS, переключил выход с 32bit на 64bit - и всё!
Т.е., отлично работающий код, с многократно пофиксиными багами на периоде 3,5 года, просто перекомпилирован на новую битность - и не работает!
Пытаюсь постепенно переходить на 64bit QUIK )) Имеется сложный фреймворк, связка lua с .dll , памяти занимает много, но выделение памяти контролируется.
Ранее .dll под 32bit компилировал в VS2013, работало всё на последней 32bit версии QUIK на слабом ноуте с 4ГБ памяти с процессором Intel (так же всё работало и на выделенном сервере)
Под 64bit компилируется на VS2017, версия QUIK 8.3.2.4 , работает на достаточно мощном ноуте, 12ГБ памяти, но с процессором AMD.
32bit вариант мог работать неделями, не закрывая квик, и работало зараз по 5-6 роботов, проблем не было совершенно.
64bit запустил одного робота, работает около часа, потом QUIK внезапно слетает, даже приблизительную причину аварийной остановки определить невозможно, т.к. не остаётся ни дампов , ни каких-то записей в моём логгере, т.е. причина останова, по всей видимости, очень серьёзная.
Вопрос1: была у кого-нибудь такая ситуация?
Вопрос2: может это быть как-то связано с особенностями процессоров AMD?
Подскажите, пожалуйста, как перекомпилировать *.dll для работы с lua под новую версию QUIK, старая не работает по причине своей 32-битности, я правильно понимаю?
Все бы хорошо, но у меня скрипт работает с обратной связью, т.е. он не только отсылает через бот информацию на телефон, но и анализирует, какие команды бот получает с моего телефона.
Ого! А есть библиотеки LUA, которые позволяют осуществить подобное?
После некоторого периода возни с библиотеками, делающими вызов по http, плюнул на это, написал функцию, запускающую Internet Explorer с заданным URL, т.о., отсылал сообщение на телефон с Telegram.
Теперь Telegram через IE недоступен, буду реализовать такую же цепочку через Firefox с установленным анонимайзером.
Дмитрий, не сказал бы, что это нормально. Закончилась торговая неделя, хочется проанализировать данные, а программа конвертирует данные только по четверг ((
Разумеется, с помощью Qlua я получаю доступ к графику и вывожу свечи полностью за неделю, включая последний день - но зачем "костыли"? Почему бы не реализовать это полноценно в QMinEditor?
Сергей, если будет полезно, могу выложить (попозже) все собранные мной файлы для работы с инетом в QUIK.
На Win 7 64 bit работает, на сервер ещё не закидывал, но запросы проходят с 10-15 секундной задержкой (об этой проблеме писали выше), и побороть эту задержку никак не получается...
s_mike@rambler.ru, спасибо! А не в курсе, выключение квика таким способом происходит с сохранением рабочего пространства в файл basic.wnd (или в подобный) при установленном пункте в настройках "Сохранять настройки в файл при выходе"?