Роман написал: Здравствуйте. Не судите строго, только начинаю изучать трейдинг, и вот никак не могу сообразить фундаментальную вещь. В процессе разбора объемов за день по выбранному инструменту обнаружил, что количество сделок продажи не равно количству покупок. Этот момент не очень понятен, ведь если кто-то купил, значит кто-то продал, не должно быть поровну? Но есть отдельно сделки продажи и отдельно покупки. А кто в таком случае определяет направление сделки, купля это или продажа? Есть какое-то правило?
направление сделки определяется направлением более ранней заявки из тех двух, что участвовали в сделке.
Это принципиальная невозможность написать такую функцию, которая бы гарантировала правильность результата.
если вам мало приведенной выше причины, по которой это невозможно, существует ещё много причин, по которым это невозможно. В частности, проверка соединения при помощи isconnected() даёт вам информацию о наличии в данный момент времени соединения с сервером брокера, но ничего не рассказывает о доступности и статусах шлюзах к разным торговым площадкам.
поэтому единственно правильный путь - это предварительные проверки при помощи isconnected(), параметров-статусов инструмента и т.д., чтобы получить приблизительное понимание, можно ли отправлять транзакции по вашему инструменту, после чего попытки торговли с обязательным анализом ответа сервера на вашу транзакцию.
я вам это сделаю, если у нас соответствуют понимания стоимости этой работы.
Необходимо техническое задание, в котором ваша задача расписана более подробно, приведены формулы всех необходимых вам расчетов и при необходимости форматы создаваемых файлов.
Михаил Филимонов написал: Добрый день! Есть ли в КВИК таблица с ASK, BID и LAST со временем точнее секунды?
попробуцте построить тиковый график по параметрам ask/bid Возможно, там вы найдете более точное время свечей last с более точным временем смотрите в таблице обезличенных сделок
Заодно и будет признак "строка отфильтрована", когда ваш ключ не совпадает с номером строки перебора. Не надо ждать столетия, пока рассмотрят и реализуют.
s_mike@rambler.ru написал: Выделяйте строки после поиска по этому ключу
И что вы найдёте? Номинальный номер строки? Я её и так знаю. А толку?
вы идете по строкам сверху вниз и ищете в каждой строке в скрытом столбце нужный вам ключ. как нашли - выделяйте эту строку по номеру строки перебора, не по ключу.
Daniil Pozdnyakov написал: Касательно ответа на 2 вопрос. Привести пример, где в Lua-таблице с пользовательскими фильтрами выделяется строка функцией SetSelectedRow(), довольно сложно.
Это был скорее риторический вопрос. Потому что после применения фильтров и/или сортировки к таблице SetSelectedRow() становится бесполезной.
Цитата
Daniil Pozdnyakov написал: можем зарегистрировать пожелание на добавление признака, показывающего, что строка отфильтрована в таблице созданной через CreateWindow()
Мне нужно выделять строки по их номинальному порядковому номеру. Что я буду делать с этим признаком?
Сделайте в таблице собственное скрытое (шириной 0) поле и записывайте в него ключ - ваш исходный номер строки. Выделяйте строки после поиска по этому ключу
Сомн ительно, что это работало к вас в предыдущей версии. Вызов функции неправилен
io.lines ([filename])
Открывает файл с данным именем в режиме чтения и возвращает функцию-итератор которая при каждом последующем вызове возвращает новую строчку из файла. Т.о., конструкция
-- обработка всех строк файла for line in io.lines(filename) do body end
Руслан написал: Добрый день. Дайте,пожалуйста, ссылочку, на luac.exe,что бы можно было скомпилировать файл для версии lua 5.3.5. На более ранние версии, которые нашел в lua for windows ругается (версия 5.1.4).
Иван написал: Нужно выгрузить все инструменты, торгуемые на мосбирже. Примерный формат: код инструмента / название инструмента / класс / код класса / ISIN / CFA / код расчетов / валюта / шаг цены / вместимость лота / ...
Дело в том, что отключить появление контекстного меню на данный момент нельзя. Можем зарегистрировать пожелание на добавление такой возможности, регистрируем ?
Проблему, о которой ведётся речь, воспроизвести не удалось. Поэтому предлагаем обновить терминал до актуальной (9.2.2) версии и проверить, актуальна ли будет проблема. Если она всё-таки сохранится, просьба прислать полный пример кода, на котором она воспроизводится.
Данил, эта проблема тянется с 2013 года, когда в терминале появился луа все таки прежде чем писать "не воспроизводится", следует хоть как то проверить.
поэтому любые идеи типа открытия в режиме дописывания и прочее не помогут.
правильный путь - это формирование флага. Например, если один скрипт хочет писать, он пробует создать папку-семафор на диске. Если папка создалась удачно, дописывает файл. Если при создании папки была ошибка (папка существует), то надо подождать. По окончании записи нужно закрыть файл и удалить папку.
но лучше использовать механизмы мютексов или что то в этом роде, Но это уже с++.
а ещё лучше пересмотреть логику скриптов, чтобы писать из одного скрипта
Судя по диагностике, падает модуль qlua. Что означает, что какой то ваш скрипт делает какую то каку, которую терминал по переварить не может и рассыпается.
запустите терминал без скриптов , и мои он работает нормально, добавляйте скрипты по одному - найдете тот, где бомба.
Nikolay написал: Т.к. Вы не озвучили настройки получения потока данных вашего рабочего места, то для начала прочтите раздел "Особенности получения значений Таблицы текущих торгов" в справке к терминалу (файл qlua.chm). А то может потока данных нет вовсе
Цитата
Nikolay написал: Т.к. Вы не озвучили настройки получения потока данных вашего рабочего места, то для начала прочтите раздел "Особенности получения значений Таблицы текущих торгов" в справке к терминалу (файл qlua.chm). А то может потока данных нет вовсе.
Поставлена галочка "умное получение данных". Также необходимые инструменты выбраны. И главное поток обезличенных сделок идет в таблице. Но минутные свечи можно получить только с открытым графиком. Это получается только так и можно? Без графика никак?
без графика можно.
как понимаю, вы подписываете ь на регулярный таймфрейм не на тиковый. Тогда скорее всего вы хотите получить данные сразу после подписки, но в терминале их при закрытом графике их ещё нет и требуется время на получение.
Евгений написал: Подскажите пожалуйста в индикаторе можно получить значение другого индикатора ? вот по этой функции как то не получается getCandlesByIndex
Техподдержка проясните пожалуйста почему не работает?
я не техподдержка, Но скажу , что индикаторы рассчитываются последовательно друг за другом, порядок расчета не регламентирован, и ваш индикатор может рассчитываться раньше, чем тот, с которого вы хотите получить значения.
Settings={} Settings.Name = "minimal" getInfoParam("VERSION") function Init() return 1 end function OnCalculate(index) return 1 end
[3676] QLUA E:\Quik-Junior\LuaIndicators\1.lua:3: attempt to call a nil value (global 'getInfoParam') Куда дели функцию getInfoParam, жители крайнего Севера?
s_mike@rambler.ru написал: Как привязаться к временным меткам - так время свечей нам доступно... Если я правильно понимаю вопрос.
это я понял.
не понятно ка нарисовать линию: QLua
Код
line_id_1 = line(Point(x1,y1), Point(x2,y2)); // как это сделать
Вы про низкоуровневое рисование по пикселам? В отличие от современных терминалов и программ технализа наш бронтозавр не предоставляет средств низкоуровневого рисования. Можно самому извращаться с winapi, это тупиковая история.
Единственные координаты, что мы имеем - это время и цена без возможности пересчеты в актуальные пикселы окна. Лет N назад, где N примерно равно 10, эта тема обсуждалась, помнится разработчик меня даже просил прислать список средств рисования mt5 и Amibrooker (гугл с яндексом в арке под запретом?) но результат мы знаем.
s_mike@rambler.ru написал: Вот такой вариант. Но не в таблицу выводит, а рисует на графике.
s_mike@rambler.ru, как вы рисуете прямоугольники на графике через qlua? Как привязаться к временным меткам (например, от свечи С1 до свечи С2) или работаете через пиксели?
метки. Других инструментов нам qlua не предоставляет.
Как привязаться к временным меткам - так время свечей нам доступно... Если я правильно понимаю вопрос.
я бы вам вместо того, чтобы читать и разбирать текстовый файл предложил бы вариант записывать данные в файл сразу в формате языка lua и потом читать их сразу в lua таблицу. Конечно, если есть возможность изменить формат сохраняемого файла.
Dr Wed написал: Всем доброго дня Можно ли из дневной свечи получить текущую цену инструмента? Какую цену даст функция ds:C(<свечка текущего еще незакрытого дня>)?
s_mike@rambler.ru написал: Похоже что луа хендл не закрывает по fclose, а ставит флажок.
Файл закрывается так (луа 5.3)
Код
static int aux_close (lua_State * L) {
LStream * p = tolstream(L);
volatile lua_CFunction cf = p - > closef;
p - > closef = NULL; / * mark stream as closed * /
return ( * cf)(L); / * close it * /
}
static int f_close (lua_State * L) {
tofile(L); / * make sure argument is an open stream * /
return aux_close(L);
}
При открытии файла closef устанавливается на функцию
Код
static int io_fclose (lua_State * L) {
LStream * p = tolstream(L);
int res = fclose(p - > f);
return luaL_fileresult(L, (res = = 0 ), NULL);
}
Так что закрывает как положено. Другое дело, если явно не закрыть, тогда эта функция отработает только при сборке объекта файла, т.е. когда рак на горе свистнет.
Я пробовал вставлять до os.remove collectgarbage("collect") - рез
Сделать снятие на бирже двух заявок "мгновенно" не может никто. Ни скрипт, ни сервер, ни даже биржа.
даже на срочном рынке, где транзакция move_orders исполняется по одному приказу, снятие заявок происходит последовательно. При этом возможны ситуации, когда одна заявка будет снята, а вторая не будет, а будет уже исполнена или частично исполнена.
Ошибки в Qlua - двойной прогон всех индексов через функцию OnCalculate(), При добавлении индикатора на график происходит двойной прогон всех индексов через функцию OnCalculate()
s_mike@rambler.ru написал: Когда задают вопрос про версию, это означает, что никто даже и не пошевелился, чтобы найти ошибку. Она проявляется на любой версии ккогда спрашивают код скрипта, это означает, что никто даже не почесался прочитать первые три сообщения ветки когда спрашивают скриншот окна сообщения, это значит, что никто даже не пробовал поискать в текстах терминала слово "видеопамяти " Даниил, вам спихнули эту проблему, потому что все равно никто не решить не может?
Здесь вы совершенно неправы. То, что кому-то кажется "да у меня в каждом скрипте так" на самом деле означает лишь то, что человек этот каким-то определённым образом пишет скрипты. Но делает всегда именно так, поэтому "в каждом скрипте...". Но, важно! не в "любом", а в "каждом моём". Далее. Если кто-то воспроизведёт примерно подходящую по описанию ошибку - скорее всего это будет совсем другая ошибка, а не та, с которой сталкиваетесь вы. Т.е. вашу проблему - уж точно не починят. Именно поэтому спрашивают всегда конкретный проблемный код. А не обще-абстрактные рассуждения. На любом абсолютно программистском форуме.
Если есть конкретный проблемный код - с ним всегда здесь разбираются. Как минимум убеждаются, что с ним в самом деле есть проблема. Это видно по сообщениям поддержки. Другое дело, что не всегда, скажем мягко, в итоге проблему чинят - это да, это так. Но не приводить проблемный код - это вообще крайне странный подход к общению. Или вам просто эмоции слить?
эмоции - да, конечно. Полдня бьешься над проблемой и после мучений оказывается, что беда не у тебя, а в терминале. И об этой проблеме ты уже когда то сообщал.
писать тестовые скрипты можно, я писал и отсылал. В результате "исправим в очередной версии". Ну а далее смотри первый абзац. Пусть сами пишут свои тесты, я написал как.
в конце концов, они могут видеть последовательность qlua обращений к терминалу и видеть результат в работе скрипта, ссылку на который я дал.