Йцукен (Все сообщения пользователя)

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

Страницы: 1 2 3 След.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Ziveleos написал:
но для Lua эти результаты равны
В Lua для "ничто" и nil ошибки разные:
Цитата
> math.floor()
stdin:1: bad argument #1 to 'floor' (number expected, got no value)
stack traceback:
       [C]: in function 'math.floor'
       stdin:1: in main chunk
       [C]: in ?
> math.floor(nil)
stdin:1: bad argument #1 to 'floor' (number expected, got nil)
stack traceback:
       [C]: in function 'math.floor'
       stdin:1: in main chunk
       [C]: in ?

А касательно вашего примера
Цитата
TGB написал:
вызов функции справа от равенства считается выражением. В выражении функция, не возвращающая результат, заменяется на nil.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
 
Цитата
Nikolay написал:
Но тогда, необходимо хотя бы подтверждение от поддержки.
Да чё-то они не отвечают.
os.sysdate()
 
Если также считать разницу между os.time() и os.clock(), то дельта не меняется при перезапуске скрипта.
os.sysdate()
 
os.time() меняется на несколько мс раньше os.sysdate()
Ниже разница между os.time() в момент смены секунды и os.sysdate() (при системном таймере 15.625 ms).

Код
  for i = 1, 10 do
    local t
    local t0 = os.time()
    repeat t = os.time() until t0 ~= t
    local s = os.sysdate()
    message(string.format("%.3f ms", 1000 * (t - os.time(s)) - s.mcs / 1000))
  end

Каждый блок - отдельный запуск скрипта в одном и том же терминале.
Скрытый текст
Скрытый текст
Скрытый текст
Скрытый текст

Почему при перезапуске скрипта дельта меняется?
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
 
Цитата
Serge123 написал:
синхронизирую часы ПК с ntp-сервером
Какой ntp-сервер используете?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Йцукен написал:
Но нужно понимать, что нельзя в таком случае в разных потоках работать с одной стороны очереди.
Если нужно использовать очередь LIFO в разных потоках, то лучше воспользоваться потокобезопасными функциями table.sinsert / table.sremove
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
Йцукен написал:
tbl[#tbl] -- удалить последний элемент таблицы
Опечатался. Должно быть так:
Код
tbl[#tbl] = nil          -- удалить последний элемент таблицы

Но умные люди и так всё поняли, в отличие от недоделанного бота.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
подход дает возможность, из одного подхода создавать разные очереди?
Не, ну если вам нужно одновременно для одной очереди и FIFO и LIFO, тогда да, очередь с двумя индексами более подходящая под эту задачу. Но нужно понимать, что нельзя в таком случае в разных потоках работать с одной стороны очереди. В разных потоках можно только FIFO: в одном потоке положил, в другом вытащил.
Но если используется для конкретной задачи LIFO, то не стоит усложнять. Достаточно классических методов работы с таблицами.

Цитата
VPM написал:
В Вашем примере меня сильно смущает вот этот момент self[idx] = nil дыр не будет?
Каких дыр? Мы вынули последний элемент таблицы, и присвоили ему значение nil. В таком случае оператор # работает корректно.
Но я просто привёл пример, как можно упростить ваш код, если вам "кровь из носу" нужно ООП.
А вообще для LIFO достаточно:
Код
tbl = {}         -- создать таблицу
tbl[#tbl+1] = v     -- добавить в конец таблицы
v = tbl[#tbl]       -- получить последний элемент таблицы
tbl[#tbl]           -- удалить последний элемент таблицы
Но вы это и без меня знаете  :wink:
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Но иногда  просто нужен тупой код прямолинейный как стрела
Прямолинейный для LIFO - это работа с таблицей стандартными методами.
Поскольку у вас добавление и извлечение всегда с конца таблицы, то как функции table.insert / table.remove, так и обычное присваивание последнему элементу в таблице будет работать вполне себе быстро и понятно.
Зачем городить очередь с двумя индексами для LIFO - большая загадка  :shock:
Можно ли уточнить задержку в Интернете до выставления заявок?, Как можно раньше выставить заявку после начала их приёма
 
Цитата
Serge123 написал:
waitForDateTime(datetime)

Что за функция?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
TGB написал:
в рассмотренном варианте при запуске нескольких скриптов сразу они начинают выполняться быстрее, чем с кодами в OnInit и  body.
Это теоритическое предположение или есть исследования на эту тему?
Как настроить отметки покупки-продажи
 
Цитата
Pivaev Maxim написал:
Ваше пожелание сохранения на графике меток сделок за предыдущие торговые сессии зарегистрировано.
Думаю целесообразно сохранять данные о сделках в локальный файл, и при открытии графика считывать данные из него.
Функция getDepoEx может приводить к зависаниям терминала
 
nikolz, в итоге я наблюдал зависание скрипта на функции getDepoEx, что приводило к зависанию основного потока (#1) или потока main (#9). Что подтвердил TGB, единственный, кто проверил, а не стал строить тут гипотезы с надуванием щёк.
----------------------
Читать тоже надо учиться вам.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Ziveleos написал:
Функции, в том числе и type, работают с аргументами.
А я про что?

Цитата
Ziveleos написал:
message(type())
Это как раз тот случай, когда в type ничего не передаётся:
Код
message(type(getDepoEx("", "", "", "", 0)))   -->   bad argument #1 to 'type' (value expected)
message(type(getSecurityInfo("", "")))   -->   bad argument #1 to 'type' (value expected)
потому что getDepoEx, getSecurityInfo, в случае ошибки не возвращают ничего (процедуры, другими словами).
В отличие от, например,
Код
message(type(getItem("", 0)))   -->  nil
когда getItem возвращает nil в случае ошибки
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Ziveleos написал:
Тип nil (нуль) имеет одно единственное значение, nil
Цитата
Ziveleos написал:
type (v) Возвращает тип любого аргумента
type ожидает аргумент с любым значением, в т.ч. и nil.

Сравните:
Код
type((function () return nil end)())
type((function () end)())

Вот такой код
Код
if type(getSecurityInfo(...)) == "table" 
будет падать с ошибкой
Цитата
bad argument #1 to 'type' (value expected)
потому что type ожидает значение, а getSecurityInfo превращается в процедуру, которая ничего не возвращает, т.е. не передаёт аргумент.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Ziveleos написал:
Ничего - это и есть nil.
Нет.

Цитата
Ziveleos написал:
Попробуйте так
А попробуйте так:
Код
message(type(getDepoEx("", "", "", "", 0)))
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
TGB написал:
ошибка синхронизации
Думаю имеет место логическая ошибка в библиотеке QMargin, из-за которой не происходит выхода из функции getDepoEx.

Решил проверить, жив ли основной поток, когда main стоит на getDepoEx.
Скрытый текст
При подключении к серверу и запуске скрипта пишет:
Цитата
Number depo_limits: 4
OnParam
Т.е., основной поток вполне себе жив. Но в main не происходит выхода из getDepoEx. После остановки скрипта кнопкой "Остановить" требуется перезапуск квика, потому что нормальная работа Lua-скриптов уже не возможна.
Вот такая пасхалочка. При чём здесь настройка "Показывать уровень позиции" на графике - не понятно. Но при снятой галке зависание не наблюдается.

Попутно обнаружилась ещё одна ошибка. В документации сказано:
Цитата
В случае ошибки функция возвращает «nil».
На самом деле, getDepoEx ничего не возвращает. Убедиться в этом можно, выполнив код:
Код
message(tostring(getDepoEx("", "", "", "", 0)))
Будет ошибка:
Цитата
bad argument #1 to 'tostring' (value expected)

И такие функции в QUIK сплошь и рядом, тот же getSecurityInfo:
Код
message(tostring(getSecurityInfo("", "")))
Как настроить отметки покупки-продажи
 
У меня в 12.8.3 огромный колокол
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
nikolz написал:
Если бы сразу написали что и как делали, то и вопросов Вам бы я не задавал.
В первом сообщении всё написано. Разуйте глаза уже или брысь из темы.
Функция getDepoEx может приводить к зависаниям терминала
 
nikolz, не в обиду: от вас помощи мне точно не нужно, вы не умеете читать, до вас очень туго доходит (если вообще доходит) смысл написанного. Вы даже первое сообщение не прочитали, зачем залезли в тему со своими комментариями - мне не понятно.
Ну а что касается поиска причины, то это уже не ко мне вопрос.
Я локализовал проблему, предоставил достаточно данных, чтобы проверить и убедиться в наличии проблемы.
Вообще торгую только на срочном рынке. Но вот в демке тестировал фондовую секцию, и в какой-то момент квик завис. Я сохранил все данные, чтобы иметь возможность их предоставить.
Для проверки и запуска скрипта подключение к серверу не требуется.

Если это никому не нужно, включая разработчиков, то мне тем более: на боевом квике getDepoEx не использую.
Но когда посреди торгов, у вас неожиданно всё зависнет, - прибежите на форум.
Функция getDepoEx может приводить к зависаниям терминала
 
Товарищи, которые пишут тут: "я проверил на своём квике, и у меня не зависает", я и без вас знаю, что скрипт зависает не всегда.
В getDepoEx есть ошибка, которая при определенных условиях, может привести к зависанию терминала. Предполагаю, что это зависит от открытых позиций по бумагам. Но, какие именно данные приводят к зависанию - мне не известно. Вам тем более.
Поэтому, не надо мне тут писать, не проверив на предложенных данных. Ваши сообщения не несут никакой смысловой нагрузки.
Функция getDepoEx может приводить к зависаниям терминала
 
nikolz,
вы сначала проверьте свой код, на архиве из первого сообщения.
А коль не можете - брысь из темы.
Функция getDepoEx может приводить к зависаниям терминала
 
Нафига здесь циклы, слипы? :?:
Товарищи, которые тут советуют вкрячить циклы со слипами, вы сначала проверьте свой код, на архиве из первого сообщения. Потом можно предметно что-то обсуждать.
Я просто диву даюсь :shock:
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Йцукен написал:
Предлагаю заинтересованным подтвердить или опровергнуть это.
Для этого нужно скачать архив рабочего места QUIK по ссылке:  https://cloud.mail.ru/public/rrAb/8FTpZstGW
В архиве QUIK 12.8.3.4
Проверил на версии 12.8.4.9 - результат аналогичный.
Для этого сначала распаковываем файлы из архива по ссылке выше, а потом - из quik_12.8.4_upd.zip, подтвердив замену файлов.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Nikolay написал:
Цитата
Вы это проверили, запустив скрипт в квике из архива?
На своем.
Мы не знаем, какие именно условия приводят к зависанию в getDepoEx, и вы не можете в точности воспроизвести ситуацию, которая могла бы привести к зависанию.
Поэтому, ваш тест и выводы, основанные на нём, не конструктивны.
Функция getDepoEx может приводить к зависаниям терминала
 
*Так, при запросе данных по GAZP или с датой расчёта 20260215 не приводит к зависанию.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Nikolay написал:
Запустил Ваш скрипт у себя, изменив данные и дату limit_kind на сегодняшнюю.
Очевидно, что getDepoEx приводит к зависаниям не всегда, иначе весь форум бы пестрил от сообщений пользователей о проблеме.
Цитата
Йцукен написал:
Мне удалось локализовать проблему. Так, при открытом графике с включенной настройкой показывать уровень позиции, запрос позиции через getDepoEx по инструменту, график которого открыт, может приводить к зависанию.
Но, очевидно, на это влияет не только наличие открытого графика, но ещё и то, какие позиции открыты. Так, при запросе данных по GAZP или с датой расчёта не приводит 20260215 к зависанию.

Цитата
Nikolay написал:
И с вашими данными, очевидно не подходящими, тоже нет проблем.
Вы это проверили, запустив скрипт в квике из архива?
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Nikolay написал:
Цитата
Йцукен написал:
Вы код смотрели? При чём тут sleep?
При том, что его там нет. Именно это и приводит к "зависанию" терминала.
Серьёзно?  :shock: А если нам нужно, чтобы скрипт что-то рассчитал и завершил работу?

Изменил скрипт в таком виде:
Код
function main()
  local n = getNumberOf("depo_limits")
  message("Number depo_limits:" .. n)
  if n > 0 then 
    getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
  end
  message("Завершение работы main.")
end

Скрипт стоит, как вкопанный на getDepoEx:

Даже не представляю, куда тут вкрячить sleep?  :what:
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Nikolay написал:
Это давно известный факт, и я про него написал выше "если убрать sleep, терминал "умрет""
Вы код смотрели? При чём тут sleep?

Цитата
Nikolay написал:
Не очевидно совсем.
Ну а мне очевидно, что между OnInit и main может вклиниться какой-нибудь колбэк.

Цитата
Nikolay написал:
Но обычно, все же, скрипты пишутся для работы во всех режимах, а не в одном.
Вот именно. Поэтому определение стартовых данных в событийной модели целесообразно делать до main.

Цитата
Nikolay написал:
Сначала необходимо узнать есть в таблице записи, запросив размер таблицы.
В данном случае размер таблицы "depo_limits" не пустой, в ней четыре строки.
Я лишь привёл минимальный код, демонстрирующий ошибку.
И как выше написал: независимо куда вы воткнёте getDepoEx, скрипт будет работать некорректно.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Вызов getDepoEx в main скрипта
Код
   function   main ()
   getDepo Ex( "NC0011100000" ,  "10547" ,  "SBER" ,  "NL0011100043" ,  20260216 )
 end   
не приводит к зависанию терминала. Но, несмотря на отсутствие в main цикла скрипт не завершает свою работу самостоятельно и нагружает один поток процессора на 100%.

Скрипт останавливается кнопкой "Остановить". Но после нескольких циклов запуска-остановки вываливается с ошибкой:
Цитата
ACCESS VIOLATION at address 00007FFE43DE431F
Функция getDepoEx может приводить к зависаниям терминала
 
Вызов getDepoEx в BODY скрипта
Код
getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
также приводит к зависанию.

Цитата
Nikolay написал:
Начальное заполнение можно выполнить и при запуске main
Вызов getDepoEx в main скрипта
Код
function main()
  getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
end
не приводит к зависанию терминала. Но, несмотря на отсутствие в main цикла скрипт не завершает свою работу самостоятельно и нагружает один поток процессора на 100%.
Вы можете убедиться в этом, скачав архив по ссылке в первом сообщении.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Nikolay написал:
но не в OnInit точно. Начальное заполнение можно выполнить и при запуске main, в начале тела функции.
Почему? Можете привести ссылку на раздел в документации, запрещающий вызов qlua-функций в OnInit?

Цитата
Nikolay написал:
прежде чем выполнять какие-то запросы, необходимо дождаться, что данные есть в терминале
Чтобы узнать, есть ли данные в терминале, необходимо выполнить запрос. Сюрприз.

Цитата
Nikolay написал:
Если скрипт стартует вместе с терминалом, а брокер вызывает OnCleanUp, то пока данные не загрузятся, вызывать getDepoEx не имеет смысла. Поэтому - сначала старт скрипта, потом проверка наличия данных, потом запрос данных.
А если скрипт запускается при установленном соединении?
Очевидно, что если определять стартовые позиции в main, то есть риск неверной работы скрипта, если в это время будет вызван колбэк OnDepoLimit.
Функция getDepoEx может приводить к зависаниям терминала
 
А где вы предлагаете определять стартовые (при запуске скрипта) позиции по бумагам и деньгам при использовании событийной модели?

Цитата
Nikolay написал:
А здесь ему пинок - иди выполни qlua метод.
Так может вообще запретить вызывать qlua-функции в колбэках? Только сюрприз: они все стучатся в основной поток, и main будет ждать завершения функции.
Функция getDepoEx может приводить к зависаниям терминала
 
Цитата
Nikolay написал:
вызов getDepoEx внутри колбека OnInit выглядит странно
Для меня странно выглядит сам факт зависания.
Во-первых, в руководстве ничего не сказано, что getDepoEx нельзя вызывать внутри OnInit.
Во-вторых, если есть ошибка в функции getDepoEx, приводящая к зависанию, мы не знаем, где она может ещё всплыть.
Функция getDepoEx может приводить к зависаниям терминала
 
В некоторых случаях функция getDepoEx может приводить к зависаниям терминала.
Мне удалось локализовать проблему. Так, при открытом графике с включенной настройкой показывать уровень позиции, запрос позиции через getDepoEx по инструменту, график которого открыт, может приводить к зависанию.
Предлагаю заинтересованным подтвердить или опровергнуть это.
Для этого нужно скачать архив рабочего места QUIK по ссылке: https://cloud.mail.ru/public/rrAb/8FTpZstGW
Распаковать в любое место на диске и запустить info.exe
В окне "Доступные скрипты" добавить скрипт getDepoEx.lua (лежит в архиве) и запустить его.
Код
function OnInit()
  getDepoEx("NC0011100000", "10547", "SBER", "NL0011100043", 20260216)
end

Можно удалить файл info.wnd, чтобы запустить info.exe без настроек. А затем открыть график Сбербанка и включить в настройках графика "уровень позиции".
Задавать списки классов и кодов инструментов, для которых будут вызываться колбэки OnAllTrade, OnParam, OnQuote в Lua-скрипте
 
Цитата
Pivaev Maxim написал:
ограничив получение данных терминалом по определенным инструментам в меню Система / Настройки / Основные настройки... во вкладке Программа / Получение данных / Котировки, выбрав параметр "Формировать список обновляемых инструментов и параметров по выбранным классам:"

Кажется, это вредная рекомендация: в руководстве пользователя QLua для функции ParamRequest указано:
Цитата
Для корректной работы функции включите в настройках Рабочего места QUIK признак получения данных «Исходя из настроек открытых пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел «Программа» / «Получение данных»).
Да и для работы CreateDataSource рекомендуется также включить т.н. "умный" заказ данных.
Кроме того, у пользователя может быть открыта таблица текущих торгов, и все изменения по всем инструментам будут вызывать колбэки во всех запущенных скриптах. Да и скриптов может быть запущено несколько. Одному скрипту нужны данные по одним бумагам, другому - по другим.
То же касается и обезличенных сделок: может быть открыта таблица обезличенных сделок, может быть запущено несколько скриптов.

Поэтому, считаю разумным сделать возможным задавать списки классов и кодов инструментов, для которых будут вызываться колбэки в Lua-скриптах.
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
 
Цитата
Serge123 написал:
Я в 6:50:00 при начале приёма заявок, когда сервера перегружены, не раз наблюдал потери onTransReply.
Вопрос поставлен так:
2) Может ли быть такое, что данные на рабочее место поступили, а колбэк не был вызван?

В вашем случае ответ на транзакцию QUIK получил, в таблице транзакций отображался?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Скрытый текст
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
TGB написал:
Вы сначала создаете таблицу фильтрации со значениями полей фильтрации заведомо не совпадающими с ожидаемыми данными.
Ну т.е., фактически запросить данные, обработать их (как минимум сравнить с предыдущими).
Логичней было бы, чтобы терминал не дублировал пропущенные колбэки, по которым скрипт не получит новых данных.
Хотя, кому-то наоборот нужна вся история изменений (для индикатора какого-нибудь). Не зря же есть CreateDataSource для параметров инструментов. Но тогда QUIK должен хранить всю историю изменений.
В общем, этот момент вам надо продумать.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
TGB написал:
полуинтеллектуальный робот-спамер
Полуробот, скорее.
Цитата
TGB написал:
без способности учета контекста обсуждаемой темы при генерации спама.
У него памяти не хватает, чтобы загрузить весь контекст в память. Вон весь форум загадил кучей новых тем про нехватку памяти.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
В любой теме, где есть обсуждение,
Он уже оставил свой след.
Не вникая в суть предложения,
Он вещает свой «важный» бред.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
TGB написал:
Вы опять только пишите не читая.
А зачем, если можно высказать своё "важное" мнение, прочитав только последний комментарий?
Кому мешает контекстное меню в таблицах рабочего места QUIK, созданных на Lua?
 
Цитата
Ziveleos написал:
Или не хотят. "Проблемы индейцев шерифа не волнуют".
Потому я и создал эту тему. Может, "шериф" думает, что всего 1,5 индейцам это меню мешает.
Давайте проведем перепись населения, кому это меню не впёрлось. Может, целое племя наберётся?
Кому мешает контекстное меню в таблицах рабочего места QUIK, созданных на Lua?
 
Цитата
Ziveleos написал:
оперативность арки, как всегда, на высоте.
Они не могут добавить в код одну строчку с оператором if ?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
Цитата
TGB написал:
Если вы не хотите повторно обрабатывать данные, то фильтруйте их.
А как вы узнаете, что это повторы, пока не обработаете их?
Цитата
TGB написал:
Для фильтрации данных можно создать, для соответствующего вида коллбека, таблицу с фильтруемыми полями, обновляемыми при поступлении новых данных и использовать эту таблицу в начале коллбека с тем. чтобы не обрабатывать ненужные вам повторы.
Вам надо будет сначала, как минимум запросить данные, чтобы сравнить с предыдущими.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
А смысл несколько раз подряд обрабатывать, например OnQuote, если каждый раз мы будем обрабатывать одни и те же данные?
Или вы предлагаете хранить данные для каждого колбэка?
Кому мешает контекстное меню в таблицах рабочего места QUIK, созданных на Lua?
 
В QUIK, наверное, с версии 9, в таблицах рабочего места QUIK, созданных на Lua, добавили всплывающее контекстное меню "Сортировать ...", которое вызывается при клике правой клавишей мышки в любой ячейке таблицы.

На мой взгляд это меню лишнее, поскольку дублирует функционал сортировки из контекстного меню при клике на название столбца. Кроме того, сортировка включается кликом по названию столбца с зажатой клавишей Ctrl или Shift.
Всплывающее контекстное меню забирает три колбэка QTABLE_RBUTTONDOWN, QTABLE_RBUTTONDBLCLK, QTABLE_RBUTTONUP, на которые можно было бы повесить полезные пользовательские функции.
Нет, фактически колбэки срабатывают, но пользоваться ими не удобно из-за всплывающего меню, которое потом надо закрывать.
Возможно разработчики решили, что это стильно, модно, молодёжно. Но лично мне не удобно.
Напишите в комментариях, вам мешает это контекстное меню?
Как зарегистрировать пожелание?
 
Цитата
Pivaev Maxim написал:
Можете написать Ваше пожелание в любой ветке форума, и оно будет зарегистрировано в том случае, если описываемый функционал действительно отсутствует.
Вот тут написал: https://forum.quik.ru/forum8/topic9445/
Что-то ещё требуется?
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
 
TGB, а что делать, если между слипами данные поступили по инструменту несколько раз?
Как зарегистрировать пожелание?
 
Как тут зарегистрировать пожелание?
Страницы: 1 2 3 След.
Наверх