Валентин
Валентин личный блог
05 марта 2016, 14:26

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

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

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

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

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

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

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

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

          • nwtour
            20 марта 2016, 12:31

            Валентин, 

            allTrades = {}

             

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

                allTrades[#allTrades+1] = trade

            end

             

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

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

             

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

              • nwtour
                22 марта 2016, 13:38

                Валентин, Я же прикрепил сообщение — это «бага» квика, он на сервере обновляет транзакцию и повторно вызывает 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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн