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

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

Страницы: 1 2 След.
Функция получения истории значений параметра
 
Последний параметр в CreateDataSource - не оно?
Алго-заявки в веб терминале Квик, и в приложении.
 
У ВТБ же бесплатный webQuik. Там что, тоже нет? https://www.vtb.ru/personal/investicii/quik/web-quik/
339 сделок по одному тикеру в течение 1 мкс
 
Цитата
nikolz написал:
маркет мейкер не выставляет  очень большие пакеты.
Это особый случай
Звук через mciSendString и MessageBeep
 
Цитата
Serge123 написал:
Вопрос, почему mciSendString в консольной программе не выдаёт звук, так и остался открытым...
Ну например, может оно как-то использует оконные сообщения.
339 сделок по одному тикеру в течение 1 мкс
 
Цитата
nikolz написал:
вот пример сделок по одной цене и время все в пределах 200000 мкс и таких много:
И что? Долбят по мелочи заявку маркетмейкера на миллиард. А потом маркетмейкер решил подвинуться на один пункт и сгреб всех разом...

Время сделки должно совпадать со временем регистрации заявки, вызвавшей эту сделку. Иначе будут вопросы: "Почему по моей заявке сделка прошла по более высокой цене, хотя последняя сделка по низкой цене была на пять микросекунд позже, чем зарегистрирована моя заявка?"
Почему в этой программке утекает память??
 
Цитата
Note that the time when the collector can be sure that an object is dead may not coincide with the programmer's expectations.
Почему в этой программке утекает память??
 
Документацию не пробовали почитать? https://www.lua.org/manual/5.4/manual.html#2.5
339 сделок по одному тикеру в течение 1 мкс
 
Цитата
Serge123 написал:
В файлике a1.txt видно, что два рекорда по числу сделок с неизменным временем были не на аукционе открытия.
А почему время сделок не меняется, можно только предполагать, а может кто-то, кто сидит ближе к мосбирже, спросит у неё: как объясняется этот феномен?
Я уже предлагал объяснение:
Цитата
Да элементарно. 339 разных заявок в стакане кто-то собрал одной крупной встречной заявкой.
Это же lqdt? Там цена почти не меняется, куча разных заявок стоит в стакане по одной цене.
Старый анекдот:
Скрытый текст
Не важно, с какой скоростью сервер обрабатывает транзакции. Все сделки произошли в тот момент, когда прилетела крупная встречная заявка. Но сервер об этом еще не знает - он не успел всё обработать...
339 сделок по одному тикеру в течение 1 мкс
 
Время 09:59:32 намекает, что это аукцион открытия  
Покупки через IPO в таблице сделок отсутствуют
 
Цитата
funduk написал:
ТП БКС говорит, что QUIK не предоставляет такую возможность, как показ сделок IPO в таблице сделок. Так ли это? Есть ли в планах добавлять такую функциональность?
Вы вероятно хотите невозможного. Эти сделки проведены до начала биржевых торгов. И у биржи может не быть информации, приобретены акции на IPO или до IPO.
Проткол сервера QUIK для python
 
Нет, без запуска терминала никак.
339 сделок по одному тикеру в течение 1 мкс
 
Цитата
Serge123 написал:
Сегодня наблюдал сабж по некоторой акции на мосбирже с пом. моего скрипта с OnAllTrade. При этом время сделки было то же самое по самую микросекунду. Это произошло сразу после смены цен покупки/продажи. Как такое возможно? Действительно ли эти 339 сделок произошли менее, чем за 1 мкс?

Можно ли где-то получить общее представление о том, как организованы торги на мосбирже и какие там характеристики у серверов (какая ОС, память, ЦП, диски, пропускной канал, ...)? Т.е. как бы совершить виртуальный тур по бирже. Примерно, как в видео на ютюбе о работе tsmc, где клепают лучшие ЦП.
Да элементарно. 339 разных заявок в стакане кто-то собрал одной крупной встречной заявкой.
После вызова метода Close у обьекта CreateDataSource --> SetUpdateCallback больше не устанавливается
 
