Ontrade

Страницы: 1
RSS
Ontrade
 
Подскажите, почему у меня в этой части скрипта выдает ноль?
А вот если бы указал trade=getItem("trades", getNumberOf("trades")-1) то получил бы номер заявки предыдущей сделки

function OnTrade(trade_data)
trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)

end
 
первый элемент таблицы имеет индекс  0,
всего элементов в таблице:  getNumberOf("trades")
последний элемент имеет индекс getNumberOf("trades")-1
первый свободный( несуществующий ) элемент имеет индекс:  getNumberOf("trades")
----------------------
Поэтому и ноль.
 
Код
function OnTrade(trade_data) 
  message(tostring(trade_data["order_num"]),1) 
end 
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Alexey K пишет:
почему у меня в этой части скрипта выдает ноль?
А вот если бы указал trade=getItem("trades", getNumberOf("trades")-1) то получил бы номер заявки предыдущей сделки
Потому что в хранилище Квика сделка попадает после отработки колбека. Поэтому внутри колбека getNumberOf возвращает количество сделок без учёта последней. И взять её значение из таблицы функцией getItem невозможно.
Но вот почему у вас ноль, а не nil - вот это вопрос.
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Серж пишет:
Цитата
Alexey K пишет:
почему у меня в этой части скрипта выдает ноль?
А вот если бы указал trade=getItem("trades", getNumberOf("trades")-1) то получил бы номер заявки предыдущей сделки
Потому что в хранилище Квика сделка попадает после отработки колбека. Поэтому внутри колбека getNumberOf возвращает количество сделок без учёта последней. И взять её значение из таблицы функцией getItem невозможно.
Но вот почему у вас ноль, а не nil - вот это вопрос.
Момент записи сделки в хранилище не имеет никакого значения в данном случае.
--------------------------------
В данном колбеке:
------------------------------------
function OnTrade(trade_data)
trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)
end
------------------------
обрабатывается не последняя совершенная сделка,
а сделка, которая находится после в таблице  в ячейке getNumberOf("trades")

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

т е trade_data никакого отношения не имеет к следующим операторам:

trade=getItem("trades", getNumberOf("trades"))
message(tostring(trade["order_num"]),1)
--------------------------------
Т е message выводит в сообщение номер сделки в пустой ячейке таблицы.
(см. мой комент выше)


---------------------------------------
А эта запись:
------------------------------
function OnTrade(trade_data)   message(tostring(trade_data["order_num"]),1) end
--------------------------------
обращается не к хранилищу, а к полученной таблице с параметрами сделки.
Хранилище здесь тоже не имеет никакого значения.
---------------------------------------------------
ноль очевидно потому, что  trade_data.order_num=0.
 
Цитата
Николай Камынин пишет:
обращается не к хранилищу, а к полученной таблице с параметрами сделки.
Хранилище здесь тоже не имеет никакого значения.
Николай Камынин, это вы для меня всё написали? Зачем? Что вы пытались этим доказать?
Пример #3 показывает, как работать с последней сделкой из колбека. Что тут не ясно?
Цитата
Николай Камынин пишет:
Т е message выводит в сообщение номер сделки в пустой ячейке таблицы.
Что до этого, то мне не понятно, откуда у nil может быть номер сделки? Не поясните?
Надо делать так, как надо. А как не надо - делать не надо.
 
забавно наблюдать, как люди измеряют у кого QLUA-skill круче - при том, что сама qlua ещё в достаточно сыром состоянии, равно как и документация по ней:)))
разработчики, наверно там со стороны хихикают уже давно:)) если бы арке не было нас..рать на свой биндинг-проект - они бы уже давно бы всё причесали.
 
раз разработчики не хотят идти навстречу пользователям - то, самый простой способ получить ВСЕ ответы по QLUA - IDA Pro
Страницы: 1
Читают тему
Наверх