Alexander (Все сообщения пользователя)

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

Страницы: Пред. 1 2 3 4 5 След.
getParamEx
 
Цитата
nikolz написал:
Цитата
Alexander написал:
GAZP, фьючерсы идут GAZR
Я вроде бы изначально объяснил - возьмите таблицу с биржи и формируйте по ней код фьючерса
Для тех, кто в танке, объясняю на пальцах: Код
базисного
актива
(поле "C")  Код
базисного актива
на срочном рынке  Название базисного актива
GZGAZRПАО "Газпром" (о.а.)
SPSBPRПАО Сбербанк (п.а.)
SRSBRFПАО Сбербанк (о.а.)
Делайте , как говорю, и будет Вам счастье.
Ну ё-маё!!! Я уже сто раз написал же. Что я именно так и делаю, причём именно с самого начала. Все эти GZ, SP, SR ... и т.д. я и использую! Они у меня в качестве шаблона выступают, я же писал, вот код если сразу кто не понял о чём я:
   for k, v, z in string.gmatch(longStr, Str .. "(%u)(%d)") do
        Mass[ m ] = k .. v .. z
        m = m + 1
   end
где в Str это передаётся для формирования полного шаблона. И всё на ура ищется без всего лишнего. Str передаётся в функцию. Этот код внутри функции, которая вызывается и принимает все шаблоны поочерёдно. На выходе массив кодов фьючерсов, по ним из ТТТ вытаскивается всё остальное, что нужно.

Но меня это не устраивает, так как эти шаблоны приходится ЗАДАВАТЬ! Сегодня есть акция и на неё фьючерс есть, завтра взяли и фьючерс убрали. А после завтра вообще добавили новых, которых и в помине не было. Такое уже было. А я хотел бы написать скрипт один раз, чтобы он универсальный был и более в него не лазить, для этого и надо не привязываться к этим шаблонам, а сразу из списка выделять.
getParamEx
 
Цитата
nikolz написал:
покажите, где для фьючерса сбербанка и газпрома код не совпадает.Код базового актива у сбербанка SR и SP, а у газпрома GZ.У какого фьючерса этих акций иначе?
Газпром Акции GAZP, фьючерсы идут GAZR-9.23 и т.д., код базового актива в ТТТ - GAZR!!! Вот тут уже просто жесть какая то!!! Базовый актив фьючерса не GAZP, а GAZR!!!
Сбербанк Акции SBER, фьючерсы идут SBRF-9.23 и т.д., код базового актива в ТТТ - SBRF!!! Вот тут уже просто жесть какая то!!! Базовый актив фьючерса не SBER, а SBRF!!!
А вот если берём например Норникель, то там всё ОК, Акции NLMK и базовый актив фьючерса тоже NLMK.
Так вот по большинству из списка акций, на которые есть фьючерсы все ОК и б/а фьючерсов совпадают как по логике вещей оно и должно бы быть, но такие как Сбер, Газпром, МТС и ещё чего-то там портят всё картину и усложняют элементарный алгоритм отфильтровки. Спасибо гениям с Мосбиржи за такие сюрпризы.
getParamEx
 
Цитата
Вадим Никитин написал:
Действительно, проверил, довольно много таких, у которых не совпадает.
Вот это и хреново. Писаки на Мосбирже только усложняют элементарные вещи.
getParamEx
 
Цитата
paluke написал:
Ну почти... Посмотрите на сбербанк или газпром. Код базового актива для фьючерса может не совпадать с кодом акций.
Вот и я говорю, что такое было, что не совпадало, сейчас посмотрю, наверняка ничего не поменялось. Я помню, что давно когда писал в основном были совпадения, но какие-то коды не совпадали. Это косяк Мосбиржи, что они так криво всё делают.  
getParamEx
 
Цитата
Владимир написал:
А вот что "скриптов много" - это плохо. Сделать-то, мож, и быстрее, а вот СОПРОВОЖДАТЬ... Лично у меня только один скрипт, и увеличение этого числа не планируется. И насчёт "кодов немного" спорный вопрос: для человека уже пара десятков тикеров почти неподъёмная задача. А в реальности их десятки тысяч.
У каждого свои задачи. У меня есть ряд скриптов по анализу много чего на рынке. Торговля торговлей, а анализ анализом. В анализе и индексы и акции и фьючерсы и опционы. Каждый сам решает, что ему нужно.  
getParamEx
 
Цитата
nikolz написал:
Можно сделать так:1) получить этот список из списка открытых инструментов.
Вот этого как раз и пытаюсь избежать. Опять список. Выше описал что к чему. Я хочу уйти от заранее заданных списков.
getParamEx
 
Цитата
Nikolay написал:
У нас так мало инструментов, что самое простое - это сделать файл с данными и просто прочитать его при старте. Лучше даже сделать его в формате таблицы, чтобы загружать одной командой loadfile.
Я не спорю, что это самое простое. Но меня это простое не устраивает. Задача не пользоваться заранее введёнными данными. Есть возможность получать списки фьючерсов? Есть. Всё. Далее из этой кучи нужно найти все фьючи на акции. Не сопоставляя ни с каким списком, который может взять да измениться. У меня уже так было. И список был. Прошло время, долго не пользовался скриптом. Решил использовать. Результат - часть пропала, добавились новые. Оно мне надо, каждый раз сверяться с биржей, что они там убрали, а что добавили,? Мне не надо. Должны быть чисто программные методы отфильтровывания. Этого и добиваюсь. Другое не обсуждается. Если получится - напишу.  
getParamEx
 
Цитата
Вадим Никитин написал:
1) Получаете список всех фьючерсов из класса SPBFUT
2) Получаете список всех акций из класса TQBR
3) Проходитесь по всем нужным фьючерсам из пункта 1 (с требуемой датой исполнения и т.п.),    доставая из их спецификации код базового актива. Можно например через getSecurityInfo или из ТТТ.
4) Проверяете есть ли такой код в списке кодов акций из пункта 2.
5) Если есть, значит этот фьючерс - фьючерс на акцию.
6) Profit...
Так, вот это уже интересней подход, но я как-то смотрел и коды базового актива нифига не совпадали, сейчас гляну, может и правда такой вариант прокатит.
getParamEx
 
