Leonid (Автор тем)

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

Страницы: 1
getFuturesHolding - возврат Nil если не было сделок?
 
Здравствуйте.

Я определения текущего количества фьючерсов в портфеле я использую функцию getFuturesHolding.
Обратил внимание, что если по тикеру ранее не было сделок, то функция возвращает Nil, а не 0 как я предполагал.
Если сделки ранее были, то количество бумаг отображается корректно.

Можно ли как-нибудь выйти из этой ситуации?
OnTransReply - что я делаю не так?
 
Здравствуйте,

никак не могу разобраться с этой функцией.
Есть такая молотилка, которая транзакции шлет, но OnTransReply не срабатывает...
Код
local LastStatus    = nil
local trans_id=1

local stopped = false
function OnStop()
   stopped = true
   return 2000
end

function main()

 while stopped == false do

 trans_id=trans_id+1
local OrderSell = {
                     ["ACTION"]="NEW_ORDER",
                     ["ACCOUNT"]= "SPBFUT0000",
                  ["OPERATION"] = "B",
                     ["CLASSCODE"]="SPBFUT",
                            ["SECCODE"] = "SRU0",
                            ["PRICE"] = "0",
                     ["QUANTITY"] = tostring(1),
                     ["TRANS_ID"] = tostring(trans_id),
                     ["TYPE"] = "M",
                     }
         local result = sendTransaction(OrderSell)

   sleep(1000)
   end
  end


function OnTransReply(trans_reply)
   if trans_reply.trans_id == trans_id then
      if trans_reply.status == LastStatus then return else LastStatus = trans_reply.status end
           if       trans_reply.status == 0    then message('OnTransReply(): Транзакция отправлена серверу')
            elseif   trans_reply.status == 1    then message('OnTransReply(): Транзакция получена на сервер QUIK от клиента')
            elseif   trans_reply.status == 2    then message('OnTransReply(): Ошибка')
            elseif   trans_reply.status == 3    then message('OnTransReply(): ТРАНЗАКЦИЯ ВЫПОЛНЕНА')
         end
   end
end
Отключение скрипта при получении Nil
 
Здравствуйте.

Есть скрипт, который берет данные из стакана котировок для дальнейшей работы.
Если из стакана пропадают котировки (например, из-за сбоя сети), то функции возвращает Nil, скрипт отключается и его нужно включать вручную.

Можно добавить какой-нибудь код, чтобы этого отключения не было?

Заранее спасибо.
Функция для получения данных из таблицы сделок
 
Здравствуйте,

какой функцией можно воспользоваться для получения данных из таблицы сделок?

Интересует, в частности, общая сумма сделок, которая бы обновлялась после каждой успешной транзакции.

Заранее спасибо.
Какую функцию нужно использовать для текущего кол-ва ETF?
 
Здравствуйте.

Какую функцию нужно использовать для получения текущего кол-ва ETF в портфеле?

Есть параметры:

- код класса: TQTF
- account: LXXXXXXX
- код клиента: 00000
- код бумаги

Заранее спасибо.
Отправка заданного количества заявок
 
Здравствуйте!

К примеру есть некий скрипт, который отправляет заявку при срабатывании условия cond.
Но мне нужно, чтобы всего было отправлено заявок в количестве quantity.

Как в мой вариант скрипта добавить этот параметр?

Заранее спасибо.
Код
function main()
      ID=10
      
      if cond>100 then 
         ID=ID+1
         local OrderSell = {
                     ["ACTION"]="NEW_ORDER",
                     ["ACCOUNT"]= "SPBFUT0000",
                            ["OPERATION"] = "S",
                     ["CLASSCODE"]="SPBFUT",
                            ["SECCODE"] = "SRU0",
                            ["PRICE"] = "0",
                     ["QUANTITY"] = tostring(1),
                     ["TRANS_ID"] = tostring(ID),
                     ["TYPE"] = "M",
                     }
         local Err_Order = sendTransaction(OrderSell)
      end
      
end
Не работает getFuturesHolding
 
Всем привет!

Сегодня почему-то на Quik Junior не работает getFuturesHolding - возвращает nil
Вчера скрипт работал отлично.
В чем может быть причина?
Код
function main()

   local a1 = getFuturesHolding("SPBFUT", "SPBFUT***","SRU0",0).totalnet
   local a2 = getFuturesHolding("SPBFUT", "SPBFUT***","LKU0",0).totalnet



      message("Sber   "..a1.."\nLkon   "..a2)

end
Не обновляется таблица при добавления цикла repeat...until
 
Всем привет!

Сделал скрипт, который при добавлении цикла repeat...until почему-то перестает обновляться.
Если этот цикл убрать, то обновление идет без проблем...
Почему бы так?

Заранее спасибо!
Код
local stopped = false
function OnStop()
   stopped = true
   return 2000
end


function main()


local Table = AllocTable()
AddColumn(Table, 1,"Data", true, QTABLE_DOUBLE_TYPE, 18)

CreateWindow(Table)
SetWindowCaption(Table, "Data table")
SetWindowPos(Table, 0, 10, 380, 80)


