Serge123 (Автор тем)

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

Страницы: 1 2 След.
Надо кое-что исправить в документации
 
В файле
Интерпретатор языка Lua.pdf
в пункте
Код
3.9.1 getQuoteLevel2
в 1-й табличке сказано
Код
bid TABLE Котировки спроса (покупки). При отсутствии спроса возвращается пустая строка
Видимо, должно быть "... возвращается пустая таблица"? Ведь bid это таблица...
Аналогично надо исправить для таблицы offer.

А что сейчас возвращает getQuoteLevel2 при отсутствии спроса/предложения, пустую таблицу? Я не могу это проверить...

Далее, при описании структур таблиц bid и offer надо написать, что эти таблицы являются массивами из таблиц, каждая из которых состоит из двух пар ключ-значение, причём, значение для ключа quantity заканчивается на подстроку ".0", которую необходимо удалять. Это, чтобы не удивлялись...
Неплохо бы привести пример для пояснения структуры всей этой таблицы для стакана.

Аналогичные исправления надо сделать в англоязычной версии этого файла, в
Lua Interpreter.pdf.
Что будет, если внешняя dll изменит содержимое строки Lua?
 
Если есть просто строка Lua, ссылок на которую нет в таблицах, то изменение такой строки не повлечёт неожиданностей в работе скрипта? Возможные варианты: длина строки не меняется/уменьшается. Мне кажется, это может повлиять только на подсчёт хэша от этой строки, а кому он нужен в данном случае? Но, как я заметил по исходникам Lua, у Lua есть какой-то кэшбуфер удалённых сборкой мусора строк, я не понял, что это такое и для чего он используется...

Примечание: если dll уменьшает размер строки, то она корректирует это в поле длины строки (и если надо, типе строки: короткая/длинная строка).
До каких пор живёт таблица, передаваемая функции?
 
Пытаюсь перенести обработку OnQuote и OnAllTrade в поток main. C OnAllTrade приходит ссылка на таблицу alltrade:
Код
function OnAllTrade(alltrade)
Сама таблица alltrade находится в стеке вызова этого коллбэка (очевидно, в стеке тоже ссылка, а сама таблица ещё где-нибудь?)

Если я эту ссылку на alltrade помещу в очередь и выйду из OnAllTrade, то не получится ли так, что после выхода из OnAllTrade эта таблица окажется мусором?

Аналогичный вопрос с OnQuote, которая вызывает getQuoteLevel2 и помещает возвращаемую ей таблицу (ссылку на неё) в ту же очередь для обработки в main.

Мне что, перед выходом из этих функций отключать сборку мусора, а после обработки всей очереди в main опять включать??
Почему в этой программке утекает память??
 
С каждой записью в файл утекает ~ 50 байтов памяти, а почему она не собирается сборщиком мусора??
Код
local mess = 'abc'

local function toFile()
 local lf=io.open('srrhb346fhs', 'ab')
 lf:write(mess)
 lf:close()
end

function main()
 for i = 1, 20 do
  toFile()
  sleep(1000)
 end
end
339 сделок по одному тикеру в течение 1 мкс
 
Сегодня наблюдал сабж по некоторой акции на мосбирже с пом. моего скрипта с OnAllTrade. При этом время сделки было то же самое по самую микросекунду. Это произошло сразу после смены цен покупки/продажи. Как такое возможно? Действительно ли эти 339 сделок произошли менее, чем за 1 мкс?

Можно ли где-то получить общее представление о том, как организованы торги на мосбирже и какие там характеристики у серверов (какая ОС, память, ЦП, диски, пропускной канал, ...)? Т.е. как бы совершить виртуальный тур по бирже. Примерно, как в видео на ютюбе о работе tsmc, где клепают лучшие ЦП.
Время начала приёма заявок на вечерней сессии
 
Кто знает, сабж для всех инструментов один? Такое впечатление, что нет, сегодня в моём инструменте, по-моему, заявки начали принимать раньше 19:00:01. Возможно, чтобы свои люди, кому хотелось очень продать, встали в очередь пораньше.