Цитата
Владимир написал:
А что, в отдельном файле этого сделать нельзя?
Можно. Где-то так и делаю. Где-то в файле всякие данные, где-то в коде. Скриптов много. Как быстрее, так и делаю. Многие скрипты просто для теста, для визуализации и анализа. Многие написаны и уже не использую. Как-то так. Для торговли я тоже меняю коды на новые после того как инструмент не торгуется. Таких кодов немного.
getParamEx
 
Цитата
Владимир написал:
Alexander, На кой Вам getParamEx? Список бумаг, которыми ИМЕННО Я собираюсь торговать, не знает никто, кроме меня. ИМЕННО Я и определяю этот список, корректирую при необходимости. Мало ли что там мне подсунут любые утилиты! Может, мне просто не по карману торговать всем тем, что там будет получено в sec_list. Этот список меняется крайне редко, и проще всего, быстрее всего, надёжнее всего делать это "ручками", не прибегая к программированию вообще. А уж "для каждого варианта надо указать шаблон" - это вообще безумие какое-то, не говоря уже про "придётся менять код". А что, в отдельном файле этого сделать нельзя? Вот прям ща у меня там стоит AFU3, GZU3 и т.д. Придёт время - поменяю "U3" на... что там следующее идёт. Это делается за считанные секунды, и совершенно плевать, что там Мосбиржа по этому поводу думает.
Не, я не торговать ими. Будет просто таблица с данными. Просто мониториться текущее состояние по б/а и фьючерсам на них - всем какие есть. Отслеживается ситуация на предмет безубыточной стратегии: покупка базы - продажа фьючерса и наоборот, со всеми входящими - комиссии брокера, ГО, дней до экспирации и прочее. На выходе наблюдаю какой процент прибыли за сколько дней и пересчёт на процент годовых, суммы прибыли, нужное ГО суммарно и прочее. Если что нужно будет торгонуть из пары - для этого отдельный скрипт - ткнул когда увидел, что что-то устравиват и купил/продал.
getParamEx
 
Цитата
nikolz написал:
У Вас есть список акций, которые Вас интересуют.
1. У меня нет списка акций. Я его хотел получить именно из списка фьючерсов на акции, которые есть на Мосбирже. Зная список акций я без проблем получаю нужный мне список фьючерсов на акции.
Цитата
nikolz написал:
Из таблицы Кодирование базового актива находим код базового актива на срочном рынке
Из таблицы я как раз беру код для шаблона и по нему без проблем нахожу сразу все фьючерсы на данную акцию. Мне не надо их разделять, мне просто нужны все, я получаю массив фьючерсов с их кодами, полное имя если надо - без проблем по коду тоже получаю.
Цитата
nikolz написал:
В итоге получите список фьючерсов для акций.
Я его и так получаю, только намного быстрее и полный список.
Цитата
nikolz написал:
Если используете колбек onParam, то те коды фьючерсов на которые вы не подписаны никогда не получите.В результате у вас будут коды фьючерсов на акции, на которые вы подписались
Это я не использую, но возможно буду что-то выдёргивать из ТТТ по коду фьючерса, тут может и надо или чтобы в ТТТ фьючерс ужк был или придётся подписываться через ... не помню.. но есть какая-то там функция для подписки.
Цитата
nikolz написал:
налогично опционы.
да точно также из общей кучи нахожу сразу все опционы по шаблону из 2-х букв в начале и шаблонов на цифры и буквы в конце.

Задача моя была найти все фьючерсы на акции их коды и коды соответствующие им базовых активов - т.е. коды акций для этих фьючерсов. Описал просто вначале только первую часть ,так как вторая получается из первой. Найти надо было из списка фьючерсов, никоим образом не ссылаясь на коды акций, на часть кода фьючерса по акции. Просто дано: список фьючерсов. Всё. Более ничего не дано. Надо найти все фьючерсы на акции. Без дополнительных параметров входных. Это так не решается. Об этом написал. Если бы были подкоды как писал выше, то из общей кучи выдёргтвалось бы всё на раз-два. А все эти переборы и сопоставления и так делаются, без этого никак, вот о чём написал.
getParamEx
 
Цитата
nikolz написал:
Сейчас уже точно не помню, но вроде бы делал какой-то листинг и по нему формировал фьючерсы . При этом учитываешь какой квартал, так как для разных кварталов разные правила. Все делается автоматом.
У меня есть строка, полученная так: sec_list = getClassSecurities("SPBFUT") и впринципе её раскидать на фьючерсы разные проблем нет никаких, хоть по кварталам используя "Спецификации коротких кодов фьючерсных и опционных контрактов на срочном рынке" c Мосбиржи: https://www.moex.com/s205
Но в любом случае для отсева из всей этой общей кучи, чтобы отделить только фьючерсы на акции, придётся задавать что-то, связанное с акциями. Я для этого использую шаблон на каждую акцию и ищу через string.gmatch(longStr, Str .. "(%u)(%d)"), где longStr = sec_list, Str = шаблон((AF) например для Аэрофлота). Но вот сформировать тоже самое не задавая шаблон(не привязываясь к акции) никак не получится, нет такой возможности.
getParamEx
 
Цитата
nikolz написал:
Цитата
Alexander написал:
Подскажите кто знает если. С помощью getParamEx есть ли параметры в ТТТ такие, чтобы отсортировать фьючерсы на акции от остальных фьючерсов. В квике по названию вроде ничего не подходит. Или как-то такое сделать по другому. Т.е. я получаю: sec_list = getClassSecurities("SPBFUT") и потом мне из всей этой кучи надо выделить только фьючерсы на акции. По класскоду у всех "SPBFUT", что у индексных, что у товарных, что у акционных. Пока вижу только вариант через string.gmatch и шаблон, но тогда для каждого варианта(смотрим на мосбирже все фьючи на акции) надо указать шаблон. Так пока делаю, но это длинно, для каждой акции свой шаблон. И спиок на бирже могут поменять и придётся менять код. Типа бы какого-нибудь не только класскоде, а ещё бы и подкласса иметь на фьючерсы на акции.
Когда-то давно делал так. На бирже находим правила формирования названия фьючерса. Далее по имени нужных нам акций формируем имена фьючерсов. При этом еще учитываем правило формирования даты фьючерса. Все вроде бы работало правильно.
Ну я типа так и делаю. Только даже проще. Мне так же приходиться как и у Вас написано "по имени нужных нам акций" определять шаблон и по нему мне из всей кучи находит СРАЗУ ВСЕ доступные на данный момент фьючерсы на эти акции, без всякого " правило формирования даты фьючерса". Думал может можно как-то упростить, так как на каждую акцию приходится задавать свой шаблон(Аэрофлот - AF, Газпром - GZ, и т.д).Но список может меняться и приходится постоянно следить и корректировать код, а этого хотелось бы избежать. Это можно было бы легко делать если бы например Мосбиржа помимо кода на фьючерсы "SBPFUT", например ввела бы подкоды. Для фьючерсов на акции свой подкод, для валюты свой, для товаров свой, для процентных свой и для индексных свой. Но такого видимо нет.
getParamEx
 
