Нет, прослеживается зависимость от типа инструмента. Если написать:
x = Subscribe_Level_II_Quotes('SPBFUT','RIM2') y = Unsubscribe_Level_II_Quotes('SPBFUT','RIM2')
то x == true и y == true;
А если написать:
x = Subscribe_Level_II_Quotes('TQOB','SU24020RMFS8') y = Unsubscribe_Level_II_Quotes('TQOB','SU24020RMFS8')
то x == true и y == false.
На облигациях не работает что-ли... Вроде же 'RIM2' - это код инструмента фьючерса, а 'SU24020RMFS8' - код инструмента облигации. Или я что-то напутал? Может для облигаций какие-то другие значения подставлять нужно?
nikolz, не понимаю почему у вас этот код работает, а у меня нет. Я пробовал в версиях квика 9.2.3.15 и 8.9.0.107. Я застреваю в первом же цикле while Unsubscribe_Level_II_Quotes(cl,se)==false do sleep(5) end. Т.е. я получаю true при первой проверке на подписку на первый инструмент. Отписка у меня не происходит - цикл бесконечный.
Тоже не понял почему задача не выполнима. Я ее выполнил, и это было не так уж сложно для меня с небольшим опытом программирования. Данные, нужные мне, в таблицу выводятся. Но только до 200-го инструмента. И все - я упираюсь в количество открытых стаканов. А функция 'Unsubscribe_Level_II_Quotes()', которая должна их закрывать - их не закрывает. Я пробовал в одном цикле: открыть стакан, получить данные и тут же закрыть. Не получается. Пробовал порциями (вот эти 2 функции, которые сюда скинул): в одном цикле открываю 150 стаканов, получаю данные. В следующем цикле эти же стаканы пытаюсь закрыть. Опять не выходит. Пробовал на 9-й версии квика и на 8-й. Так скажите мне, господа - это все-таки я криворукий или эта гребаная функция 'Unsubscribe_Level_II_Quotes()' не работает.
Владимир написал: Вася, Справиться с этой проблемой невозможно никак. Даже если у Вас будет десяток стаканов. А обслуживать 2000 тикеров не так просто даже моему скрипту, у которого ни одного стакана нет, не было, и не будет (Борис, слышишь меня? :: ). Ваша же задача просто безнадёжна, в принципе невыполнима.
Вопрос скорости обработки в этой задаче не критичен.
Владимир написал: Вася, Справиться с этой проблемой невозможно никак. Даже если у Вас будет десяток стаканов. А обслуживать 2000 тикеров не так просто даже моему скрипту, у которого ни одного стакана нет, не было, и не будет (Борис, слышишь меня? :: ). Ваша же задача просто безнадёжна, в принципе невыполнима.
А по функции 'Unsubscribe_Level_II_Quotes()' что можете сказать? Почему она не выполняет ту задачу, которую должна выполнять? Или может я не правильно ее применяю?
Продублирую еще раз: если в функции 'Unsubscribe(list)' после 'local x =Unsubscribe_Level_II_Quotes(class_code, sec_code)' написать 'local y = IsSubscribed_Level_II_Quotes(class_code, sec_code)', а затем вывести значения x и y в таблицу, то x будет false, а y будет true.
Вася написал: цикл убрать, то функция отрабатывает и отписки не происходит.
Как определили, что не происходит?
Если в функции 'Unsubscribe(list)' после 'local x =Unsubscribe_Level_II_Quotes(class_code, sec_code)' написать 'local y = IsSubscribed_Level_II_Quotes(classCode, secCode)', а затем вывести значения x и y в таблицу, то x будет false, а y будет true.
тут опять я скопировал разные названия переменных sec_code и secCode, но прошу не обращать внимания на это - в коде названия переменных одинаковое.
Задача такая возникла из-за того, что мне нужно вывести в таблицу данные на основании расчетов 2000 стаканов. Т.к. у многих брокеров есть ограничение на 200 стаканов, то я хотел по очереди открывать и закрывать котировки 150 стаканов.
Вася написал: цикл убрать, то функция отрабатывает и отписки не происходит.
Как определили, что не происходит?
Если в функции 'Unsubscribe(list)' после 'local x =Unsubscribe_Level_II_Quotes(class_code, sec_code)' написать 'local y = IsSubscribed_Level_II_Quotes(classCode, secCode)', а затем вывести значения x и y в таблицу, то x будет false, а y будет true.
Внутри цикла while переменная x не меняется. Если окажется not x эквивалентно true то цикл бесконечный.
Ну этот цикл я сделал на тот случай, что вдруг отписка от котировок происходит не сразу, а через сколько-то миллисекунд. Если это произойдет, то x должен поменяться, я думаю. Но даже если я ошибаюсь, то, если цикл убрать, то функция отрабатывает и отписки не происходит. Unsubscribe_Level_II_Quotes() возвращает false. А в первой функции Subscribe_Level_II_Quotes() возвращает true. Хотя функции Subscribe(list) и Unubscribe(list) в основе своей идентичны. Вот этого я никак уразуметь не могу.
s_mike@rambler.ru написал: Нет, это все таки руки. classCode и class_code - не одно и то же
Эта путаница в переменных произошла когда я писал функцию для отправки сюда в чат. Старался максимально просто и понятно написать и налажал немного. В рабочем коде, поверьте, с переменными все в порядке (перепроверил только что). Если учесть, что дело не в названиях переменных, есть еще варианты почему код не работает?
Есть функция, в которую передается массив. Каждый его элемент - массив из двух элементов: код класса и код инструмента.
function Subscribe(list) for i = 1, #list do local classCode = list[i][1] local secCode = list[i][2]
local x = Subscribe_Level_II_Quotes(class_code, sec_code)
while not x do sleep(10) end
Calculate(classCode, secCode) end end
В ней я по очереди подписываюсь на котировки по каждому инструменту функцией Subscribe_Level_II_Quotes(). Дальше цикл (на всякий случай), чтобы убедиться, что функция вернула true. И дальше какое-то вычисление. Здесь у меня все работает нормально.
Дальше я прохожусь циклом по этому же списку, чтобы отписаться от каждой котировки.
function Unsubscribe(list) for i = 1, 100 do local classCode = list[i][1] local secCode = list[i][2]
local x =Unsubscribe_Level_II_Quotes(class_code, sec_code)
while not x do sleep(10) end end end
Здесь на первом же элементе из списка я застреваю в цикле while. Если цикл убрать, то функция отрабатывает, а отписка не происходит.
Подскажите как справиться с этой проблемой. Нужно сначала подписаться на инструменты, потом отписаться от них.
Версия квика 9.2.3.15. Может дело не в моих кривых руках, а в версии?
Привет всем знатокам. Функцией getQuoteLevel2() можно получить количество котировок, их цены и объемы. А как из таблицы котировок получить доходность покупки/продажи облигаций?
Владимир, потому что я, начинающий программист, выполняю заказ клиента. Таково его желание. Ему нужно выводить в эксель те данные, которые он сам выберет в ТТТ. И он, естественно, не сможет залезть в код и добавить новую колонку когда решит это сделать. Он сможет только добавить новую колонку в ТТТ и она должна быть выведена. Сложность в том, что выводить данные нужно не только из ТТТ, а еще из одной самодельной таблицы. Вот я и хотел объединить их сперва как-то, а потом сборную таблицу вывести.
Владимир, мне не нужны любые данные из ТТТ. Я понимаю, что можно достать любые данные через getParamEx, но по определенным причинам я не хочу их доставать таким образом. Через getParamEx я должен конкретно указать какие данные мне нужны, а мне нужны именно те, которые показываются без конкретного их указания. Так вот, можно ли их получить?
Например, у меня есть открытая таблица текущих торгов. Там три строки с инструментами : GAZP, VTBR, SMLT. И три колонки: Оборот в деньгах, Спрос по лучшей цене, Цена последней сделки. Я хочу сделать самодельную таблицу в которую будут передаваться данные из таблицы текущих торгов и плюс мои какие-то данные. Чтобы, если бы я добавил в таблицу текущих торгов новую колонку (например Средневзвешенная цена), то она так же передавалась бы в мою таблицу без изменения кода. Возможно такое сделать? Если возможно, то как?
Владимир, правильно ли я понял, что данные из моей таблицы нужно сохранять в файл .txt при каждой итерации цикла в скрипте, а этот файл уже открыть в экселе? И при этом все изменения в таблице в квике будут так же отображаться в таблице в экселе?
Я создал в квике свою таблицу с помощью AllocTable(). Можно ли вывести данные из нее в эксель по DDE? И как их вывести, если это возможно? Если тыкнуть на моей таблице пкм, то соответствующего пункта во всплывающем меню не появляется.
nikolz написал: SciTe - написан на луа, есть встроенный компилятор и отладчик
От SciTe у меня лично глаза болят. Слишком контрастные цвета (я темную тему поставил). А в настройках я так и не смог найти как изменить цветовое оформление.
Написал простой код, нажимаю F5 и вылезает ошибка: The 'cwd' can not be resolved in a multi folder workspace. Solution: "cwd": "${workspaceFolder:name}"
Добрый день. При запуске скрипта должна открываться небольшая табличка с выводом данных. Открывается она по умолчанию на той же вкладке, где открыто окно "Доступные скрипты". Что сделать, чтобы она открывалась на нужной вкладке? Желательно на той вкладке, где открыт график с определенным идентификатором. Есть для этого какой-то метод?
Вроде как эта функция есть в Lua и она должна привести экспоненциальное число в нормальный вид. Но она почему то не работает, если я пишу это в редакторе кода. Кто-нибудь знает почему не работает?
Владимир написал: Хотя я вообще не вижу смысла в перемещении таблицы по экрану
Мой вопрос был алгоритмического свойства, а не философского, и задан он был в ветке Программирование на языке Lua. Для рассуждений о смыслах чего-либо есть другие форумы и ветки типа "о том, о сём".
Скрипт рисует таблицу. Сдвигаю руками. Смысл в том, что ее положение на экране (координаты) должны сохраниться, чтобы при следующем запуске скрипта она нарисовалась там, куда я ее в прошлый раз сдвинул. "Наконец, нафига вообще хранить данные в таблицах Квика? Есть же таблицы Lua!" - вот этого уже я не понял. Я не храню данные в таблицах квика, я вывожу в них информацию, которую хочу видеть.
Последовательность действий такая: 1. Запускаю скрипт 2. считываются данные с координатами таблицы ( left,right,width,height) и другими параметрами из файла .txt 3. Вывожу таблицу со считанными координатами: SetWindowPos(table, left,right,width,height) -- на данном этапе все работает верно 4. запускается основной цикл 5. Заполняются ячейки таблицы параметрами, считанными из .txt-файла. 6. Сохраняю в файл параметры и координаты таблицы
Вот на данном этапе проблема: параметры сохраняются, а координаты таблицы остаются теми же (я сдвигаю таблицу перед сохранением). Наверное, это потому, что параметры таблицы меняются в цикле, а координаты задаются перед циклом до создания таблицы. Вопрос как решить эту задачу - сохранить в файл измененные координаты таблицы?
Есть таблица (интерфейс) и 10 закладок в ней. При нажатии на закладку нужно, чтобы в таблицу выводились данные, которые ей соответствуют. Данные хранятся в текстовом файле. Я предполагаю так, что при запуске скрипта нужно создать все 10 экземпляров объекта в цикле (считывая данные из файла), чтобы можно было переключаться между закладками.
Здравствуйте. Я слабо знаком с программированием. Сумел написать скрипт, который открывает позицию, выставляет стоп, передвигает его при движении цены. Вопрос в следующем: если стоп-заявка остается на ночь, то на следующий день при запуске скрипта он не знает о ней. Предполагаю, что алгоритм должен быть следующим: 1. Узнать есть ли стоп-заявка; 2. Если есть, то подхватить ее каким-то образом и продолжить с ней работать. Подскажите, знатоки, как это реализовать?