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

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

Страницы: 1 2 След.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Вопрос не почему такое значение, а как его получить в программе. Вручную я его по alt-I вижу.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
В securities есть и с TQTF, и с TQTF_F, и с EQRP_INFO...
Разница только в settle_date.  
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Повторю свой вопрос.  Я нажимаю alt-I в таблице "Состояние счёта" и вижу информацию об инструменте по конкретному классу. Как мне получить этот класс в lua? getSecurityInfo('', 'тикер') дает другой класс.
Вряд ли на этот вопрос может ответить брокер.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 

ВТБ


Другой брокер - класс без 'F' в конце
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
https://imgur.com/M6GbyLl.png
LUA: Узнать цену утреннего аукциона во время самого аукциона
 
Ну если вы видите нужные значения в таблице, то в чем проблема? Включаете в настройках "Формальное представление заголовков строк и столбцов", копируете всю таблицу, вставляете куда-нибудь и смотрите, как называется нужная колонка.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Василий.

Текущая цена инструмента таблицы "Состояние счёта" берётся из параметров таблицы текущих торгов для данного класса/инструмента. Для данного показателя позиции используются следующие параметры ТТТ:

1. Цена последней сделки по инструменту из таблицы «Текущие торги». Если такой цены нет, то цена закрытия.
2. Для срочного рынка – цена последней сделки. Если такой цены нет, то указывается расчетная цена.
3. Для облигаций значение указывается в % от номинала, для срочных контрактов – в пунктах.
4. Для клиентов типа «МП»: лучшая цена спроса / предложения из таблицы «Текущие торги»

То, из какого именно класса берутся данные параметры - настраивается на стороне сервера QUIK. Получить эту цену, Вы можете обратившись к таблице текущих торгов с указанием класса и инструмента при помощи функций getParamEx и getParamEx2.
Вопрос актуальный - как именно этот класс, настроенный на стороне сервера, получить? Я нажимаю alt-I (информация об инструменте) в таблице "Состояние счёта" и вижу один конкретный класс. Как его получить в lua?
Три дня назад у LQDT ETF был класс TQTF, а сегодня у ВТБ стал класс TQTF_F, а у другого брокера по прежнему TQTF. Поэтому вариант "зафиксировать класс где-то в настройках" не рабочий, класс может меняться.
Что будет, если внешняя dll изменит содержимое строки Lua?
 
Меняют конечно. Как минимум, туда добавлено несколько функций: os.sysdate(), table.sconcat(), table.sremove(), table.sinsert(), table.ssort().
А еще должна быть какая-то непустая реализация макросов lua_lock()/lua_unlock() в llimits.h
Ошибки использование функции 'unpack')
 
https://www.lua.org/manual/5.2/manual.html#8.2
Цитата
Function unpack was moved into the table library and therefore must be called as table.unpack.
Почему в этой программке утекает память??
 
Можно почитать про маркетмейкеров на московской бирже в первоисточнике: https://www.moex.com/msn/ru-securitiesmm
Что будет, если внешняя dll изменит содержимое строки Lua?
 
А профайлер показал, что изменение строки - узкое место, на которое тратится больше всего времени?
Или вы хотите разбираться с тем, как поменять значение в обход api, c рисками неопределенного поведения, ради ускорения в ноль целых хрен десятых процента?
Почему в этой программке утекает память??
 
Маркетмейкеры не выставляют заявок по одному лоту. Для них есть минимальный объем заявки, и это не один лот.
Почему в этой программке утекает память??
 
Цитата
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 сразу просыпается.
Почему в этой программке утекает память??
 
А, да, еще надо чтобы брокер считал свою комиссию не с каждой сделки, а как процент от дневного оборота. Вроде есть такие. А биржевая комиссия с мейкера не берется.
Почему в этой программке утекает память??
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
По одной заявке выставляют HFT роботы, скальперы и ММ.
А какой смысл это делать на дешёвом инструменте с шагом цены ноль целых шиш десятых копейки?
Тут дело в округлении... https://roem.ru/12-08-2021/286525/tinkoff-cents/
Вот продали вы один лот ценой 1.3862, а получили 1.39 из-за округления. А можно можно купить сразу два лота по той же цене за 2.77. То есть продали два раза по одному, купили сразу два - заработали копейку. Сумеете купить пятьсот заявок по два лота и потом продать тысячу по одному - плюс 5 рублей. С теми объемами торгов, которые там есть - можно и много больше. Вопрос только в том, когда брокер скажет "ай ай ай".
Почему в этой программке утекает память??
 
Цитата
Serge123 написал:
https://lua.org/manual/5.4/
Где тут wait и event? Я о таких тайных заклинаниях ничего не знаю...
Где-то пролетала ссылка на библиотечку w32 для lua. Там есть CreateEvent / WaitForSingleObject. Надо попробовать, должно работать...
Функция получения истории значений параметра
 
Последний параметр в 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 написал:
И вроде бы есть стратегия торговли "смарт мани", следуя за крупным игроком как рыба-прилипала. Вроде бы тоже публичная, не устаревающая и похожая на правду...
Только следуя за кем-то, вы всегда купите дороже, чем он, а продадите дешевле. Потому что объемы в стакане ограничены.
А еще лучше - крупный игрок купил что-то, и тут же выставил на продажу чуть дороже. Фолловеры у него же и выкупили. Он то свою копеечку заработал...
Возможные "стратегии" для торговых программ
 
Гарантированно выигрышная стратегия: купить "голубых фишек" и облигаций. Ждать купонов и дивидендов. Для этого робот не нужен, руками несколько сделок в год. Ожидаемый доход - чуть выше инфляции. Но этот доход - часть дохода, полученного реальным бизнесом.

На бирже есть огромные объемы спекулятивных сделок с акциями, в разы превышающие доходы бизнеса. Ну то есть спекуляции - это приблизительно игра с нулевой суммой. Чтобы кто-то выиграл, кто-то другой должен проиграть. Все выигрывать не могут. И поэтому любая публично известная стратегия, которую каждый может использовать, заведомо проигрышная. Если бы существовала выигрышная для всех стратегия, откуда взялись бы деньги?
Так что, чтобы стабильно выигрывать на спекуляциях, надо придумать что-то свое уникальное, и никому об этом не рассказывать. Рассказал - отдал часть дохода (или весь).
Страницы: 1 2 След.
Наверх