Подскажите кто знает если. С помощью getParamEx есть ли параметры в ТТТ такие, чтобы отсортировать фьючерсы на акции от остальных фьючерсов. В квике по названию вроде ничего не подходит. Или как-то такое сделать по другому. Т.е. я получаю: sec_list = getClassSecurities("SPBFUT") и потом мне из всей этой кучи надо выделить только фьючерсы на акции. По класскоду у всех "SPBFUT", что у индексных, что у товарных, что у акционных. Пока вижу только вариант через string.gmatch и шаблон, но тогда для каждого варианта(смотрим на мосбирже все фьючи на акции) надо указать шаблон. Так пока делаю, но это длинно, для каждой акции свой шаблон. И спиок на бирже могут поменять и придётся менять код. Типа бы какого-нибудь не только класскоде, а ещё бы и подкласса иметь на фьючерсы на акции.
Как запустить скрипт qlua из командной строки?
 
Цитата
Владимир написал:
Alexander, FAR и как оболочка куда удобнее Total Commander, хотя идеология обоих передрана у дяди Нортона, но редактор FAR - это просто НЕЧТО! Макросы через Ctrl+"." настолько дико расширяют возможности, что ничего другого я и видеть не хочу, не то что искать. А что такое "приличный форматтер именно под Lua"? Я отлаженные блоки и функции просто схлопываю в одну строчку, чтобы не мельтещили перед глазами, с оставшимся работаю. Очень удобно, а полностью отлаженный скрипт состоит из одной строки.
О, да, как только вышел Нортон - это было нечто! Сразу жизнь веселей пошла. А, так то и в Totale много всего, использую только то, что надо. И идея конечно же Нортоновская у них.
Как запустить скрипт qlua из командной строки?
 
Цитата
Владимир написал:
А что такое "приличный форматтер именно под Lua"
Ну нормально форматирует Lua текст, ну там ровно else под if отображает. Некоторые после формата всего файла некорректно это делают, "промахаваются".
Как запустить скрипт qlua из командной строки?
 
Цитата
swerg написал:
Для связи между процессами есть библиотека lua_share  https://quik2dde.ru/viewtopic.php?id=306
Это не плохо, может оно кому такое и нужно. Очереди, списки хорошо если нужно такое в реализации алгоритма, а так обмен данными между скриптами, и даже работающими в разных квиках от разных брокеров просто без очередей и списков организовать можно разными способами и это не сложно. Но на заметку взял, может пригодится.
Как запустить скрипт qlua из командной строки?
 
Цитата
swerg написал:
По пункту б) как пример для начала есть  https://github.com/swerg/qlua-exe
Я вот бегло посмотрел это. Там пишете, что: "Мне всегда хотелось иметь под рукой консольный аналог lua.exe прямо в папке с QUIK, да еще такой, чтобы можно было выполнять непосредственно скрипты, предназначенные для QUIK,
т.е. с возможностью вызова функций QLua."
Но я что-то не понял, а откуда там такая функциональность? Я там увидел вроде как Lua интерпретатор Lua скрипта из файла. Вижу, что файл открывается, далее в цикле читаются аргументы переданные вместе с именем файла и пишутся в созданную в стеке таблицу и далее создаётся глобальная переменная и ей присваивается эта таблица(qlua_exe.cpp). В qlua_functions.cpp вы создаёте набор своих функций, наподобие квиковских(message, print, sleep, getWorkingFolder) и регистрируете их в RegisterQLuaFunctions(L).Так же там написали функцию const char *luaL_tolstring(lua_State *L, int idx, size_t *len), зачем? Она же уже есть в Lua.
Вобщем я не понял, как Вы собираетесь вызывать функции QLua для работы с таблицами, например. Всё, что я понял, вы ввели свои функции (message, print, sleep, getWorkingFolder) и предлагаете их использовать в запускаемом скрипте, так? Но как таковой возможности вызвать сами функции Qlua нет.
Как запустить скрипт qlua из командной строки?
 
Владимир, поскольку выяснилось, что перезагружать скрипт не надо в квике,это многое меняет дело. Пишу себе в VSC, сохраняю когда нужно, переключаюсь на квик и просто запускаю. Не так это сложно, хотя запуск скрипта из самой студии конечно было бы ещё проще и быстрее, ну да ладно. По поводу редактора FAR Manager ничего не скажу, FAR - ом как-то давно-давно пользовался совсем ещё с времён перехода с DOS на Windows, сейчас у меня Total Commander, а вот VSC, там нашёл приличный форматтер именно под Lua, от Tencent китайской, он форматирует хорошо и на лету и файл целиком, а мне это и надо было, чтобы можно было форматировать файлы целиком, ранее писанные в блокноте. Может и другие есть редакторы, которые хорошо формитируют именно Lua, но меня этот вполне себе устроил, и плагин этот настраивать можно при желании - настроек куча.
Как запустить скрипт qlua из командной строки?
 
Цитата
Владимир написал:
Кстати, вовсе не обязательно "руками постоянно сохранять скрипт, в квике удалять старый скрипт, загружать новый, опять его запускать"
и
Цитата
Игорь М написал:
Зачем вы удаляете в Квике старый скрипт и загружаете новый?
Да, действительно не надо его постоянно удалять и заново загружать. А я вот так тупил всё это время. Я просто начинал с QPILE и там постоянно надо было скрипт загружать локально. Вот я привык к этому. Думал, что и Lua скрипты квик по аналогии требует заново загрузить после сохранения изменений. Думал, по аналогии, квик раз загрузил его первый раз когда я его выбрал из папки, то он его хранит открытым и для замены надо его удалить и заново загрузить новый, квик откроет файл и будет держать открытым. И вот даже не удосужился проверить на практике, а надо ли действительно загружать новую версию. После ваших удивлений проверил - действительно не надо, достаточно просто сохранить изменения и всё, ну и имя я естественно не меняю и файл у меня место хранения не меняет. Так что в этом плане спасибо, а то так и тупил бы с этим дальше.
Как запустить скрипт qlua из командной строки?
 
