getFuturesHolding - возврат Nil если не было сделок?
Пользователь
Сообщений: Регистрация: 10.07.2020
25.08.2020 10:29:26
Здравствуйте.
Я определения текущего количества фьючерсов в портфеле я использую функцию getFuturesHolding. Обратил внимание, что если по тикеру ранее не было сделок, то функция возвращает Nil, а не 0 как я предполагал. Если сделки ранее были, то количество бумаг отображается корректно.
Можно ли как-нибудь выйти из этой ситуации?
OnTransReply - что я делаю не так?
Пользователь
Сообщений: Регистрация: 10.07.2020
20.08.2020 14:04:12
Здравствуйте,
никак не могу разобраться с этой функцией. Есть такая молотилка, которая транзакции шлет, но 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
Пользователь
Сообщений: Регистрация: 10.07.2020
12.08.2020 12:20:46
Здравствуйте.
Есть скрипт, который берет данные из стакана котировок для дальнейшей работы. Если из стакана пропадают котировки (например, из-за сбоя сети), то функции возвращает Nil, скрипт отключается и его нужно включать вручную.
Можно добавить какой-нибудь код, чтобы этого отключения не было?
Заранее спасибо.
Функция для получения данных из таблицы сделок
Пользователь
Сообщений: Регистрация: 10.07.2020
11.08.2020 08:09:51
Здравствуйте,
какой функцией можно воспользоваться для получения данных из таблицы сделок?
Интересует, в частности, общая сумма сделок, которая бы обновлялась после каждой успешной транзакции.
Заранее спасибо.
Какую функцию нужно использовать для текущего кол-ва ETF?
Пользователь
Сообщений: Регистрация: 10.07.2020
06.08.2020 10:13:13
Здравствуйте.
Какую функцию нужно использовать для получения текущего кол-ва ETF в портфеле?
Есть параметры:
- код класса: TQTF - account: LXXXXXXX - код клиента: 00000 - код бумаги
Заранее спасибо.
Отправка заданного количества заявок
Пользователь
Сообщений: Регистрация: 10.07.2020
31.07.2020 11:38:56
Здравствуйте!
К примеру есть некий скрипт, который отправляет заявку при срабатывании условия 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
Пользователь
Сообщений: Регистрация: 10.07.2020
17.07.2020 10:24:08
Всем привет!
Сегодня почему-то на 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
Пользователь
Сообщений: Регистрация: 10.07.2020
16.07.2020 14:42:59
Всем привет!
Сделал скрипт, который при добавлении цикла 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
Что я делаю неправильно с последовательно размещаемыми заявками?, Отправка заявки после исполнения предыдущей
Пользователь
Сообщений: Регистрация: 10.07.2020
14.07.2020 10:37:37
Всем привет!
Стоит задача: после покупки лукойла в количестве 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
Что я делаю неправильно с формой заявки?, Не уходит заявка на покупку по маркету
Пользователь
Сообщений: Регистрация: 10.07.2020
13.07.2020 12:08:53
Всем привет!
Учусь кодить заявки на покупку/продажу и сделал такой код
Код
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, Некорректное отображение цен
Пользователь
Сообщений: Регистрация: 10.07.2020
12.07.2020 16:18:08
Всем привет!
На моем Quil Junior почему-то отображается рваный график ММВБ, более того, даже свечу за субботний день нарисовал, хотя торгов не было. На скриншоте "дефектные" свечи обведены красным. Может что-то в настройках неверно?
Запуск и остановка скрипта в заданное время, Код запуска в Lua в необходимое время
Пользователь
Сообщений: Регистрация: 10.07.2020
11.07.2020 15:33:41
Всем привет!
Допустим, что у меня есть скрипт в виде:
Код
function main()
--какой-то код
sleep(1000)
End
Какой код нужно добавить, что функция запускалась каждый день в 14:00:00 и останавливалась в 15:00:00?
Заранее спасибо!
Что я делаю неправильно с циклами while...do или repeat...until?, Неправильное срабатывание цикла в скрипте
Пользователь
Сообщений: Регистрация: 10.07.2020
10.07.2020 22:39:24
Всем привет!
Не могу найти ошибку в применении цикла.
Задача: есть в портфеле 3 фьючерса в лонге. Скрипт должен их продавать по 1 штуке пока в портфеле не будет 0
Я сделал такой скрипт:
--определяем текущее количество фьючей в портфеле в лонге
local asset = getFuturesHolding("SPBFUT", "SPBFUT*****","LKU0",0).totalnet
--задаем условия\количество продажи
repeat
local Order = sendTransaction(MarketOrderSell)
until asset = 0
При выполнении скрипт обрушивает многотысячный поток заявок на продажу...