Блог им. Ytka

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

Здравствуйте. Пишу простой скрипт выставления автостопа на луа для квика. Работаю только на фьюче ртс.
1. выставил я заявку на покупку одного фьюча. заявка исполнилась, открытых позиций 1 (для лонга). как узнать цену, по которой открылась позиция? через функцию OnTransReply или как то по другому? OnTransReply вроде не всегда гарантированно приходит.
2. выставил я заявку на покупку стапидцот фьючей. заявка исполнится по разным ценам (чем бОльшее количество фьючей, тем бОльший спред. 
как в этом случае узнать цену открытия позиций?
613
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:
Фото
👌 Время вспомнить о забытом активе
С начала года российский рынок акций демонстрирует неэластичность к изменению ключевых факторов для оценки.  Индекс Мосбиржи почти не...
Фото
Новое размещение ДиректЛизинга (BB, YTM не выше 29,03%) - на новой неделе. Иволга среди организаторов
t.me/cbonds/23863 Телеграм:  @AndreyHohrin Не является инвестиционной рекомендацией.  Ссылка на ограничение...
Фото
Дублирование портфеля в OsEngine: настройка копитрейдинга для Т-Инвестиций
В модуль копитрейдинга OsEngine был добавлен функционал дублирования позиций в портфеле в другой портфель. Копирование позиций, как и раньше,...
Фото
ЛУКОЙЛ: капитал за год упал на 3 триллиона рублей - списали иностранные активы, но все ли так плохо? Ушла эпоха, разбираемся вместе
ЛУКОЙЛ отчитался по МСФО — долгожданный отчет, все ждали сюрприза после SDN санкций (будут ли списывать активы и увидим ли убыток) Увидели!...

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

....все тэги



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