Юрий (Автор тем)

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

Страницы: 1
Останавливается скрипт
 
Всем доброго! Подскажите в чем может быть причина остановки скрипта по ошибке: "attempt to index a nil value" (попытка индекса нулевой стоимости)? Скрипт останавливается только при запуске Квика (скрипт не выключаю - только закрываю и открываю квик)?
local left =    -- эмитенты в таблице left задаем в самом начале
{
{
name = "SiU5"
     }
}
function oprosstakanov()                                   -- функция получения данных стакана работает не прекращая
     for i = 1,#left do                                         -- здесь перебираются эмитенты
local b = getQuoteLevel2(getSecurityInfo('',left[i].name).class_code, left[i].name)   -- ОШИБКА в этой строке
if b.bid and b.bid_count+0>0 then
local a = tonumber(b.bid[tonumber(b.bid_count)].price) * left[i].quantity
                 ------
           end
     end
end

Если запускать скрипт, при запущенном Квике - все в полном порядке.
переменная с ошибкой
 
пожалуйста подскажите, как идентифицировать переменную с ошибкой:  -1.#IND
a = 0;
a = b + c - в результате (понятно по какой причине) получаем  -1.#IND
пробую так:
1) if a == "-1.#IND" - не получается; 2)  if a == -1.#IND - не получается; 3)  if a == nil - не получается;
не соответствует время
 
Перед выставлением ряда заявок запоминаю время t = os.time().
Далее после делаю "проверку" всех сделок из табл Сделок, время которых позже t :

for e = 0,getNumberOf("trades") - 1 do
    if os.time(getItem("trades",e).datetime)>= t and getItem("trades",e).sec_code ==name then

Так вот: скрипт не находит некоторые сделки, т.к. время в таблице Сделок меньше, чем t , которое было сделано ранее (перед выставлением заявки).
Вопрос: 1) какое отличие между t = os.time() и временем в таблице сделок.
2) постоянная ли это величина
3) как  это обойти? (
Скорость получения данных OnParam OnQuote
 
Подскажите откуда быстрее получить данные: 1) из OnParam
или 2) из OnQuote

интересуют цены эмитентов
MOVE_ORDERS - замена заявки
 
подскажите пож-та, где ошибка?
Скрипт выставляет одну лимитную заявку на ФОРТС (по опционам) - определяем ее № (OrderNum_OPT) - order.order_num
далее надо переставить эту заявку на другую цену. Делаю так:

function perestavit_order_OPT()
local trans_id=math.random (1,999999)
     local transaction = {
["ACTION"]= "MOVE_ORDERS",
["TRANS_ID"]= tostring(trans_id),
["CLASSCODE"]=tostring(CLASS_CODE),
["SECCODE"]=tostring(SEC_CODE),
["FIRM_ID"]=tostring(FIRM_ID),                                             -- берем из табл. Сделок  "Дилер"
["MODE"]="0",    
["FIRST_ORDER_NUMBER"]=tostring(OrderNum_OPT),      --№ ранее выставленной заявки
["FIRST_ORDER_NEW_PRICE"]="3200",                              -- новая цена для лимитной заявки
["FIRST_ORDER_NEW_QUANTITY"]="0"
     }
local res=sendTransaction(transaction)

if res~="" then
return nil, "send_LimitFUT():"..res
else
return trans_id
end
end
sendLimitFO, параметры
 
Здравствуйте. Функция библиотеки QL  sendLimitFO.
в признаке execution_condition - KILL_BALANCE (Снять остаток) - как работает при указании цены лимитной заявки и количества?
1) если не дали сразу по лимитной цене, значит сделка отменяется;
2) если дали половину объема , то остальная часть отменяется;
3) надо ли  параметр KILL_BALANCE указывать в " "
4) признак expire_date - TODAY (до окончания текущей торговой сессии) надо ли указывать в " "
Набор функций Qlua для автозаполнения, нужны функции Qlua
 
Подскажите пож-та, можно ли где-то взять набор функций   Qlua ,  что бы добавить в стандартный набор функций  Автозаполнения  в программу  SciTe (наверное не важно в какую программу).
Страницы: 1
Наверх