Цитата
Владимир написал:
Alexander, Вот скажите: зачем Вам всё это надо? Зачем связываться с библиотеками, что-то компилить, что-то собирать, разбираться с тем, как работает Квик, перелопачивать это всё с выходом очередной версии? КАКАЯ РАЗНИЦА, как работает Квик? Обилие глюков и обилие версий позволяет уверенно предположить, что работает всё это ПЛОХО. С другой стороны, это всё же РАБОТАЕТ, более-менее надёжно - система достаточно популярная, и искать что-либо иное просто не имеет смысла: как бы ни был убог Lua, он всё же обеспечивает возможность организации торговли на бирже, а больше от него ничего и не требуется. Юзеру от скрипта тоже почти ничего не нужно - запустил и забыл. И программисту тоже - написал и забыл. Я уже несколько месяцев вообще не прикасаюсь к коду, да и до этого полгода-год рихтовал лишь СВОИ алгоритмы торговли, "техника" уж тыщу лет работает безукоризненно: нужно было лишь сообразить, что не надо заниматься разной фигнёй с потоками, и всё, что можно, делать в потоке main - и всё, глюки закончились. И теперь мне плевать, что там за версия Квика, что за версия языка, что там за библиотеки водятся и на всё остальное. Зачем искать на свою задницу приключений?
Всё верно Вы пишите. Но у меня тоже всё просто. Всё, что я хотел, я описал уже выше. Повторю. Я хочу писать код Lua в нормальном редакторе(подсветка, форматирование). А именно в Visual Studio Code. Хочу из среды сразу запускать на выполнение скрипт и смотреть как он работает - вывод во встроенный терминал среды VSC. Всё. Более мне ничего и не надо. Чтобы такое сделать, VSC поддерживает плагины для запуска редактируемого кода, но это делается естественно через запуск внешней программы, которой в качестве параметра передаётся наш код. Поэтому мне нужен функционал от квика, чтобы он мог выполнить мой скрипт из командной строки. Не знаю может такое квик или нет, но сделать это возможным не представляется сложным для разработчиков квика. А так как сейчас, так мне надо мой код сохранить, потом загрузить его в самом квике и запустить, и результаты работы я вынужден смотреть в стороннем отладчике, который должен каждый раз запускать, да ещё и каждый раз настроить фильтр в нём, чтобы он не принимал чужие отладочные выводы. Я хочу более простого подхода. Зачем мне все эти лишние телодвижения? Я и так уже написал программу на C++, которая сам запускает квик, ждёт появление окна логина, вводит логин и пароль, запускает программу DebugView, получает ID процесса квика, настраивает фильтр в DebugView по этому ID, сама отвечает на вопрос диалогового окна не обновлять инструменты и нажимает в окне на OK. Всё это упрощает мои действия, которые мне приходилось бы делать руками. Вот и тут я не хочу руками постоянно сохранять скрипт, в квике удалять старый скрипт, загружать новый, опять его запускать, иногда можно запариться и не удалить старый и запустить, или внести изменения в скрипт и забыть по запарке сохранить и в квике загрузить тот же самый предыдущий скрипт. Конечно это уже делается на автомате и практически без таких ошибок, но иногда по запарке можно и накосячить на голом месте. А зачем всё это надо? Есть же нормальные простые решения для этого. Нужно только разработчикам обратить на это внимание и упростить жизнь программистам. А раз этого нет из коробки, вот и начинаем думать, а можно ли как то это в принципе обойти.
И ещё. Я сейчас пишу даже не какой-то то там алгоритм для торговли. Я всего лишь получаю информацию с таблиц и передаю её в dll, а dll мне открывает потоки и окна, в которых онлайн рисуются позиции по выбранным опционам и базовым активам. И для этого мне по сути вообще и не нужен был бы никакой там их QLua если бы они мне расшарили свой API из qlua.dll и я бы вообще не запаривался бы с изучение этого Lua, а просто вызывал бы те же самы функции, что сейчас вызываю из скрипта на Lua, сразу из C++ программы.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Цитата
Alexander написал:
 
Цитата
nikolz  написал:
VMLua - это программа и она запускается вызовом lua_pcall, в которой вызываетсясобственно VMLua  - эта функция  Вот ее тест из sorce code Lua 5.4
 Ну тут всё правильно написали про VMLua, что она именно ЗАПУСКАЕТСЯ, а ранее писали, что VMLua РАБОТАЕТ как самостоятельная единица.
Любая программа сначала запускается, а потом работает как самостоятельная единица. Поэтому я и написал - запускается и работает.  
Отсюда все и недопонимания возникли. Программа конечно, чтобы начать работать должна быть сначала быть загружена в память, а потом ей должно быть передано управление(call, jmp, return с адресом в стеке, int, может и ещё что есть). Так вот в моём понимании VMLua сначала просто загружена в качестве библиотеки lua53dll и НЕ работает, а работать начинает только тогда, когда нужные функции из неё для компиляции, интерпретации начинают ВЫЗЫВАТЬСЯ, ну или начинает вызываться специальная функция, которая начинает интерпретировать весь скрипт тем же самым образом, но в любом случае библиотека есть и она НЕ работает пока её функции не начнут вызывать. Поэтому Вы всё объединили в кучу - загрузка и передача управления в функцию одной фразой - VMLua уже работает.
Как запустить скрипт qlua из командной строки?
 