Говорят, продают, чтобы купить татнефть(?)
Как в текстовом редакторе Far сворачивать (collapse) функции?
 
Чтобы от текста для кода функции оставался один заголовой функции.
Наверно, должен быть такой плагин, не могу найти...
Пример передачи управления из коллбэка в другой поток
 
Хочу посмотреть пример dll на C, которая обрабатывает коллбэк (напр., OnAllTrade) и для ускорения работы передаёт обработку коллбэка в заранее созданный повторно используемый поток и сразу делает выход. Примеры на C++ не очень интересуют...

И ещё подскажите, в каком потоке работает сборщик мусора? В main, в Квике или в своём собственном? И этот сборщик существует для каждого скрипта свой?
Есть ли оптимизация при конкатенации строк?
 
Кто-нибудь знает, при нескольких конкатенациях:
Код
str1 = 'b'
str = str .. 'a' .. str1 .. str1
str будет 3 раза удаляться и пересоздаваться, или будет какая-то оптимизация этого присваивания?
Повторное использование строки
 
Как-то уже об этом писал...
Есть строка mess (age), в которой коллбэки накапливают свой вывод, при превышении определённой длины строка записывается в файл. Потом обычно пишут mess='', чтобы сбросить длину строки в 0, но что в этом случае произойдёт? Создастся новая строка, или в структуре TString для этой строки её длина установится в 0?
Я не вижу, где хранится число байтов, выделенных под строку, и как контролируется выход за её предел при дописывании к строке?
Не хочется ненужного пересоздания строки и сборки мусора, а хочется просто зарезервировать под строку 10 Мб и использовать эту же память под строку постоянно. Зачем выметать сор из избы строки, если можно обойтись без этого? Как это всё оптимизировать и сделать, как в нормальных языках типа того же си?
DNS влияет на скорость работы Квика?
 
Сегодня увидел, что кое-кто на западе советует установить самые быстрые и бесплатные DNS 1.1.1.1 и 1.0.0.1, например:
nimaboldi.uz/как-настроить-в-windows-10-самый-быстрый-dns/
Есть ли от этого польза В РФ?
А есть ещё DNS от Гугла 8.8.8.8.
Что из этого всего лучше?
Как вы боретесь с описками в именах переменных?
 
В Луа нет опции предупреждать об использовании необъявленных переменных, как это сделано в Перле, поэтому могут возникать труднонаходимые ошибки. Есть ли какие-нибудь сторонние программы для проверки скриптов на такие описки?
Неприятный эффект при ограничении глубины стакана
 
Брокер ограничивает глубину стакана в 20/20, я установил 10/10. Во время выставления предварительных заявок (аукцион открытия) наблюдал такую картинку в стакане: виднеются 10 заявок на покупку и 10 на продажу, многие из них пересекаются. При этом по цене, которая через неск. сек. станет лучшей ценой покупки, видно много акций, а по цене на шаг выше не видно предложений продать, видны только предложения купить. В 1-й момент я подумал, что намечается какое-то мошенничество, почему-то захотелось снять свою крупненькую заявку на покупку и начать рвать на себе все волосы, раскладывая их в аккуратные кучки...

Но во 2-й момент я догадался, в чём дело: по логике программиста, если в стакане присутствуют 10 строк с красным фоном (на продажу) и 10 с зелёным, но при поступлении заявки на продажу ничего отображать не надо, хотя, общее число строк в стакане < 20 из-за пересечения довольно многих заявок на покупку и на продажу.

Раньше я удивлялся, для чего выставляют заявки на продажу по каким-то смешным ценам и, соответственно, на покупку? Возможно, это специально спамять стакан, чтобы у тех, кто ограничил его глубину, не было видно заявок по ценам, которые станут лучшими в момент начала торгов.

Не знаю, обсуждалось это или нет на форуме и как решить этот вопрос... Возможно, стоит подумать, чтобы отображать более 10 заявок на покупку/продажу, если общее число строк в стакане (в моём случае) < 20?
Звук через mciSendString и MessageBeep
 