InsertRow(Table, -1)

   while stopped == false do

      Quotes_1 = getQuoteLevel2("SPBFUT", "SRU0")

      Bid_Count_1 = tonumber(Quotes_1.bid_count)

      if Bid_Count_1>1 then
         aa= tonumber(Quotes_1.bid[Bid_Count_1].quantity)
         SetCell(Table, 1, 1, tostring(aa))
      end

      local asset = getFuturesHolding("SPBFUT", "SPBFUT****","SRU0",0).totalnet

      repeat

            if aa>1 and asset>0 then

               local ID_B_Order=10
               local OrderSell = {
                     ["ACTION"]="NEW_ORDER",
                     ["ACCOUNT"]= "SPBFUT****",
                            ["OPERATION"] = "S",
                     ["CLASSCODE"]="SPBFUT",
                            ["SECCODE"] = "SRU0",
                            ["PRICE"] = "0",
                     ["QUANTITY"] = tostring(1),
                     ["TRANS_ID"] = tostring(ID_B_Order),
                     ["TYPE"] = "M",
                     }
               local Err_Order = sendTransaction(OrderSell)
               message(Err_Order)
            end

            asset=asset-1

            sleep(1000)

      until asset==0
      --return

      sleep(3000)
   end

end
Что я делаю неправильно с последовательно размещаемыми заявками?, Отправка заявки после исполнения предыдущей
 
Всем привет!

Стоит задача: после покупки лукойла в количестве 1 штуки (появление его в портфеле) необходимо купить 1 сбер.

В текущем варианте кода лукойл покупается сразу, а сбер только после остановки скрипта и его повторного запуска.

Видимо необходим перезапуск getFuturesHolding; я его пробовал вставить внутрь цикла со сбером ,но эффекта нет...

Как мне следует поступить?

Заранее спасибо!

Код
function main()

   while stopped == false do

      local portfolio = getFuturesHolding("SPBFUT", "SPBFUT***","LKU0",0).totalnet


      if portfolio==0 then
         
         --заявка на покупку LKU0

      elseif portfolio==1  then

         --заявка на покупку SRU0

      end

      sleep(1000)
   end
en
Что я делаю неправильно с формой заявки?, Не уходит заявка на покупку по маркету
 
Всем привет!

Учусь кодить заявки на покупку/продажу и сделал такой код
Код
local stopped = false                                                                                                -- переменная управляющая основным циклом скрипта если значение false цикл работает, если true цикл останавливается и выполнение скрипта заканчивается.
function OnStop()                                                                                                   -- функция обратного вызова OnStop() вызывается терминалом QUIK в случае нажатия кнопки "Остановить" в окне "Доступные скрипты"
   stopped = true                                                                                                   -- изменение значения переменной stopped на true, для остановки основного цикла скрипта
   return 2000
end

function main()

   while stopped == false do
      local ID_B_Order
      local OrderSell = {
                     ["ACTION"]="NEW_ORDER",
                     ["ACCOUNT"]= "SPBFUT*****",
                            ["OPERATION"] = "B",
                     ["CLASSCODE"]="SPBFUT",
                            ["SECCODE"] = "LKU0",
                            ["PRICE"] = "0",
                     ["QUANTITY"] = tostring(1),
                     ["TRANS_ID"] = tostring(ID_B_Order),
                     ["TYPE"] = "M",
                     }
            message(Err_Order)
            local Err_Order = sendTransaction(OrderSell)

            while Status_B_Order == nil and Err_Order == "" do
               sleep(10)
            end
   end

end

При запуске Квик не реагирует вообще.
Может быть что-то не дописал или в Квике должна быть открыта какая-нибудь таблица?

Спасибо за подсказку )
Рваный график на дневках IMOEX, Некорректное отображение цен
 
Всем привет!

На моем Quil Junior почему-то отображается рваный график ММВБ, более того, даже свечу за субботний день нарисовал, хотя торгов не было.
На скриншоте "дефектные" свечи обведены красным.
Может что-то в настройках неверно?
Запуск и остановка скрипта в заданное время, Код запуска в Lua в необходимое время
 
Всем привет!

Допустим, что у меня есть скрипт в виде:
Код
function main()
     --какой-то код    
     sleep(1000)
End

Какой код нужно добавить, что функция запускалась каждый день в 14:00:00 и останавливалась в 15:00:00?

Заранее спасибо!
Что я делаю неправильно с циклами while...do или repeat...until?, Неправильное срабатывание цикла в скрипте
 
Всем привет! :smile:

Не могу найти ошибку в применении цикла.

Задача: есть в портфеле 3 фьючерса в лонге.
Скрипт должен их продавать по 1 штуке пока в портфеле не будет 0

Я сделал такой скрипт:

--определяем текущее количество фьючей в портфеле в лонге

local asset = getFuturesHolding("SPBFUT", "SPBFUT*****","LKU0",0).totalnet

--задаем условия\количество  продажи

repeat

local Order = sendTransaction(MarketOrderSell)

until asset = 0

При выполнении скрипт обрушивает многотысячный поток заявок на продажу... :shock:

Что я делаю неправильно?


Заранее спасибо.
Страницы: 1
Наверх