https://forum.quik.ru/messages/forum10/message68511/topic7641/
Есть ли оптимизация при конкатенации строк?
 
Похоже, что есть: у lua_concat параметр - количество строк для конкатенации.
Ну и кусок из исходников:
Код
/*
** 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
 
Не вызывайте функцию два раза, сохраните результат в локальную переменную.
Странно конечно, похоже почему-то при первом вызове результат нормальный, а при втором - nil
Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
 
Но ведь для выставления заявки цену в sendTransaction() надо в виде строки?
Код
string.format('%.'..tostring(price_scale)..'f', tonumber(price))
Запись открытого интереса в файл.
 
В qlua есть os.sysdate() c микросекундами.
Преобразовать в бинарный формат можно функцией string.pack(), формат сами задаете: https://www.lua.org/manual/5.4/manual.html#6.4.2
QUIK не выводит таблицы по DDE в Excel
 
Макросы тут при чем? DDE - механизм обмена данными между приложениями. Lua сам по себе никак не реализует обмен между приложениями.  
После длительной работы QUIK: os.clock() =-0.001
 
Ну при чем тут quik? Это родная функция lua https://www.lua.org/manual/5.4/manual.html#pdf-os.clock
Ну и использует она функцию clock() из С. А у майкрософт реазизация такая: https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/clock?view=msvc-170
Цитата
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: https://man7.org/linux/man-pages/man3/clock.3.html#NOTES
Цитата
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.
Индикатор для арбитража
 
Цитата
Владимир написал:
И одновременно индикатор ...
Ой, индикатор. А говорил, не пользуется.
переход c lua 5.3.5 --> lua 5.4.1
 
https://www.lua.org/manual/5.4/manual.html#8.1
Как в скрипте получить количество рублей на счёте?
 
getMoneyEx()
В чём причина приостановки торгов по фонд. рынку на Мосбирже 13.02 и 14.02?
 
Цитата
Serge123 написал:
Интересно, что во время этого перерыва изредка менялись циферки в стаканах котировок...
https://www.moex.com/n67559?nt=111
В чём причина приостановки торгов по фонд. рынку на Мосбирже 13.02 и 14.02?
 
https://www.moex.com/n67562?nt=111
как узнать количество транзакций?
 
Цитата
Serge123 написал:
Сейчас позвонил брокеру, там после косультаций оператор ответила, что в связи с выставлением ошибочных заявок у них не предусмотрено ни штрафов, ни комиссий. Звучит немного странно, скорее всего, попались люди, которые в этом не разбираются (такое у меня уже было..)
Тут выше уже отвечали, что часть ошибок при выставлении заявки - от сервера брокера. То есть до биржи эти заявки вообще не дошли, она их не видит и штрафов за них выставить не может. А что у брокера нет комиссий вполне возможно, если эти заявки не создают проблем с нагрузкой на сервер. Вот если будут клиенты постоянно долбить сервер, так что он ляжет - брокер задумается, что с этим делать.
Почему math.ceil(14.0)=14, а math.ceil(15.0)=16?, Как вы округляете в большую/меньшую сторону, с заданным количеством десятичных знаков?
 
Ну math.ceil(15.0) конечно не равен 16. Но если это результат вычисления, и там на самом деле не 15.0, а 15.0000000000000001 тогда да,  будет 16.
Проблема в том, что десятичные дроби не могут быть точно представлены, если только знаменатель не степень двойки. В частности, шаг цены 0.1:
Код
> return string.format("%1.18f",0.1)
0.100000000000000006
И да, единственный способ избежать ошибок округления - работать с целыми числами.
openresty и повторный вызов функции
 
У вас два http запроса: первый выдает форму, второй получает результат ее заполнения. Между запросами состояние на стороне сервера не сохраняется. Это два разных запуска вашего кода. А между ними может еще несколько запросов от других клиентов быть.
Вам надо смотреть в сторону сессий, если оно есть в openresty.
Но вообще тема не для этого форума.
Актуальная средняя цена входа
 
Интересует то значение изначальное значение цены, а не от последнего клиринга.
Актуальная средняя цена входа
 
Цитата
средневзвешенное значение оценки позиции с учетом входящей позиции по цене последнего клиринга и ценам сделок после него
MOVE_ORDER на фондовом рынке мос.биржи?
 
Код
bespalex написал:
  Не могли бы вы еще привести такой же пример кода для английских наименований полей и их значений?
Например, у меня используется 'ACTION': 'NEW_ORDER', а тут как будет для изменения?
Загрузил из .tri файла в "Карман транзакций". Переключил язык терминала на английский. Сохранил в файл. Получилось такое:
Код
TRANS_ID=1;CLASSCODE=TQBR;ACTION=Replace Order;Order=42342749362;Trading account=L01+00000F00;Direction=Buy;Board=TQBR;Security=FIVE;Price=2155;Lots=2;Broker reference=W1//ORDER_AMEND;Cancel origin order=No;
Кодировка в таблицах Квика
 
Цитата
Станислав написал:
перевел все названия из своих таблиц на английский язык
По русски их надо в кодировке win1251 писать.
Возможные "стратегии" для торговых программ
 
Цитата
Serge123 написал:
И я не "все"...
Что же тогда вопросы задаете?
Возможные "стратегии" для торговых программ
 
Цитата
Serge123 написал:
И вроде бы есть стратегия торговли "смарт мани", следуя за крупным игроком как рыба-прилипала. Вроде бы тоже публичная, не устаревающая и похожая на правду...
Только следуя за кем-то, вы всегда купите дороже, чем он, а продадите дешевле. Потому что объемы в стакане ограничены.
А еще лучше - крупный игрок купил что-то, и тут же выставил на продажу чуть дороже. Фолловеры у него же и выкупили. Он то свою копеечку заработал...
Возможные "стратегии" для торговых программ
 
Гарантированно выигрышная стратегия: купить "голубых фишек" и облигаций. Ждать купонов и дивидендов. Для этого робот не нужен, руками несколько сделок в год. Ожидаемый доход - чуть выше инфляции. Но этот доход - часть дохода, полученного реальным бизнесом.

На бирже есть огромные объемы спекулятивных сделок с акциями, в разы превышающие доходы бизнеса. Ну то есть спекуляции - это приблизительно игра с нулевой суммой. Чтобы кто-то выиграл, кто-то другой должен проиграть. Все выигрывать не могут. И поэтому любая публично известная стратегия, которую каждый может использовать, заведомо проигрышная. Если бы существовала выигрышная для всех стратегия, откуда взялись бы деньги?
Так что, чтобы стабильно выигрывать на спекуляциях, надо придумать что-то свое уникальное, и никому об этом не рассказывать. Рассказал - отдал часть дохода (или весь).
Чьё время даёт OnTransReply в таблице date_time?
 
Если вы хотите считать миллисекунды, quik абсолютно бесполезен. Нужно прямое подключение и размещение собственного сервера в одном датацентре с серверами биржи. Да, это стоит дорого. Но лезть в hft без десятков тысяч долларов капитала бессмысленно.
Примеры dll на GCC 64 для работы со скриптом
 
Библиотеку lua нужно указывать: ключики -L, -l
Получить sec_code при выборе бумаги в ТТТ., Получить sec_code при выборе бумаги в ТТТ.
 
По документации у getDataSourceInfo() нет параметров
"KILL_ALL_FUTURES_ORDERS", Снятие всех активных заявок на FORTS
 
Цитата
Елена Сидорова написал:
BASE_CONTRACT = GAZR,
кавычки не забыли?
Дублируются пользовательские сообщения из скрипта lua
 
Цитата
nikolz написал:
Цитата
2) Если сделок миллион. Сколько времени уйдет на поиск   t_trades[trade.order_num]?
Там хеш-таблица. Много времени не уйдет.
sendTransaction выдает ошибку для облигаций, sendTransaction выдает ошибку для облигаций (хотя работает для фьючерсов)
 
Можно и как-то так:
Код
order["TRANS_ID"] = tostring(LastOrderId)
order["CLASSCODE"] = "TQCB"
order["ACTION"] = "NEW_ORDER"
order["ACCOUNT"] = "L01+00000F00"
order["OPERATION"] = "B"
order["SECCODE"] = "RU000A102S80"
order["PRICE"] = "98.10"
order["QUANTITY"] = tostring(quantity)
order["EXECUTION_CONDITION"] = "PUT_IN_QUEUE"
getParamEx
 
https://forum.quik.ru/forum10/topic5558/ четыре года прошло...
getParamEx
 
Цитата
Вадим Никитин написал:
Цитата
Alexander написал:
Подскажите кто знает если. С помощью getParamEx есть ли параметры в ТТТ такие, чтобы отсортировать фьючерсы на акции от остальных фьючерсов. В квике по названию вроде ничего не подходит. Или как-то такое сделать по другому. Т.е. я получаю: sec_list = getClassSecurities("SPBFUT") и потом мне из всей этой кучи надо выделить только фьючерсы на акции. По класскоду у всех "SPBFUT", что у индексных, что у товарных, что у акционных. Пока вижу только вариант через string.gmatch и шаблон, но тогда для каждого варианта(смотрим на мосбирже все фьючи на акции) надо указать шаблон. Так пока делаю, но это длинно, для каждой акции свой шаблон. И спиок на бирже могут поменять и придётся менять код. Типа бы какого-нибудь не только класскоде, а ещё бы и подкласса иметь на фьючерсы на акции.
 1)  Получаете список всех фьючерсов из класса  SPBFUT
2)  Получаете список всех акций из класса  TQBR
3)  Проходитесь по всем нужным фьючерсам из пункта  1  (с требуемой датой исполнения и т.п.),
    доставая из их спецификации код базового актива . Можно например через  getSecurityInfo  или из  ТТТ .
4)  Проверяете  есть ли такой код в списке кодов акций  из пункта  2 .
5)  Если есть, значит этот фьючерс - фьючерс на акцию.
6)  Profit...
Ну почти... Посмотрите на сбербанк или газпром. Код базового актива для фьючерса может не совпадать с кодом акций.
В чём преимущество OnInit
 
Цитата
Владимир написал:
появился гениальный язык С, любовь на всю жизнь
Что же вы на ненавистном вам луа пишите? Можно же в одну строчку загрузить библиотеку, написанную на С. И все остальное делать уже там. Регистрировать колбеки - lua_register. Дергать функции quik через lua_pcall. И никакого тормозного интерпретатора.
Функция CreateDataSource никогда не возвращает ошибку, И это создаёт большие проблемы при разработке. В неё можно запихнуть любой мусор, и она скажет: "Всё отлично".
 
Не нужны никакие таймауты. Надо просто работать по событиям. По приходу данных - свечей, сделок, котировок, ...
Функция CreateDataSource никогда не возвращает ошибку, И это создаёт большие проблемы при разработке. В неё можно запихнуть любой мусор, и она скажет: "Всё отлично".
 
Брокер же получает данные с биржи. Я не знаю, как оно там внутри устроено, но вполне возможно, что если вы первый клиент, подписывающийся на какой-то инструмент, то именно в этот момент и будет отправлен запрос на биржу. А вот есть ли в биржевых протоколах (plaza, fix/fast) возможность узнать, придут ли вообще данные?
Не снимаются заявки в секции FORTS
 
Вы бы сразу про С++ написали - быстрее бы проблему нашли.
Не снимаются заявки в секции FORTS
 
Это в lua два подтипа. А в C api надо явно выбирать что использовать - lua_Number или lua_Integer. C не умеет "два в одном".
Не снимаются заявки в секции FORTS
 
Так то в С тип lua_Number - это double. Не надо его использовать для номера заявки.
Не снимаются заявки в секции FORTS
 
https://www.lua.org/pil/2.3.html это ссылка на книгу по lua 5.0, там никаких int64 еще не было. Вы не на С++ а на lua проверьте. А то может вы С api неправильно используете (по доке от старой версии lua).
Не снимаются заявки в секции FORTS
 
На всякий случай: для записи в лог номера в строки преобразуются функцией tostring()?
Страницы: 1 2 След.
Наверх