Ну только в -I надо путь к заголовкам, а в -L к библиотекам от openssl и нужной версии lua (я просто все накидал рядом с исходниками). По хорошему конечно надо makefile подправить для mingw сборки, а не так вручную.
Стоп по исполнению
Пользователь
Сообщений: Регистрация: 20.03.2023
25.06.2024 07:36:06
Цитата
Pride написал: Стоп-заявка "по исполнению" вводится на основе заявки на покупку или продажу у которых срок действия ( в моем случае) несколько дней.
А где вы в quik нашли заявки, у которых срок несколько дней?
Где взять значения ACCOUNT, CLIENT_CODE для создания транзакции через QLua ?
Пользователь
Сообщений: Регистрация: 20.03.2023
17.06.2024 12:28:15
Когда руками заявку выставляете, как заполняете поля "Торговый счет", "Код клиента"?
Условная заявка по исполнению в другом инструменте
Пользователь
Сообщений: Регистрация: 20.03.2023
10.05.2024 05:16:43
В transaq можно выставлять стоп-заявки по исполнению в другом инструменте. Из документации:
Цитата
При вводе связанного стопа его направление (покупка/продажа) устанавливается противоположным направлению активной заявки, поля Инструмент, Режим и Клиент также копируются из активной заявки, но при необходимости могут быть изменены.
Связь по исполнению может быть использована как способ автоматизации торговых операций в одном финансовом инструменте по условию цены в другом инструменте. Выставляется «триггерная» заявка на минимальный объём в индикативном инструменте, и к ней привязывается стоп по исполнению, открывающий или закрывающий позицию в торговом инструменте. К этой же «триггерной» заявке можно привязать стоп, который автоматически закроет позицию, возникшую при ее исполнении
Условная заявка по исполнению в другом инструменте
Пользователь
Сообщений: Регистрация: 20.03.2023
09.05.2024 11:21:45
Сейчас есть условные стоп-заявки по исполнению. Но там всегда один инструмент. А для арбитражных стратегий хочется иметь возможность при исполнении лимитной заявки в одном инструменте автоматически активировать лимитную/рыночную заявку в другом.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
Пользователь
Сообщений: Регистрация: 20.03.2023
06.05.2024 16:05:01
Вопрос не почему такое значение, а как его получить в программе. Вручную я его по alt-I вижу.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
Пользователь
Сообщений: Регистрация: 20.03.2023
06.05.2024 14:15:18
В securities есть и с TQTF, и с TQTF_F, и с EQRP_INFO... Разница только в settle_date.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
Пользователь
Сообщений: Регистрация: 20.03.2023
06.05.2024 12:58:13
Повторю свой вопрос. Я нажимаю alt-I в таблице "Состояние счёта" и вижу информацию об инструменте по конкретному классу. Как мне получить этот класс в lua? getSecurityInfo('', 'тикер') дает другой класс. Вряд ли на этот вопрос может ответить брокер.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
Пользователь
Сообщений: Регистрация: 20.03.2023
06.05.2024 12:03:11
ВТБ
Другой брокер - класс без 'F' в конце
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
Пользователь
Сообщений: Регистрация: 20.03.2023
06.05.2024 11:52:09
LUA: Узнать цену утреннего аукциона во время самого аукциона
Пользователь
Сообщений: Регистрация: 20.03.2023
06.05.2024 11:43:24
Ну если вы видите нужные значения в таблице, то в чем проблема? Включаете в настройках "Формальное представление заголовков строк и столбцов", копируете всю таблицу, вставляете куда-нибудь и смотрите, как называется нужная колонка.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
Текущая цена инструмента таблицы "Состояние счёта" берётся из параметров таблицы текущих торгов для данного класса/инструмента. Для данного показателя позиции используются следующие параметры ТТТ:
1. Цена последней сделки по инструменту из таблицы «Текущие торги». Если такой цены нет, то цена закрытия. 2. Для срочного рынка – цена последней сделки. Если такой цены нет, то указывается расчетная цена. 3. Для облигаций значение указывается в % от номинала, для срочных контрактов – в пунктах. 4. Для клиентов типа «МП»: лучшая цена спроса / предложения из таблицы «Текущие торги»
То, из какого именно класса берутся данные параметры - настраивается на стороне сервера QUIK. Получить эту цену, Вы можете обратившись к таблице текущих торгов с указанием класса и инструмента при помощи функций getParamEx и getParamEx2.
Вопрос актуальный - как именно этот класс, настроенный на стороне сервера, получить? Я нажимаю alt-I (информация об инструменте) в таблице "Состояние счёта" и вижу один конкретный класс. Как его получить в lua? Три дня назад у LQDT ETF был класс TQTF, а сегодня у ВТБ стал класс TQTF_F, а у другого брокера по прежнему TQTF. Поэтому вариант "зафиксировать класс где-то в настройках" не рабочий, класс может меняться.
Что будет, если внешняя dll изменит содержимое строки Lua?
Пользователь
Сообщений: Регистрация: 20.03.2023
02.05.2024 13:32:46
Меняют конечно. Как минимум, туда добавлено несколько функций: os.sysdate(), table.sconcat(), table.sremove(), table.sinsert(), table.ssort(). А еще должна быть какая-то непустая реализация макросов lua_lock()/lua_unlock() в llimits.h
Ошибки использование функции 'unpack')
Пользователь
Сообщений: Регистрация: 20.03.2023
27.04.2024 19:10:56
Цитата
Function unpack was moved into the table library and therefore must be called as .
Почему в этой программке утекает память??
Пользователь
Сообщений: Регистрация: 20.03.2023
27.04.2024 17:46:32
Можно почитать про маркетмейкеров на московской бирже в первоисточнике:
Что будет, если внешняя dll изменит содержимое строки Lua?
Пользователь
Сообщений: Регистрация: 20.03.2023
27.04.2024 15:50:15
А профайлер показал, что изменение строки - узкое место, на которое тратится больше всего времени? Или вы хотите разбираться с тем, как поменять значение в обход api, c рисками неопределенного поведения, ради ускорения в ноль целых хрен десятых процента?
Почему в этой программке утекает память??
Пользователь
Сообщений: Регистрация: 20.03.2023
27.04.2024 08:34:48
Маркетмейкеры не выставляют заявок по одному лоту. Для них есть минимальный объем заявки, и это не один лот.
Почему в этой программке утекает память??
Пользователь
Сообщений: Регистрация: 20.03.2023
27.04.2024 05:32:03
Цитата
Serge123 написал: Сегодня на этом форуме читал старые споры и препирательства, в которых говорилось, что мьютексы работают медленно и подходят для синхронизации потоков из разных процессов. А в одном процессе надо использовать какую-то критическую секцию. Я пока не знаю, что это такое и как это сделать быстрее, чем с мьютексами...
Событие - это не мьютекс и не критическая секция.
Просто проверка концепции:
Код
w32 = require("w32")
run = true
evt = false
function OnInit()
evt = w32.CreateEvent(nil, 0, 0, nil)
end
function OnStop()
run = false
w32.SetEvent(evt)
end
function main()
while run do
w32.WaitForSingleObject(evt, 1000000)
end
w32.CloseHandle(evt)
end
В колбеках вызываете SetEvent - main сразу просыпается.
Почему в этой программке утекает память??
Пользователь
Сообщений: Регистрация: 20.03.2023
26.04.2024 12:59:54
А, да, еще надо чтобы брокер считал свою комиссию не с каждой сделки, а как процент от дневного оборота. Вроде есть такие. А биржевая комиссия с мейкера не берется.
написал: По одной заявке выставляют HFT роботы, скальперы и ММ.
А какой смысл это делать на дешёвом инструменте с шагом цены ноль целых шиш десятых копейки?
Тут дело в округлении... Вот продали вы один лот ценой 1.3862, а получили 1.39 из-за округления. А можно можно купить сразу два лота по той же цене за 2.77. То есть продали два раза по одному, купили сразу два - заработали копейку. Сумеете купить пятьсот заявок по два лота и потом продать тысячу по одному - плюс 5 рублей. С теми объемами торгов, которые там есть - можно и много больше. Вопрос только в том, когда брокер скажет "ай ай ай".
Где тут wait и event? Я о таких тайных заклинаниях ничего не знаю...
Где-то пролетала ссылка на библиотечку w32 для lua. Там есть CreateEvent / WaitForSingleObject. Надо попробовать, должно работать...
Функция получения истории значений параметра
Пользователь
Сообщений: Регистрация: 20.03.2023
24.04.2024 08:55:33
Последний параметр в CreateDataSource - не оно?
Алго-заявки в веб терминале Квик, и в приложении.
Пользователь
Сообщений: Регистрация: 20.03.2023
23.04.2024 13:05:17
У ВТБ же бесплатный webQuik. Там что, тоже нет?
339 сделок по одному тикеру в течение 1 мкс
Пользователь
Сообщений: Регистрация: 20.03.2023
19.04.2024 08:04:18
Цитата
nikolz написал: маркет мейкер не выставляет очень большие пакеты.
Звук через mciSendString и MessageBeep
Пользователь
Сообщений: Регистрация: 20.03.2023
18.04.2024 13:19:08
Цитата
Serge123 написал: Вопрос, почему mciSendString в консольной программе не выдаёт звук, так и остался открытым...
Ну например, может оно как-то использует оконные сообщения.
339 сделок по одному тикеру в течение 1 мкс
Пользователь
Сообщений: Регистрация: 20.03.2023
18.04.2024 12:48:06
Цитата
nikolz написал: вот пример сделок по одной цене и время все в пределах 200000 мкс и таких много:
И что? Долбят по мелочи заявку маркетмейкера на миллиард. А потом маркетмейкер решил подвинуться на один пункт и сгреб всех разом...
Время сделки должно совпадать со временем регистрации заявки, вызвавшей эту сделку. Иначе будут вопросы: "Почему по моей заявке сделка прошла по более высокой цене, хотя последняя сделка по низкой цене была на пять микросекунд позже, чем зарегистрирована моя заявка?"
Почему в этой программке утекает память??
Пользователь
Сообщений: Регистрация: 20.03.2023
18.04.2024 12:08:49
Цитата
Note that the time when the collector can be sure that an object is dead may not coincide with the programmer's expectations.
Почему в этой программке утекает память??
Пользователь
Сообщений: Регистрация: 20.03.2023
18.04.2024 12:07:05
Документацию не пробовали почитать?
339 сделок по одному тикеру в течение 1 мкс
Пользователь
Сообщений: Регистрация: 20.03.2023
18.04.2024 11:39:31
Цитата
Serge123 написал: В файлике a1.txt видно, что два рекорда по числу сделок с неизменным временем были не на аукционе открытия. А почему время сделок не меняется, можно только предполагать, а может кто-то, кто сидит ближе к мосбирже, спросит у неё: как объясняется этот феномен?
Я уже предлагал объяснение:
Цитата
Да элементарно. 339 разных заявок в стакане кто-то собрал одной крупной встречной заявкой.
Это же lqdt? Там цена почти не меняется, куча разных заявок стоит в стакане по одной цене. Старый анекдот:
Скрытый текст
В автобусе: -А вы выходите на следующей? -Да, выхожу. -А люди, которые перед вами, тоже выходят? -Да. Но они об этом еще не знают...
Не важно, с какой скоростью сервер обрабатывает транзакции. Все сделки произошли в тот момент, когда прилетела крупная встречная заявка. Но сервер об этом еще не знает - он не успел всё обработать...
339 сделок по одному тикеру в течение 1 мкс
Пользователь
Сообщений: Регистрация: 20.03.2023
17.04.2024 14:16:34
Время 09:59:32 намекает, что это
Покупки через IPO в таблице сделок отсутствуют
Пользователь
Сообщений: Регистрация: 20.03.2023
15.04.2024 08:45:06
Цитата
funduk написал: ТП БКС говорит, что QUIK не предоставляет такую возможность, как показ сделок IPO в таблице сделок. Так ли это? Есть ли в планах добавлять такую функциональность?
Вы вероятно хотите невозможного. Эти сделки проведены до начала биржевых торгов. И у биржи может не быть информации, приобретены акции на IPO или до IPO.
Проткол сервера QUIK для python
Пользователь
Сообщений: Регистрация: 20.03.2023
15.04.2024 07:44:36
Нет, без запуска терминала никак.
339 сделок по одному тикеру в течение 1 мкс
Пользователь
Сообщений: Регистрация: 20.03.2023
15.04.2024 07:33:48
Цитата
Serge123 написал: Сегодня наблюдал сабж по некоторой акции на мосбирже с пом. моего скрипта с OnAllTrade. При этом время сделки было то же самое по самую микросекунду. Это произошло сразу после смены цен покупки/продажи. Как такое возможно? Действительно ли эти 339 сделок произошли менее, чем за 1 мкс?
Можно ли где-то получить общее представление о том, как организованы торги на мосбирже и какие там характеристики у серверов (какая ОС, память, ЦП, диски, пропускной канал, ...)? Т.е. как бы совершить виртуальный тур по бирже. Примерно, как в видео на ютюбе о работе tsmc, где клепают лучшие ЦП.
Да элементарно. 339 разных заявок в стакане кто-то собрал одной крупной встречной заявкой.
После вызова метода Close у обьекта CreateDataSource --> SetUpdateCallback больше не устанавливается
Пользователь
Сообщений: Регистрация: 20.03.2023
01.04.2024 15:46:11
Есть ли оптимизация при конкатенации строк?
Пользователь
Сообщений: Регистрация: 20.03.2023
20.03.2024 08:02:31
Похоже, что есть: у параметр - количество строк для конкатенации. Ну и кусок из исходников:
Код
/*
** Create code for '(e1 .. e2)'.
** For '(e1 .. e2.1 .. e2.2)' (which is '(e1 .. (e2.1 .. e2.2))',
** because concatenation is right associative), merge both CONCATs.
*/
static void codeconcat (FuncState *fs, expdesc *e1, expdesc *e2, int line) {
Instruction *ie2 = previousinstruction(fs);
if (GET_OPCODE(*ie2) == OP_CONCAT) { /* is 'e2' a concatenation? */
int n = GETARG_B(*ie2); /* # of elements concatenated in 'e2' */
lua_assert(e1->u.info + 1 == GETARG_A(*ie2));
freeexp(fs, e2);
SETARG_A(*ie2, e1->u.info); /* correct first element ('e1') */
SETARG_B(*ie2, n + 1); /* will concatenate one more element */
}
else { /* 'e2' is not a concatenation */
luaK_codeABC(fs, OP_CONCAT, e1->u.info, 2, 0); /* new concat opcode */
freeexp(fs, e2);
luaK_fixline(fs, line);
}
}
Проверка на nil
Пользователь
Сообщений: Регистрация: 20.03.2023
19.03.2024 15:35:41
Не вызывайте функцию два раза, сохраните результат в локальную переменную. Странно конечно, похоже почему-то при первом вызове результат нормальный, а при втором - nil
Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
Пользователь
Сообщений: Регистрация: 20.03.2023
14.03.2024 13:04:01
Но ведь для выставления заявки цену в sendTransaction() надо в виде строки?
В qlua есть os.sysdate() c микросекундами. Преобразовать в бинарный формат можно функцией string.pack(), формат сами задаете:
QUIK не выводит таблицы по DDE в Excel
Пользователь
Сообщений: Регистрация: 20.03.2023
21.02.2024 12:01:03
Макросы тут при чем? DDE - механизм обмена данными между приложениями. Lua сам по себе никак не реализует обмен между приложениями.
После длительной работы QUIK: os.clock() =-0.001
Пользователь
Сообщений: Регистрация: 20.03.2023
20.02.2024 08:04:20
Ну при чем тут quik? Это родная функция lua Ну и использует она функцию clock() из С. А у майкрософт реазизация такая:
Цитата
If the elapsed time is unavailable or has exceeded the maximum positive time that can be recorded as a clock_t type, the function returns the value (clock_t)(-1).
Так что это в майкрософт писать надо. В линуксе по другому, там оно при переполнении возвращается к 0:
Цитата
Note that the time can wrap around. On a 32-bit system where CLOCKS_PER_SEC equals 1000000 this function will return the same value approximately every 72 minutes.
Как в скрипте получить количество рублей на счёте?
Пользователь
Сообщений: Регистрация: 20.03.2023
16.02.2024 11:46:27
getMoneyEx()
В чём причина приостановки торгов по фонд. рынку на Мосбирже 13.02 и 14.02?
Пользователь
Сообщений: Регистрация: 20.03.2023
15.02.2024 07:59:30
Цитата
Serge123 написал: Интересно, что во время этого перерыва изредка менялись циферки в стаканах котировок...
В чём причина приостановки торгов по фонд. рынку на Мосбирже 13.02 и 14.02?
Пользователь
Сообщений: Регистрация: 20.03.2023
15.02.2024 07:57:38
как узнать количество транзакций?
Пользователь
Сообщений: Регистрация: 20.03.2023
14.02.2024 15:35:18
Цитата
Serge123 написал: Сейчас позвонил брокеру, там после косультаций оператор ответила, что в связи с выставлением ошибочных заявок у них не предусмотрено ни штрафов, ни комиссий. Звучит немного странно, скорее всего, попались люди, которые в этом не разбираются (такое у меня уже было..)
Тут выше уже отвечали, что часть ошибок при выставлении заявки - от сервера брокера. То есть до биржи эти заявки вообще не дошли, она их не видит и штрафов за них выставить не может. А что у брокера нет комиссий вполне возможно, если эти заявки не создают проблем с нагрузкой на сервер. Вот если будут клиенты постоянно долбить сервер, так что он ляжет - брокер задумается, что с этим делать.
Почему math.ceil(14.0)=14, а math.ceil(15.0)=16?, Как вы округляете в большую/меньшую сторону, с заданным количеством десятичных знаков?
Пользователь
Сообщений: Регистрация: 20.03.2023
13.02.2024 13:09:35
Ну math.ceil(15.0) конечно не равен 16. Но если это результат вычисления, и там на самом деле не 15.0, а 15.0000000000000001 тогда да, будет 16. Проблема в том, что десятичные дроби не могут быть точно представлены, если только знаменатель не степень двойки. В частности, шаг цены 0.1:
И да, единственный способ избежать ошибок округления - работать с целыми числами.
openresty и повторный вызов функции
Пользователь
Сообщений: Регистрация: 20.03.2023
08.02.2024 12:34:25
У вас два http запроса: первый выдает форму, второй получает результат ее заполнения. Между запросами состояние на стороне сервера не сохраняется. Это два разных запуска вашего кода. А между ними может еще несколько запросов от других клиентов быть. Вам надо смотреть в сторону сессий, если оно есть в openresty. Но вообще тема не для этого форума.
Актуальная средняя цена входа
Пользователь
Сообщений: Регистрация: 20.03.2023
15.01.2024 11:31:58
Интересует то значение изначальное значение цены, а не от последнего клиринга.
Актуальная средняя цена входа
Пользователь
Сообщений: Регистрация: 20.03.2023
15.01.2024 11:31:02
Цитата
средневзвешенное значение оценки позиции с учетом входящей позиции по цене последнего клиринга и ценам сделок после него