Немного подправил пример, который видел на стр. https://quik2dde.ru/viewtopic.php?id=79
dll файл получился меньше 20 Кб. Искал примеры, чтобы не выскакивало окно консоли, смотрел примеры через виндовс скрипт хост (расширение файла .vbs). Если запускать в Проводнике, то окнА консоли нет, а если в Квике, то есть, не понял, почему...

Убрал проверку на ошибки. mci с MessageBeep микшируется, а mci с mci не смог смикшировать. И в том и моём примере mci устройство после завершения скрипта остаётся открытым. В OnStop или в OnClose надо бы закрыть, или ну его? Я пробовал вставить mciSendString("CLOSE QUIK_MP3", NULL, 0, NULL); в DllMain, когда приходит сообщение DLL_THREAD_DETACH, опять нарвался на зависание Квика...

МС пишет, что в вин10 mci устарел:
https://learn.microsoft.com/ru-ru/windows/win32/multimedia/mci-commands
Может, есть уже примеры с использованием MediaPlayer?

Кто-то в dll использует
Код
#define LUA_LIB
#define LUA_BUILD_AS_DLL
кто-то нет, я не увидел различий, по-всякому работает.

Компилировать можно примеро так:
Код
gcc.exe playsnddll.c -o playsnddll.dll -mdll -O2 -s -L. -llua54 -lWinmm -m64 -std=c17
Это playsnddll.dll.c:
Скрытый текст

Это playsnd.lua:
Скрытый текст
Надо подумать о запоминании координат окон на экране
 
Заметил такую особенность: если вывести окна, которыми управляет Виндовс (через ShellExecute) (Система/Загрузить настройки из файла, Система/Сохранить настройки в файл) и переместить их на другое место, то в след. раз они рисуются уже на том месте, где были в последний раз. А другие окна (напр., Система/Настройки/ Основные настройки) рисуются всегда посередине экрана, а окно Сервисы/Lua скрипты у меня может нарисоваться в разных местах, если даже его не передвигать. Желательно где-то в настройках запоминать координаты и размер выводимых окон и рисовать их посередине экрана (или в другом стандартном месте), если разрешение экрана (или размер окна Квика, если он не в полноэкране) изменилось.

Это может иметь значение, если на экране имеются стаканы с заранее установленным количеством акций в поле Q, настроенные на выставление заявок по щелчку мыши. После какого-то обновления Виндовс 10 я начал замечать в ней такую ошибку: щёлкаешь на каком-то окне, к примеру, на кнопке ОК или Отмена, это окно закрывается, а этот же щелчок мыши ещё раз отрабатывается на окне, которое было под ним. Так один раз я щёлкнул в окне, которое было поверх стакана, на стакане вторично отработался этот щелчок и я совершил сделку по продаже 500000 акций по цене покупки. На самом деле я щёлкнул в столбце продажи на очень маленькой цене, хорошо, что биржевой алгоритм достаточно интеллектуален и в этом случае продаёт не по щёлкнутой цене, а по лучшей цене покупки. А то так можно было бы одним щелчком уполовинить свой депозит у брокера и скончаться от инфаркта прямо на рабочей табуретке, как какой-нибудь основатель Рамблера в 48 лет... Пришлось тут же снова покупать эти 500000 акций по лучшей цене продажи. Поэтому теперь, чтобы щёлкнуть на окне поверх стакана, я сдвигаю это окно так, чтобы щёлкать над столбцом с ценой акций, это приводит только к перемещению подсветки строки в стакане. Или перед открытием окна перехожу на вкладку, скажем, Новости.

Та же ошибка в Виндовс приводит к тому, что, напр., щёлкаешь по меню Расширения, оно открывается и тут же закрывается, т.е. один щелчок мыши (особенно, если время нажатия было не сверхмаленьким) считается за два щелчка или за двойной щелчок. (Мне известно, что эти параметры настраиваемые, но после этого обновления Виндовс я их не менял.)

