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

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

Страницы: 1 2 След.
Условная заявка по исполнению в другом инструменте
 
В transaq можно выставлять стоп-заявки по исполнению в другом инструменте.
Из документации:
Цитата

При вводе связанного стопа его направление (покупка/продажа) устанавливается  противоположным направлению активной заявки, поля Инструмент,  Режим и Клиент также копируются из активной заявки, но при  необходимости могут быть изменены.

Связь по исполнению может быть использована как способ автоматизации торговых  операций в одном финансовом инструменте по условию цены в другом инструменте.  Выставляется «триггерная» заявка на минимальный объём в индикативном  инструменте, и к ней привязывается стоп по исполнению, открывающий или  закрывающий позицию в торговом инструменте. К этой же «триггерной» заявке можно  привязать стоп, который автоматически закроет позицию, возникшую при ее  исполнении

Условная заявка по исполнению в другом инструменте
 
Сейчас есть условные стоп-заявки по исполнению. Но там всегда один инструмент. А для арбитражных стратегий хочется иметь возможность при исполнении лимитной заявки в одном инструменте автоматически активировать лимитную/рыночную заявку в другом.
Как определить Код класса (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 написал:
И я не "все"...
Что же тогда вопросы задаете?
Страницы: 1 2 След.
Наверх