Open ipARTEM opened 3 years ago
Маловероятно. Я на этой версии квика сегодня утром запускался, на сколько помню. Все работало
Я обновил только Junior, значит если обновлю Quik на Брокере Открытие будет работать?
Я не могу этого знать, но в открывашке сегодня точно работал. Если правильно помню, утром была именно эта версия терминала, а потом было обновление (версию не посмотрел), и там тоже все работало. С "игровыми" версиями не работаю, там могут быть свои особенности
Ок, спасибо
У меня тоже QuikSharp не заработал на Quik-Junior 8.11.0.66. При попытке запустить QuikSharp.lua Квик виснет или завершается с критической ошибкой. На форуме Квик есть жалоба на некорректную работу lua-скрипта в Квик 8.11.0.66.
В общем, наступил понедельник. Текущая версия "боевого" терминала в открывашке - 8.11.0.66. Роботы взлетели без каких-либо проблем. Единственное, что могу предложить - это проверить, что вы используете самую последнюю версию библиотеки (в том числе файл QuikSharp.lua). В конце ушедшего года мы внесли изменения в методику определения версии терминала. Возможно, вы не обновлялись, и сейчас столкнулись с проблемами именно из-за этого,
Я понял, я .dll собирал из файла RobotDemo, там Lua не переделана. Сделал .dll из QuikSharpDemo всё заработало!
Странный подход (IMHO). Если Вы скачали полный исходный код, то наиболее корректным решением будет полная перекомпиляция всего решения на своей машине. Если все прошло без ошибок, то уже не так важно откуда вы dll забираете. Да и проверять потом проще. Если перестал работать "Ваш" робот, то для проверки запускаете демо-приложение. Если демка работает - значит проблема скорее всего в Вашем роботе. Если демка НЕ работает - значит возможно проблема более глобальна.
@ArcCosec, а у Вас как обстоят дела? Проблема решилась?
Я как временное решение эти дни использовал предыдущую версию quik. Сейчас всё перезалил и перекомпилировал, и всё заработало. Спасибо за помощь. Есть одна реплика и один вопрос.
Реплика. По поводу комментария ipARTEM. Когда перезаливаешь QuikSharp, недостаточно его откомпилировать и откомпилировать свой проект. Нужно еще удалить QuikSharp.dll из папки с исполняемым файлом своего проекта, чтобы подтянулась свежая версия QuikSharp.dll. По крайней мере у меня так.
Вопрос. Есть ли простой способ получать информацию, что в QuikSharp внесены критические изменения, и нужно скачивать свежий QuikSharp?
Случайно обнаружил, что в свежескаченном (12.01.2021) QuikSharp не работает пример DemoRobot: зависает на строчке
_quik = new Quik(Quik.DefaultPort, new InMemoryStorage());
Тестировал на демо-квике 8.11.0.66.
Коллеги, проверьте, пожалуйста, у себя. Это проблема библиотеки или у меня что-то не так?
@ArcCosec, Попробуйте сегодняшнюю версию. Должно работать.
Теперь предыдущую строчку (создание _quik) проходит нормально. Входит в позицию и тут же зависает на строке 611 (файл FormMain.cs):
position.entranceOrderNumber = _quik.Orders.GetOrder_by_transID(tool.ClassCode, tool.SecurityCode, position.entranceOrderID).Result.OrderNum;
с исключением System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
Параметры (ClassCode, SecurityCode, OrderID) вызова метода GetOrder_by_transID корректные. Причем, если пошагово (F11) зайти в этот метод, то номер заявки возвращается нормально. И, кстати, какой Lua-аналог метода GetOrder_by_transID? Я сходу не нашел.
Явного аналога этой функции в Lua нет. Я ее делал для удобства. Немного переделал робота, чтобы оперативно решить проблему. Можете забирать. Однако, учитывайте, что эта реализация робота сильно далека от нормальной. Лучше сделать что-то свое, с различными проверками результатов и обработкой ошибок.
Ошибка исчезла, но появилась другая )). Набрав лонговую позицию (16 транзакций), робот зачем-то отправил транзакцию с отрицательным количеством -1 и на этом завис. Может он хотел закрыть позицию таким образом)).
Я пишу свой велосипед. Пока еще плохо ориентируюсь в библиотеке, и на примеры смотрю как на учебник. Раз уж пошла такая пьянка, чтобы два раза не вставать, можно попросить еще немного поправить код. При каждом скачивании библиотека не компилируется или работает с ошибками, и приходится вносить одни и те же исправления:
Что касается работы робота: Похоже, как-то неправильно он работает именно у Вас (возможно как раз из-за демо-терминала). Данный робот никогда не должен набирать позицию больше чем указано в поле "Количество торгуемых контрактов". По умолчанию - это один контракт, т.е. размер позиции никогда не должен быть больше 1. У меня, при проверке в боевом режиме, все работает корректно.
Спасибо вам за пункты 1-3. У меня, правда, пункт 2 почему-то не реализовался. Т.е. в проекте Profiler ссылка на QuikSharp присутствует (она и раньше была), но в свойствах ссылки на QuikSharp не указан путь (и раньше не был указан). Приходится удалять ссылку на QuikSharp, и заново добавлять. Посмотрите, пожалуйста, что там не так с путем.
Что касается пунктов 4-5. Полностью вас поддерживаю в том, что ценность библиотеки в стабильной работе в боевом терминале. Но я же просил немного о другом. Уверен, что популярность библиотеки идет только ей на пользу. И знакомство с библиотекой начинается обязательно с демо-квика. До сегодняшнего дня после первой компиляции высыпалось пару-тройку десятков ошибок, и неискушенный программист-любитель навсегда уходил, считая библиотеку сырой поделкой. Если вы поправите пункт 2, ошибок компиляции не будет. Но на демо-бумагах ни RobotDemo, ни QuikSharpDemo не заработают. И далеко не каждый продолжит выяснять, почему демонстрационные примеры "из коробки" не работают.
Считаю критически важным, чтобы первое впечатление от библиотеки не смазывалось её неработоспособность на демо-квике без допиливания. В данном локальном случае речь идет о добавлении к существующим 7 классам еще один демо-класс. Причем, не в самой библиотеке, а в демо-примерах. Мне кажется, это абсолютно никак не повлияет на стабильность и производительность в боевом режиме, но существенно увеличит привлекательность библиотеки у начинающих её осваивать.
Я так понимаю это связано с переходом на Lua 5.3.5 и Lua 5.4.1. Подскажите, пожалуйста, что нужно сделать, чтобы библиотека заработала?