Этот же эффект я наблюдал на Ютюбе: напр., щёлкаешь в окне видео по треугольничку, чтобы поставить видео на паузу, этот треугольничек начинает делать анимацию shape tween, постепенно превращаясь в две вертикальные черты, но до конца эта анимация не доходит и возвращается назад к треугольничку. Иногда, чтобы поставить видео на паузу, приходится несколько раз щёлкать по треугольничку.

Кто-то ещё замечал с некоторых пор подобный эффект?
Хочется функцию CreateWindowEx...
 
Не хватает функции CreateWindowEx (из набора сервисных функций qlua). Она должна принимать также название вкладки, на которой должна будет создать окно. А то на текущей вкладке может не быть места для окна, приходится его вручную перемещать на другую вкладку. Под названием вкладки я имею в виду текст, который на ней написан в Квике, напр., "Графики", "Новости". Разумеется, должны быть и остальные функции с добавкой Ex для работы с окнами, напр., DestroyTableEx.
Баг с luaq.ru
 
Сейчас вижу баг с этим сайтом: вместо показа страницы браузер предлагает сохранить её содержимое на диск. К примеру, вот что сохраняется из корня сайта:
Скрытый текст
Окно сообщений перехватывает фокус ввода
 
Иногда надо быстро набрать в стакане в поле Q количество акций для заявки, а в это время выскакивает окно сообщений и приходится щёлкать по полю ввода для возврата фокуса. Это нервирует и способствует ошибкам. Можно сделать так, чтобы при появлении этого окна фокус ввода возвращался на прежнее место. Насколько я знаю, Win API возвращает хендл окна, у которого был отнят фокус ввода.
dll на C: удивительная ошибка...
 
На основе w32.dll сделал на C маленькую mydll.dll для проигрывания звуков MessageBeep и mciSendString. Она работала, но через некоторое время перестала и при запуске соотв. Lua скрипта выдавалось сообщение "C stack overflow". Я 2 дня по-разному менял код, но это сообщение оставалось. Похоже, что эта ошибка стала появляться после очередного обновления Квика, т.к. кроме этого всё оставалось тем же со времени, когда mydll.dll работала. Остальные мои аналогичные dll продолжают работать. Только что методом тыка я поменял имя dll с mydll.c на такое же моё имя, что работает: на luacdll.c (luacdll.dll). И эта dll стала работать. От одного только переименования файла!

Как это можно объяснить??
По поводу текущей паники в акциях
 
Насколько я понял, акции, которые не связаны с долларом, продавать не стоит?

Автор Ютюб канала "Профита нет" часа два назад сказал, что в такое время очень хорошо перекладываться в фонды ликвидности, но я сейчас вижу, что там тоже много продают, и началось это с вечерней сессии. Не стоит обращать на это внимание, или тоже выйти в кэш?
? к разработчикам: тайные архивы
 
Случайно нашёл ссылку https://arqatech.com/upload/Public/quik_lua.zip
Внутри этого архива в папке examples лежат старючие примеры lua программ. Внутри аналогичного архива, который можно скачать со стр.https://arqatech.com/ru/support/files/ папки examples нет. Что это значит: эти примеры устарели, или засекречены, или теперь только за деньги?

Почему не дают доступ к папке arqatech.com/upload/Public/ ? Может быть, оттуда можно ещё что-то полезное накачать? Тут говорилось о примерах торговых программ "от арки", как их можно бесплатно скачать?

To All: и вообще, где можно надыбать нормальные примеры торговых программ, а не всякий хлам? На сайте брокера БКС я видел статьи о создании таких программ, но ссылки на тексты этих программ не работают. Может быть, кто-то скачивал эти тексты или знает, как их найти в архиве Интернета?
Как в скрипте получить количество рублей на счёте?
 
В Квике я вижу это в таблице "Состояние счёта" в строке "Российский рубль", столбец "Позиция", сверху "На дату Tx".
И где можно посмотреть имена подобных параметров, которые надо задавать в скрипте для их чтения?
В чём причина приостановки торгов по фонд. рынку на Мосбирже 13.02 и 14.02?
 