Цитата
Alexander написал:
Цитата
nikolz написал:
VMLua - это программа и она запускается вызовом lua_pcall, в которой вызывается
Где в этой функции вызов lua_pcall?
Это ерунду написал я. Тут имелось в виду обратное.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Разработчики уже объясняли, что они не дадут SDK (software development kit  на С)  для разработки пользовательских dll для QUIK. Взамен этого они слепили QLua.dll и внедрили в терминал VMLua.
Ну я вот только от Вас сейчас это услышал. Сами то разработчики вообще самоустранились и не отвечают здесь от слова совсем.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Заголовки к функциям из dll, если их нет, то делаются самостоятельно на основе dll и документации. Для этого Вам надо изучить технологию разработки программ на СИ.
Какую конкретно технологию? Можно ссылку? Или имелось в виду структура dll, формат ?
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Я же Вам написал что так и делаю много много раз, как Вы хотите.---------------------Даже на форуме выкладывал пример , в котором запускал скрипт, загружал dll и обменивался данными с QUIK
Я про это Вас и спросил. Можете по пунктам расписать алгоритм, что конкретно вы делаете? Подробно, чтобы было понятно. Или ссылку на всё это и пример. А то на словах много чего, а толком не понятна реализация что к чему.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Т е Вы хотите к этой куче догрузить свою dll. Ну и что Вы этим проверите? Лишь есть или нет у Вас в dll ошибки.Но так делается при разработке любых приложений на любых языках . Ни луа ни квик ни причем.
Я вообще изначально хотел просто выполнить свой скрипт не прямо в квике, а извне. Я хотел писать в VSC и запускать его прямо из среды на выполнение. Но для этого нужно, чтобы разработчики квика предоставили функционал типа например такого: info.exe -e myscrypt.lua. Вот и всё. Сделать они это могут элементарно при работающем квике, подключенном к серверу квика. У них же есть функция запуска нашего скрипта? Есть. Но они грузят наш скрипт и потом его передают в качестве аргумента своей функции запуска. Так кто мешает сделать то же самое, только не из графического интерфейса квика, а из командной строки? Почему бы и нет? Зато я могу писать удобно в удобной среде и сразу запускать написанное и смотреть результат. И результаты работы выводить в окно терминала, а не через PrintDbgStr() в сторонний отладчик. Можно и отдельный файл .exe для запуска наших скриптов из вне написать, а не напрягать этим info.exe.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Более того, перед запуском VMLua в память грузится куча функций на СИ, которые позволяют в скрипте обращаться к строкам, таблицам, математическим функциям.   Все они написаны на СИ и находятся в Lua53.dll
Это тоже всё так. Но механизм скорее всего как раз тот, что описал выше. Мы же вызываем функции qlua.dll не просто так. Любая функция qlua это же по сути _G.имя функции. А значит квик интерпретирует либо свой скрипт, где инициализирует _G, либо просто своими вызовами функций из lua53.dll делает то же самое, как конкретно делается знают только разработчики, но по сути можно и так и так. "Свой" скрипт легко "держать" в памяти и выполнять и не светить в отдельном файле если надо.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Вы ошибаетесь.QLua - это не скрипт, а dll - написана на СИ или С++.  Т е скрипт на луа вызывает из нее функции. Lua53.exe  - это приложение и внутри него запускается VMLua так же как и в терминале QUIK.
Я с этим согласен. Я вчера быстро и много писал по ходу мыслей. Сейчас с утра переосмыслил написанное. Я думаю, что квик работает так: он прогоняет наш скрипт сначала интерпретируя всё, что не main(), при этом он использует библиотеку lua53.dll для компиляции и выполнения скрипта, так же он видит есть ли колбэк функции, сохраняет их адреса, чтобы потом вызывать их из своего основного потока, дале как Вы и писали он запускает отдельный поток-интерпретатор для обеспечения работы main() скрипта. При этом на первом этапе он выполняет и что-то типа своего скрипта на Lua, где подключает свою qlua.dll и инициализирует _G таблицу, чтобы мы могли вызывать их функции из своего скрипта. Как то так.
Как запустить скрипт qlua из командной строки?
 
Тут вот, что хотелось попробовать. Запускаем скрипт QLUA из вне через lua53.exe. В скрипте подключаем qlua.dll. При работающем скрипте она может быть уже загружена и поток квика её использует. Да, пространства потоков разные у lua53.exe и у квика будут. Но функции qlua будут иметь доступ ко всем данным(таблицы например) потока квика если их умудриться вызвать. Чтобы их вызывать например из exe, dll, нам нужны заголовки с объявлениями. Можно ли их получить? А чтобы их вызывать из скрипта, нужно перменным скрипта задать адреса этих функций, как окружение, которое строит квик в виде _G. ... Как организовать то или другое? Или при загрузке qlua.dll уже будет окружение _G? И достаточно просто extern тип _G? Но опять же нужен заголовок с описание типа того же _G. Попробую потом посмотреть qlua.dll на предмет экспорта, и что там с символами. У квика вообще код закрытый? Они предоставляют lib файлы? Заголовки?
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
и еще...
скрипт исполняется в VMLua ,которую запускает КВИК, потом  в отдельном потоке запускает в дочерняя VMLua  и в ней Ваша функцию main
в которой крутится бесконечный цикл.
Вот этот цикл бесконечно и исполняет приведенная выше функция VMLua.
терминал никак не контролирует эту функции.
В потоке терминала сделана синхронизация обращения к глобальному стеку VMLua
Вы в своем main скрипте в вызываете функции из QLUA для обмена данными с основным потоком QUIK.
Так все и работает.  
Тут согласен. Вот и хотелось от разработчиков услышать нечто подобное. Может есть нюансы. Хотя в принципе как-то так это и должно быть. Но разрабы упорно молчат.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
VMLua - это программа и она запускается вызовом lua_pcall, в которой вызывается
Где в этой функции вызов lua_pcall?
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Т е запускаю сколько мне надо новых VMLua внутри КВИКА и КВИК ничего в них не контролирует.
И тут даже вообще не понятно зачем запускать сколько надо новых VMLua внутри КВИКА если сам квик интерпретирует скрипт уже и он может их(скриптов) интерпретировать сколько угодно.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
VMLua - это программа и она запускается вызовом lua_pcall, в которой вызываетсясобственно VMLua  - эта функция  Вот ее тест из sorce code Lua 5.4
Ну тут всё правильно написали про VMLua, что она именно ЗАПУСКАЕТСЯ, а ранее писали, что VMLua РАБОТАЕТ как самостоятельная единица.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Я точно также запускаю свои скрипты внутри КВИКА в потоках из пула.Т е запускаю сколько мне надо новых VMLua внутри КВИКА и КВИК ничего в них не контролирует.
Можете по пунктам расписать что Вы тут конкретно имели ввиду. Что за пул потоков? Кто его создаёт? Скрипт внутри квика, библиотека dll? Ваш код на C++ интерпретирует Ваши же скрипты?
Как запустить скрипт qlua из командной строки?
 
