Зависание Quik

Страницы: 1
RSS
Зависание Quik, Намертво зависает после подгрузки индикатора
 
Разработчики Квик, Разумеется пользователи могут писать какой угодно бредовый код и совать его в программу. Система может ругаться какими угодно словами на такой мусор. Но допускать подвешивать кодом Quik так, что решать ситуацию приходится только сбросом в диспетчере задач - это нонсенс. Можно конечно приводить код и искать причину. Но во-первых наверняка я не первый такой и во-вторых нельзя допускать такой ситуации в принципе. Уж не знаю вопрос это или пожелание.
 
В обработчике луа я вписал бесконечный цикл.
что вы предлагаете делать терминалу?
 
Автор вопроса уже не новичок здесь, но к теме потоков QUIK, похоже, подошел только сейчас.
Не стоит ждать от разработчиков переработки архитектуры QUIK, лучше учесть специфику существующей.

Есть еще пара вариантов, кроме банального зацикливания, когда индикаторы (OnCalculate), выполняющиеся последовательно в основном потоке, не спешат вернуть управление QUIK, тормозя или блокируя его работу.

1. реальный вариант - есть алгоритмы, которые требуют очень большого объема вычислений. Когда-то мои простейшие алгоритмы требовали на QPILE нескольких минут для построения индикатора.
LUA + DLL (C++) дали выигрыш  по скорости в 5-6 порядков, но существенно более сильные алгоритмы мне пока не все доступны.

2. маловероятный вариант - некорректное использование средств Windows (типа WaitForMultipleObjects) для синхронизации потоков. Вряд ли автор их использовал, это больше относится к скриптам (роботам), чем к индикаторам.        
 
Цитата
Борис Гудылин написал:
дали выигрыш  по скорости в 5-6 порядков
В миллион раз? Серьезно??
 
Да, но еще и алгоритмы пришлось ускорить (скорость в ущерб памяти).
 
swerg написал:
В обработчике луа я вписал бесконечный цикл.
что вы предлагаете делать терминалу?Никаких циклов нет и близко, даже операторов.
Цитата
swerg написал:
В обработчике луа я вписал бесконечный цикл.
что вы предлагаете делать терминалу?
Никаких циклов нет и близко, даже операторов.  
 
Борис Гудылин, ни п.1, ни п.2. Последовательное ветвление по условиям, getCandlesByIndex, SetValue и пара массивов для сохранения предыстории. Мало, 100 строк кода. Это все.  
 
Сергей Королев, не пробовали с помощью промежуточных выдач (message()  или в файл протокола) локализовать проблемный участок? Устойчиво ли воссоздается ситуация? Есть ли зависимость от версий QUIK?  
 
Цитата
Сергей Королев написал:
Цитата
swerg   написал:
В обработчике луа я вписал бесконечный цикл.
что вы предлагаете делать терминалу?
Никаких циклов нет и близко, даже операторов.
ничего нет - но зависает.
стандартная сказка, не надоело?

если хотите решить проблему - приводите скрипт.
если хотети плакаться на жизнь и винить других - продолжайте в том же духе, у вас хорошо получается.
 
Цитата
swerg написал:
В обработчике луа я вписал бесконечный цикл.
что вы предлагаете делать терминалу?
многие среды такого рода операции опционально отслеживают. Например, из близких программ бесконечный цикл отслеживает амиброкер.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал
многие среды такого рода операции опционально отслеживают. Например, из близких программ бесконечный цикл отслеживает амиброкер.
это отлично, но что он с ним делает?
 
Цитата
swerg написал:
Цитата
   s_mike@rambler.ru  написал
многие среды такого рода операции опционально отслеживают. Например, из близких программ бесконечный цикл отслеживает амиброкер.
это отлично, но что он с ним делает?
Очевидно - останавливает скрипт с диагностикой.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Здесь без всякого цикла зависает:
Код
function main()
  table.ssort({1, 0}, function(a, b) return a[1] < b[1] end)
end
Код с ошибкой, но тем не менее.
Проблема именно в ssort и именно в main.
Надо делать так, как надо. А как не надо - делать не надо.
 
Ожидается реакция от разработчиков:
Зависает скрипт со "сложной" в плане кода сортировкой. В коде сортировки нет ошибки: если использовать table.sort или переместить из main в колбэк, то сортировка работает.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель,
Проблема изучается. Постараемся в ближайшее время дать ответ.
 
Добрый день,
Ошибка будет исправлена в одной из следующих версий программы.
Страницы: 1
Читают тему
Наверх