Сегодня видел, как с 10:35 по 11:35 был перерыв, сейчас вижу, что за мин. свечой от 10:35 идёт свеча от 11:35. Я cначала подумал, что Москвы уже нет... Техподдержка брокера ответила, что вчера тоже был перерыв, после которого стаканы очистились, а Мосбиржа ни вчера ни сегодня не назвала причину перерывов. Сегодня стаканы не очищались.

Кто знает, в чём причина? Интересно, чтО надо предусмотреть в скриптах в связи с такими явлениями? Наверно, скрипт должен мониторить что-то часто меняющееся (напр., IMOEX2), чтобы не наделать ошибок?
Какими заявками крупный игрок накапливает позицию?
 
Вопрос о том, как угадать, куда поведёт цену крупный игрок после периода накопления. В периоде накопления (боковике) рыночными или лимитными заявками крупный игрок накапливает позицию? Как ещё можно определить его действия?
Вопросы к спецам по Lua и Lua C API
 
1. Будет ли утечка памяти, если C dll при работе со стеком Lua не будет вызывать lua_pop? Ведь сказано, что Lua при каждом вызове подпрограммы из C dll создаёт этот стек заново.

2. Решит ли проблему с возможной утечкой памяти, если не вызывать lua_pop, а в конце работы со стеком вызвать lua_settop(0)? Я думаю, что решит, т.к. lua_pop это макрос, который вызывает lua_settop.

3. Я попытался увидеть сборку мусора и написал такой код:
Код
function main()
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
local s1 = '' .. collectgarbage("count") .. '\n'
s = nil
s1 = s1 .. collectgarbage("count") .. '\n'
collectgarbage("collect")
sleep(10000)
s1 = s1 .. collectgarbage("count") .. '\n'
message(s1)
end
Получил такой вывод:

37.5439453125
37.619140625
36.046875

Видно, что памяти освободилось меньше, чем занимала строка s. Как это объяснить?
Можно ли узнать, что скрипт qlua не дополучает инфо по onalltrade/onquote?
 
Если скрипт в коллбэке как-то притормаживает, то теряются эти сообщения. Неужели в Квике нет очереди, чтобы их не терять? Есть ли гарантированное время (скажем, 5 мс), что если коллбэк в него вписывается, то потерь данных гарантированно не будет? (Думаю, что его нет, т.к. интенсивность вызова коллбэка может быть высокой.) А если они были, можно ли как-то об этом узнать?
Сегодня был бардак в стаканах
 
Между 9:50 и 10:00 наблюдал по одной акции то, что ещё не видел: в стакане не показывалась моя заявка на продажу и не было также строчки с ценой по этой заявке, но в таблице заявок она показывалась. Через некоторое время все заявки на продажу почему-то имели цену ниже всех заявок на покупку (строки с зелёным фоном были вверху, а с красным внизу), поэтому, чтобы увидеть привычный вид стакана, надо было встать на голову! И у всех заявок на покупку (или почти у всех) количество было в 1 акцию. И только в 10:00 (в начале торгов) содержимое стакана стало нормальным.

Кто-то ещё видел сегодня подобное? Это был сбой на бирже или в брокерском Квике?
os.execute с правами админа
 
1. Как можно (если можно) вызвать из qlua ехе программку с правами админа, напр., чтобы скорректировать часы ПК? А если эта программка сидит в dll, то тогда как? Видимо, можно как-то повысить права вызываемой программы?

2. Верно ли, что с ключом /nowait можно вызывать программы так, чтобы вызывающая программа продолжала работать и не ждала завершения вызываемой программы?
Как исправить ошибки после зависания?
 
Вчера в результате экспериментов с моим скриптом Квик завис и его пришлось снять с выполнения (виндовс крутила курсор в виде голубого бублика и предложила снять или ждать отклика). Вчера и сегодня по этой причине наблюдались такие явления, как появление в выпадающем меню "Сервисы/Lua скрипты..." в этой строчке слева какой-то иконки (потом она исчезла), потом вдруг в стаканах и в меню поиска в текстовых полях фон из чёрного стал белым. Программа работает, но, похоже, какие-то файлы подпортились. Я ещё вчера запускал chkdsk/f на диск C:, не помогло... Есть в Квике какое-то средство проверки целостности данных?
Пожелание по 1. OnQuote и 2. getQuoteLevel2
 