Пока ясно, что родной интерпретатор lua53.exe с сайта lua.org не катит. Он сам интерпретатор, использует lua53.dll, и квик интерпретатор, который тоже использует lua53dll. Но квик подгружает свою qlua.dll и наш скрипт использует её функции внутри себя, когда квик интерпретирует наш скрипт. А если я извне запущу через lua53.dll свой квиковский скрипт и подключу квиковскую qlua.dll? Чтобы использовать её функции. У меня будет окружении QLUA? Ну там _G с её элементами? Может так можно из вне запустить свой скрипт? Ну для начала скажем без коллбэков к примеру хотя бы. Так как они наверняка не будут в таком случае работать. Квик их обрабатывает сам при загрузке скрипта.
Как запустить скрипт qlua из командной строки?
 
Цитата
swerg написал:
По пункту б) как пример для начала есть  https://github.com/swerg/qlua-exe Для связи между процессами есть библиотека lua_share  https://quik2dde.ru/viewtopic.php?id=306 Опять же можно взять её исходники за основу.
Это пока не смотрел. Посмотрю как время будет, отпишу.
Как запустить скрипт qlua из командной строки?
 
Цитата
swerg написал:
Сделать можно , если наладить связь между процессами а) QUIKа, с одной стороны б) и собранным вами запускаемым exe-шикном, который будет уметь подхватывать Lua скрипты и выполнять их.
Наладить связь между моим exe-шником и скриптом КВИКА конечно можно. Тут думаю проблем нет никаких. Способов достаточно. Тут вообще если такой подход использовать, то по сути этот Lua практически и не нужен. Достаточно всё, что надо писать на C++(dll, exe), а скрипт внутри Lua использовать чисто для связи с (dll, exe) как транспорт, ну транзакции естественно через QLua. Подхватывать скрипты, и выполнять их. Выполнять можно. Что значит подхватывать? Где? Или откуда? Что имелось ввиду?
Как запустить скрипт qlua из командной строки?
 
В сообщении выше надо читать в начале НЕ "Вы писали, что виртуальная машина КВИКА работает сама по себе и ей просто достаточно "скормить" скрипт и он будет ей исполнен", а "Вы писали, что виртуальная машина Lua работает сама по себе и ей просто достаточно "скормить" скрипт и он будет ей исполнен"
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Я точно также запускаю свои скрипты внутри КВИКА в потоках из пула.Т е запускаю сколько мне надо новых VMLua внутри КВИКА и КВИК ничего в них не контролирует.более того, можно вообще запустить вне квика VMLua и в нем скрипт чего-угодно, а необходимые данные передавать из квика с помощью библиотеки QLUA, которая собственно и сделана для передачи данных из терминала в скрипт луа.
Что так Вы запускаете свои скрипты КВИКА внутри пула своих потоков вы только сейчас написали, до этого Вы писали, что виртуальная машина КВИКА работает сама по себе и ей просто достаточно "скормить" скрипт и он будет ей исполнен. Из Вашего объяснения вывод был получен такой, что эта виртуальная машина это самостоятельная единица самого некоего Lua процесса, который работает сам по себе независимо от КВИКА, теперь выясняется, что так и есть как я писал, что КВИК таки сам интерпретирует скрипты, и Вы пишете, что делаете тоже самое. Так зачем тогда писали в духе, что типа не КВИК интерпретатор?
Далее, да конечно можно запустить сколь угодно таких VMLua вне КВИКА. Передавать данные из КВИКА им с помощью библиотеки QLUA, что тут имеется ввиду?  Каким именно образом? Какие именно функции QLUA Вы имеете в виду? Так то, я могу и не Lua скрипты запускать, а процессы на C++, например написанные и принимать данные от КВИКА любым доступным способом Windows.
Как запустить скрипт qlua из командной строки?
 
Разработчики ПО Quik, прошу ответить, начиная отсюда: https://forum.quik.ru/messages/forum10/message70393/topic6175/#message70393
Как запустить скрипт qlua из командной строки?
 
Разработчики ПО Quik, прошу ответить.
Как запустить скрипт qlua из командной строки?
 
Цитата
nikolz написал:
Но поясню что не так в вашем понимании.
Я конечно пока не настаиваю, но вынужден не согласиться с некоторыми Вашими объяснениями. Для начала:
1) Понятия конечно есть м/у компилируемыми и интерпретируемыми языками программирования. Грубо: компилируемые - исходный код -> asm код -> obj код -> сборка линкером -> выполняемый код(exe, dll)(процессором непосредственно в памяти с передачей на него управления). Интерпретируемые грубо: исходный код -> байт код -> выполнение в своей собственной среде байт кода.
2)
Цитата
nikolz написал:
В программе КВИК запущена программа VMLua. VMLua работает сама по себе, исполняя загружаемые в нее скрипты. Т е разработчики КВИК не разрабатывали VMLua, а взяли готовый код и запустили его внутри своей программы.
Как quik запустил VMLua? Как Вы себе это представляете?
3)
Цитата
nikolz написал:
В нее можно грузить любой скрипт на луа и она будет его исполнять.
Как Вы себе представляете как quik грузит код в "запущенную им VMLua?
4)
Цитата
nikolz написал:
Чтобы передать VMLua данные из терминала QUIK, разработчики написали библиотеку QLUA на СИ и таким образом организовали обмен информацией между двумя процессами , один из которых на VMLua.
Тут как бы да, а может и нет. Делают ли загрузку скрипта функции из qlua.ll или это делает сам info.exe или функции из других dll, имеющиеся в quik-е мне не известно, но в qlua.dll полагаю, что находятся функции для торговли и работы с брокером и для получения данных с биржи, т.е. это функции qlua, что описаны в документации quik-a. Quik не тупо передаёт скрипт на выполнение как единое целое в VM - типа загрузил, передал и всё,- скрипт работает сам по себе в среде VMLua, не так всё.
5)
Цитата
nikolz написал:
чтобы делать это автоматом надо  написать соответствующий скрипт для виртуальной машины либо для планировщика задач с использованием библиотеки функций манипуляции с экраном. В скриптах это делается хуками.  Я делал это на AutoIt.
Это не то, что хотелось бы,поскольку это всего лишь будет просто автоматизация обычного процесса пользователя по загрузке скрипта, т.е. тоже самое, что делаем руками для загрузки скрипта, но только автоматом через скрипт(AutoIt).

  А теперь попробую объяснить более подробно почему я так думаю как написал выше, а не так как Вы написали. Для этого рассмотрим как я представляю себе VMLua и как её использует quik. Но сначала посмотрим как интерпретирует Lua код обычный Lua. На оф. сайте Lua весь интерпретатор Lua - 4 файла(lua53.dll, lua53.exe, luac53.exe и wlua53.exe).
