Блог им. Ytka

квик автостоп

Здравствуйте. Пишу простой скрипт выставления автостопа на луа для квика. Работаю только на фьюче ртс.
1. выставил я заявку на покупку одного фьюча. заявка исполнилась, открытых позиций 1 (для лонга). как узнать цену, по которой открылась позиция? через функцию OnTransReply или как то по другому? OnTransReply вроде не всегда гарантированно приходит.
2. выставил я заявку на покупку стапидцот фьючей. заявка исполнится по разным ценам (чем бОльшее количество фьючей, тем бОльший спред. 
как в этом случае узнать цену открытия позиций?
610
11 комментариев
Для того, что бы узнать цену исполнения заявки нужно анализировать таблицу всех сделок.
avatar
В OnTrade() приходит объем и цена по которой совершилась сделка
avatar
nwtour, цена какая? средняя последняя? если большое количество и разные цены
avatar

Валентин, OnTrade придет на каждый «удар» — если ударить 100 контрактами по такому стакану (цена-контракты): 500-10, 510-20, 520-30, 530-45 то придут 4 OnTrade():

цена 500 количество 10

цена 510 количество 20

цена 520 количество 30

цена 530 количество 40

p.s. среднюю можно вручную в коде подсчитывать

avatar
nwtour, 
к примеру выставил я заявку на 100 контактов. заявка начала выполнятся. в ответ посыпались onTrade (по три одинаковых штуки каждую покупку.)
Как в qlua ловить все OnTrade и помещать в один массив для дальнейшего анализа? Не могли бы вы привести пример кода?
avatar

Валентин, 

allTrades = {}

 

function OnTrade(trade)
    --Добавляем новый элемент в глобальный массив allTrades с данными о текущей сделке

    allTrades[#allTrades+1] = trade

end

 

--------------------

По поводу «по три одинаковых штуки каждую покупку» — эта проблема появилась в 7 квике, разработчики исправлять не собираются forum.quik.ru/forum10/topic1082/

 

Я сделал затычку как написано тут forum.quik.ru/messages/forum10/message10036/topic1082/#message10036

avatar
nwtour, демосчет у арки на седьмом квике.
такой код: 

allTrades = {}
function OnTrade(trade)
   allTrades[#allTrades + 1] = trade
   message(print_arr(allTrades))
end

функция print_arr распечатывает содержимое массива со всеми подмассивами.
так вот. в квик приходит три раза одно и тоже сообщение: одномерный массив с полной инфой (все что присылает ontrade).

а я предполагал что третье сообщение — будет трехмерный массив, второе сообщение — двухмерный массив. я не прав?

avatar

Валентин, Я же прикрепил сообщение — это «бага» квика, он на сервере обновляет транзакцию и повторно вызывает OnTrade()

Сделайте вот так и повторные сообщения пропадут:

allTrades = {}
function OnTrade(trade)

    --y это уникальный идентификатор транзакции

  

y = tostring(trade.trade_num)… "="… tostring(trade.order_num)

   if allTrades[y] then

      --повторные транзакции пропускаем

      return

   end

   allTrades[y] = trade

   --массив с ключом id транзакции, а значение это вложенный массив с данными сделки
   message(print_arr(allTrades))
end

avatar
nwtour, все благодарю, вроде разрулил
avatar

Читайте на SMART-LAB:
Установили новый купон по выпуску облигаций БО-П13
Друзья, привет! Первый пост в этом году начинаем с хороших новостей — в рамках оферты мы установили новую ставку купона по облигациям серии...
Фото
Российский бизнес вдвое увеличил активность на денежном рынке
Фото
ПАО «АПРИ» объявляет сбор заявок на новый выпуск облигаций серии БО-002Р-13
ПАО «АПРИ» объявляет сбор заявок на новый выпуск облигаций серии БО-002Р-13 ПАО «АПРИ» сообщает об открытии книги заявок на...
Фото
Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...

теги блога Валентин

....все тэги



UPDONW
Новый дизайн