1-я вызывается даже чаще, чем происходят сделки, хотя, часто не несёт нужной информации. Предположим, что кого-то интересует только количество и лучшая цена на покупку. Иногда роботы-прилипалы и прочая чушь играет с выставлением заявок и весь этот мусор загружает программу. А из 1-й вызывается 2-я, в которой иногда идёт запись на диск.

Предлагаю сделать так, чтобы можно было задать количество значений цен на покупку от лучшей цены и ниже и отдельно, соотвественно, количество цен на продажу в стакане от лучшей цены и выше. И если были изменения вне этих диапазонов, не вызывать 1-ю.
Более быстрый перебор ключ - значение в таблице
 
Сейчас обнаружил, что перебор в форме
Код
 for key, val in next, t do
  local k = key
  local v=val
 end
Работает ~ на 10% быстрее, чем в распространённой форме
Код
 for key, val in pairs(t) do
  local k = key
  local v=val
 end
Схема торговой программы
 
Кто-то может рассказать об удачной схеме работы торговой программы (без дорогих сердцу торговых стратегий), чтобы потом не переделывать своё изобретение? Я пока не знаю, как это всё в сумме организовывать и с какой стороны подходить... Торговать лучше по индикаторам или как-то ещё?
Рассчитать текущую цену от ММ на начало торгов
 
На этапе выставления заявок (напр., с 9:50 по 9:56) скрипт ММ смотрит на них и устанавливает текущую цену так, чтобы было совершено наибольшее число сделок. Можно ли как-то скриптом на Луа вычислить эту цену по информации о заявках в стакане, чтобы вовремя в неё встать? Есть ли такой алгоритм?
Кто-то пробовал запускать Квик на планшете?
 
Можно ли запустить торговую программу под Квиком на планшете, чтобы не напрягать настольный ПК? Если да, то что это за планшет? На сколько времени хватит аккумулятора?
Возможные "стратегии" для торговых программ
 
Я освоил qlua + dll на C, теперь хочется попробовать написать торг. программку, чтобы посмотреть, на её работу. Имеются какие-то дармовые "торговые роботы" и их заготовки, которые транслятор не хочет транслировать (и есть раздутые до безобразия горы кода в районе гитхаба), не хочется тратить время, чтобы их понять, они, по-моему, делаются по принципу "на, тебе, боже, что мне негоже", а платные "роботы" - по принципу "на, тебе, платного, боже, что мне негоже". К примеру, в этой ветке кто-то опубликовал "нейросеть на луа", при этом из диалога непонятно, что это такое и стоит ли на это тратить время.

У меня пока возле головы вертятся такие возможные "стратегии" для программы:
- слежение за массой всякой макулатуры и определение начала роста цены, покупка на деньги, которые не жалко, и определение, когда это лучше продать;
- определение в начале торгов, что с какой-то радости начнут покупать/продавать, и воспользоваться этим, пока цена не ушла далеко;
- ловля кратковременной просадки цены, когда происходит крупная продажа (напр., кто-то хочет выйти из какой-то бумаги, перевести деньги в доллары и слинять из этой страны, пока не поздно).

Кто-то может подсказать (хотя бы в приват) что-то стоящее "отцу русской демократии", чьи пенсии летят по  * , коптят, и потом где-то взрываются склады террористов?..
По поводу полей ввода P(rice) и Q(uantity) в стаканах.
 
Кстати, я заметил конфликт комбинаций клавиш при работе с этими полями: если выделить значение в этом поле и нажать Ctrl+x (вырезать и поместить в буфер обмена Виндовс), то возникает страшное окошко типа "Удалить все заявки?" Кроме того, желательно, чтобы работали не только комбинации Ctrl+c/Ctrl+v, но и парные к ним Ctrl+Ins/Shift+Ins. И эти поля желательно вытягивать, чтобы они занимали всю ширину стакана.