Как мы запускаем скрипт на выполнение в среде Lua? Мы запускаем lua53.exe и передаём ему в командной строке при запуске имя нашего .lua файла и видим результат его работы. Как работает Lua53.exe? Она открывает наш файл, чтобы его читать. Он его читает и разбивает на логические куски согласно синтаксису языка, проверяя при этом синтаксис - парсит, далее каждый кусок он компилирует в свой байт код(lua_load, luaL_loadstring), потом он выполняет последовательно каждый кусок(lua_pcall). Это тоже как бы грубое описание, но суть отражает, без нюансов. Т.е. lua53.exe это всего лишь загрузчик и обработчик, само выполнение реализуется функциями внутри lua53.dll. То есть что мы имеем? Мы не имеем конкретно работающую в прямом смысле слова VMLua. Мы имеем загруженную библиотеку lua53.dll, которая содержит в себе много чего из функций, некоторые из которых осуществляют компиляцию, некоторые - выполнение компилированного кода. Нет такого, что lua53.exe взял наш скрипт и просто тупо скормил его некоему работающему процессу VMLua. Хотя конечно можно было бы сказать и так, что допустим такой процесс есть как отдельный, но тогда lua53.exe грузит файл скрипта и передаёт его этому процессу, а этот процесс уже делает то, что я описал выше, но от этого суть не меняется.
  Так вот идём дальше. Как мне видится работа quik в плане обработки скриптов. У quik в рабочей папке есть библиотеки lua51-54.dll, там собственно и реализована VMLua и функции Lua. Quik грузит наш скрипт и ничего никому не скармливает в прямом смысле слова, а начинает сам выступать в качестве интерпретатора Lua скрипта по вышеописанной мной схеме, при этом он использует функционал заложенных в lua51-53.dll функций для компиляции и выполнения компилированного байт кода. Почему так? Потому как Quik помимо работы скрипта так же делает и "свою" работу и в тоже время он может "контролировать" выполнение скрипта, так как наш скрипт не выполняется отдельно сам по себе в какой-то VM, а quik выполняет его частями, тем самым quik может и "позволить" организацию коллбэк функций, отсюда кстати и многие проблемы непредвиденного характера, так как по сути скрипт не работает как непрерывно целое в некоей среде, при некоторых условиях возможно, что quik может прерывать его выполнение если "так надо", хотя main() скрипта обрабатывается в отдельном потоке quik-а, это не исключает этого. Ниже для подтверждения моих мыслей простой интерпретатор Lua, который делается элементарно, думаю как-то так работает и quik, т.е.по такому же принципу:

Листинг 25.1. Простой автономный интерпретатор Lua
#include <stdio.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main (void) {
char buff[256];
int error;
lua_State *L = luaL_newstate(); /* открывает Lua
*/
luaL_openlibs(L); /* открывает стандартные библиотеки
*/
while (fgets(buff, sizeof(buff), stdin) != NULL) {
error = luaL_loadstring(L, buff) || lua_pcall(L, 0, 0, 0);
if (error) {
fprintf(stderr, "%s\n", lua_tostring(L, -1));
lua_pop(L, 1); /* выталкивает сообщение об ошибке из стека
*/
}
}
lua_close(L);

Поэтому хотелось бы услышать ответы разработчиков по заданным мной вопросам. Может быть я и не прав, а прав на самом деле nikolz, я не спорю, а просто хочу понять правильно ли я понимаю организацию работы скриптов в quik или нет.
Как запустить скрипт qlua из командной строки?
 
Я понимаю, что любой скрипт Lua можно выполнить используя родной интерпретатор Lua - lua.exe, нужную версию которого можно скачать с официального сайта. С этим всё просто и понятно. Это работает, когда мы пишем Lua программу, работающую самостоятельно(в данном случае отдельно от квика). Когда мы запускаем скрипт Lua в квике, то как я понимаю это происходит приблизительно так. Квик(info.exe наверное) загружает наш скрипт, построчно его читает, используя функции из библиотеки, например lua53.dll, выполняет прочитанные строки из нашего файла скрипта(используя pcall или что-то подобное), короче он сам интерпретирует наш скрипт построчно, используя нужную библиотеку Lua. Так же разработчики написали свою библитотеку qlua.dll, в которой реализовали все свои функции для торговли и получения информации от брокера, котировки с биржи и прочее. Так же, поскольку сам квик построчно выполняет скрипт, он чередует работу самого себя с работой по интерпретации скрипта, благодаря чему сделана возможность коллбэк функций для скрипта. Может что-то и не так понимаю. Если что-то не так - прошу разработчиков ответить так это или нет. А в связи с этим сам вопрос: есть ли возможность запустить мой скрипт qlua, используя в командной строке, что-то типа info.exe myscrypt.lua, при работающем квике и подключённом к серверу квик? Для чего это нужно? Поставил Visual Studio Code. Хочу настроить его для написания скриптов Lua. Там есть возможность установки плагина для запуска скрипта из редактора - что-то типа Code Runner. Он позволяет настроить запуск скрипта используя интерпретатор в виде программы, которая запускается в командной строке, принимая в качестве параметра запуска файл скрипта. Прошу кто знает или самих разработчиков ответить возможно ли организовать такое? Было бы очень удобно. Пишем в редакторе со всеми его возможностями. Запускаем скрипт прямо в редакторе на выполнение. Скрипт запускается через запуск интерпретатора квика, использует все возможности - функции из qlua библиотеки, скрипт делает вывод в терминал во время работы нужной информации по ходу работы скрипта. Или как-то подобное можно организовать по другому? Можно ли использовать стандартный интерпретатор lua.exe для запуска скрипта, но как тогда связать работу скрипта с билиотекой qlua.dll?. В любом случае нужен запуск скрипта из Visual Studio Code и чтобы скрипт нормально работал так как будто он работает в самом квике.
Выгрузка библиотек
 
Цитата
nikolz написал:
nikolz
Очень хочется познакомиться с этой темой по ffi поближе, но пока времени на это нет. Постараюсь по возможности потом как-нибудь в неё вникнуть, думаю будут и вопросы, но уже задавать их буду наверное в соответствующей теме.
Не могу заставить работать функцию Subscribe_Level_II_Quotes()
 
Цитата
Станислав написал:
Цитата
Alexander написал:
Что за ерунда такая?
Все так как и должно быть. Просто вы не учитываете, что процедура Subscribe_Level_II_Quotes выполняется асинхронно и требует значительного времени на выполнение.
Ставил задержку после подписки и перед чтением стакана в 1 минуту - Котировок нет. Но я вот только что нашёл как надо. Задержка по любому нужна на срабатывание. Но нужна обязательно функция main, а все действия делаем в отдельной функции и задержку ставим 100 мс хоть внутри этой функции хоть в main, тогда корректно можно дождаться срабатывания чтения стакана. А по поводу асинхронно, то разработчики об этом должны писать в документации и так же указать, что никакие задержки не сработают если не будет функции main()
Так же возможно и вообще всё делать чисто в main() и с задержкой на срабатывание - наверняка сработает, но я не проверял. Просто быстро накатан был скрипт для проверки без main(). И кто бы знал, что одни и те же действия будут работать по разному с main() и без? А началось всё с того что в рабочем скрипте не было задержки и стакан не читался, сейчас поставлю и посмотрю на результат.
Не могу заставить работать функцию Subscribe_Level_II_Quotes()
 
Что вообще происходит с заказом стакана котировок кто-нибудь может пояснить? Если есть открытый стакан, то никаких проблем нет. Проверка на подписку функцией  IsSubscribed_Level_II_Quotes всегда показывает, что подписка есть, т.е. она возвращает true и стакан нормально читается через getQuoteLevel2. Но если стакан не открыт в квике, то если запустить скрипт:

ClassCode = "SPBOPT"
SecCode = "RI107500BF3"

if (not IsSubscribed_Level_II_Quotes(ClassCode, SecCode)) then
    message("Подписываемся на стакан по инструменту")
    if Subscribe_Level_II_Quotes(ClassCode, SecCode) then
        message("Подписались на стакан по инструменту")
    end
    Subscribed = true
end

quotes = getQuoteLevel2(ClassCode, SecCode)

if quotes.bid and quotes.bid[ 1 ] then
   message("Есть котировки")
else
   message("Котировок нет")
end

if Subscribed then
   message("Отписываемся от стакана по инструменту")  
   Unsubscribe_Level_II_Quotes(ClassCode, SecCode)
end

то по очереди выводятся сообщения в следующем порядке:

Подписываемся на стакан по инструменту
Подписались на стакан по инструменту
Котировок нет
Отписываемся от стакана по инструменту

И запускай хоть сто раз - будет то же самое! Хоть и подписались на стакан, а читать нечего!

Далее делаем следующее - последние 4 строчки закомментируем, т.е. в любом случае отписку от стакана не делаем. Тогда если запустить такой скрипт, то вывод будет такой:

Подписываемся на стакан по инструменту
Подписались на стакан по инструменту
Котировок нет

Но если запустить этот же скрипт теперь второй раз, то вывод будет:
Есть котировки

И потом хоть сто раз запускай - вывод будет - Есть котировки

Что за ерунда такая? Чтобы нормально читать стакан при подписке = true надо завершить скрипт и запустить его заново, при этом не отписываясь при первом запуске? Как нормально подписаться и нормально сразу читать стакан? Мне нельзя скрипт останавливать. Ранее работал со стаканами - всё нормально подписывалось и читалось сразу. Но там всё в цикле было и проверка на подписку и подписка если нет подписки, потом чтение стакана. Мне надо один раз подписаться и чтобы потом в цикле читать стакан. А то выходит полный бред какой-то - подписался нормально, Subscribe_Level_II_Quotes(ClassCode, SecCode) вернула true, а стакан не читается.
Выгрузка библиотек
 
Цитата
nikolz написал:
Цитата
Alexander написал:
 
Цитата
nikolz  написал:
ссылка для скачивания  dll с функциями выгрузки
  https://transfiles.ru/cp4bi  

выгрузить на Lua5.3 :
require"nkDDD"
nkDDD.freeDLL( имяВыгружаемойDLL)

для выгрузки на СИ  функция
void nkfreeDLL(char* pNameDLL)
-------------------------
Если что не так, пишите и выкладывайте Ваш пример, будет разбираться.
Мой пример на луа см выше
   nikolz  , а первая которая просто через скрипт, я так понимаю работает по принципу как ffi? Я правда не смотрел реализации этой ffi.
нет это просто обертка второй
А ну да, точно. Это я что-то как-то бегло глянул. Конечно обёртка. Если ffi, там же прямо из скрипта нужная функция API вызывается, так вроде?
Как с помощью кода открыть график и отформатировать его по шаблону?, Как с помощью кода открыть график и отформатировать его по шаблону?
 
Ещё вот что. По Таблице обезличенных сделок как раз таки и неплохо брать данные в таком формате, как предлагается в этой функции. Там же как раз сделки все с биржи и время и цены. Я для себя правда ни разу эту таблицу не заказывал. У qpile свой подход. Он видимо так может работать чисто по времени в отличии от свечей как в Lua.
Как с помощью кода открыть график и отформатировать его по шаблону?, Как с помощью кода открыть график и отформатировать его по шаблону?
 
Цитата
nikolz написал:
Цитата
Alexander написал:
Если пользоваться функцией GET_CANDLE и 3-й параметр STRING parameter_name не устанавливать в - "", т.к. Таблица обезличенных сделок не заказывается у брокера, то что конкретно надо туда писать? В документации пишут брать параметр из  Таблицы текущих значений параметров. Их перечень см. Функции для получения значений Таблицы текущих торгов. Если мне нужно у свечи данные закрытия свечи, то какой параметр указать? Просто CLOSE такого нет там. Пробовал CLOSEPRICE - не то. И вообще причём здесь Таблица текущих торгов?
Причем здесь таблица обезличенных сделок?
Вы же свечу заказываете.
Ну как причём? Это же не я придумал. Это разработчики квика. У них так и написано в документации: "Значение «parameter_name» должно соответствовать одному из значений имени параметра из Таблицы текущих значений параметров. Их перечень см. Функции для получения значений Таблицы текущих торгов. Если «parameter_name» указан как «», то поиск осуществляется по данным Таблицы обезличенных сделок."
Ну это ещё ладно. С Таблицей обезличенных сделок как раз таки всё понятно. Я то спрашивал как раз про другое, когда не по таблице. Тогда что писать?
Страницы: Пред. 1 2 3 4 5 След.
Наверх