А как насчёт того, чтобы можно было вводить в поле Q числовые выражения, хотя бы бесскобочные с + и -? (Надо учесть унарные + и -).
Почему так сильно тормозит ввод/изменение заявки?
 
Такое впечатление, что при редактировании полей ввода цены/количества происходит какой-то тяжёлый счёт. Можно его как-то отменить, чтобы это работало так же быстро, как щелчок по быстрой заявке в стакане?
Чьё время даёт OnTransReply в таблице date_time?
 
Например, если мы получаем trans_reply.status == 3 (заявка выполнена), то какое время мы получаем в OTR:
- время сервера биржи в момент выполнения заявки?
- время сервера брокера, когда он получил ответ от сервера биржи?
- что-то ещё?
Аналогичный вопрос, если заявка не выполнена.
В описаниях этой функции об этом ни слова...

Я сейчас перед вечерней сессией делал заявку на покупку и в OnTransReply получил ответ "не выполнена", время при этом такое:
19:00:04.224811.
Но я эту заявку повторял несколько раз и в следующий раз получил ответ "выполнена", время при этом такое:
19:00:04.377904.

А это я получал содержимое стаканов и отмечал время на моём ПК, которое я перед этим синхронизировал с NTP сервером:
19:00:04.621937
19:00:04.746745
19:00:04.932090
19:00:05.319159

И только в 4-й раз, т.е., когда время было 19:00:05.319159, моя заявка появилась в стакане. Как можно понять такую задержку? Может ли кто-то задерживать мои заявки намеренно?
Примеры dll на GCC 64 для работы со скриптом
 
Где можно посмотреть примеры создания длл на GCC 64?
Или хотя бы на FPC 64/Delphi 7...
Не обновляются данные в стакане и в табл. заявок
 
Сейчас сталкивался с тем, что выставляю в Квике 11.0.0.92 заявку, она принимается, но не отображается в стаканах и в табл. заявок. При этом в андроид приложении она отображается в активных заявках. Перезагрузил Квик - не помогло. Помог перезаказ данных...

Потом в стаканах вдруг вместо 40 строк стало отображаться только 4 (2 на покупку, 2 на продажу), а в  андроид приложении отображались все 40 строк. Через несколько секунд стали отображаться все 40 строк. Пока писал, это повторилось (отображались 2 строки). Брокер ВТБ. Не знаю, что думать...
Неактуальная информация в документации?
 
В файле "Интерпретатор языка Lua.pdf" в разделе "3.12.3 Особенности получения значений Таблицы текущих торгов" написано:
===
• Автоматически из скрипта Lua с помощью функций ParamRequest или CreateDataSource,
при включенной настройке Рабочего места QUIK «Исходя из настроек открытых
пользователем таблиц» (меню Система / Настройки / Основные настройки..., раздел
«Программа» / «Получение данных»).

Терминал QUIK автоматически заказывает параметры, необходимые для
корректного расчета лимитов, при включенной настройке Рабочего места
QUIK «Исходя из настроек открытых пользователем таблиц» (меню Система /
Настройки / Основные настройки..., раздел «Программа» / «Получение
данных»).
===

Но фразы «Исходя из настроек открытых пользователем таблиц» в меню
Система / Настройки / Основные настройки / Программа / Получение данных
не видать...
Как сервер биржи определяет направление сделки?
 
Когда приходит инфо, напр., по OnAllTrade, там присутствует направление сделки: B - покупка и S - продажа. Я заметил, что, когда я продаю, то в этой сделке стоит B, когда покупаю, - S. А как сервер биржи определяет напр. сделки?
А если моя заявка будет по текущей цене, а не лимитная, то тогда направление будет другое?
От вида встречной ко мне заявки (лимитная или по маркету) это направление зависит?
Узнать точное время скриптом
 
Чтобы при приёме заявок раньше встать в очередь, я синхронизирую часы Виндовс по атомным часам и проверяю это в сервисах типа time100.ru. Но всё равно возникают погрешности. Напр., утром эти сервисы, как правило, говорят (да ещё и каждый по-своему), что у меня точное время, а в 19 часов, что мои часы спешат на 0.3 сек... Можно ли как-то узнавать время точнее, напр., с точностью 5-10 мсек? Например, получая его с сервера брокера? Или более точно установить его в Виндовс? Регион - Ставропольский край (не сам Ставрополь).
Хочется в биржевом стакане видеть объёмы заявок
 
К примеру, в приложении ВТБ Инвестиции для Андроида сделали показ объёмов заявок в биржевом стакане более мелким шрифтом внутри серого прямоугольничка со скруглёнными краями. Для этого в Квике есть свободное место в столбцах, соответственно, "Продажа" и "Покупка". Это бывает нужно, если хочешь отменить или перенести все заявки по данной цене. Сейчас для этого я заглядываю в Андроид приложение.
Получение скриптом инфо по OnAllTrade
 
Если хочется получать скриптом информацию по каждой сделке с выбранными акциями, обязательно ли в загруженном конфигурационном файле иметь таблицу обезличенных сделок по всем этим акциям? Почему для этого недостаточно в скрипте подписаться через Subscribe_Level_II_Quotes на получение этой информации? Если не создавать табл. обезл. сделок, то скрипт получает только инфо по OnQuote...
Увеличьте таблицу текущих торгов
 
Очень не удобно быбирать компании в подокошечке "Доступные инструменты". Оно такое маленькое, что потянешь за бегунок, и проскакиваешь неизвестно куда. И поиск в этом окошечке работает очень странно. То ли виснет, то ли неправильно ищет...
Интересные баги квика
 
Иногда запускаю квик, выбираю Система/Загрузить настройки из файла..., и квик зачем-то  открывает каталог Виндовс Изображения. Закрываю окно с этим каталогом, повторяю предыдущую операцию, и открыватся правильный каталог QUIK_VTB. Загадка природы!

Также иногда отсутствует звук при завершении заявки (слышен только звук сделки).
Массовое удаление заявок
 
В таблице заявок неплохо было бы сделать множественное выделение заявок согласно юзеринтерфейсу Виндовс: щёлкая левой кнопкой при нажатой клавише Ctrl для добавления к выделенному этой строки и нажатой клавише Shift для добавления к выделенному диапазонов строк.

PS: представляю сколько будет возмущённых жалоб юзеров из-за безвинно удалённых заявок в результате ошибок в программировании. :-)
Ошибка при изменении параметров заявки
 
Если в таблице заявок по строке с активной заявкой дважды щёлкнуть, то появляется окно типа "МБ ФР: Т+ ETF: Ввод заявки" и можно редактировать её параметры. Это работает нормально. Но если это окно вызвать щелчком правой кнопки по строке с заявкой и выбрать из контекстного меню "Заменить заявку", то ещё до появления этого окна заявка отменяется. Если юзер передумает редактировать заявку, то ему придётся воссоздать эту заявку и он потеряет очередь в биржевом стакане.
Ошибочное взятие комиссии биржи при торговле фондом ВТБ "Ликвидность"
 
Не знаю, чья это ошибка, возможно, серверной версии Квик, которой пользуются брокеры. Я у брокера ВТБ торгую этим фондом с тикером LQDT. Это единственный фонд, на который нет даже комиссии биржи (если брокер ВТБ). Я давно пишу и звоню в ВТБ, чтобы исправили ошибку: иногда примерно в одной сделке из 100 берётся комиссия биржи. На следующий день эту комиссию возвращают, но всё равно из-за неё есть потеря денег. В последнее время эту комиссию не брали на дневной сессии, а брали очень редко при сделках после 21 часа. А сегодня прямо с утра её стали взимать, да ещё и довольно часто. Неужели программисту трудно вставить в код условный оператор: если тикер == LQDT, то комиссию биржи не берём?
Страницы: 1 2 След.
Наверх