При переборе циклом for выдвет ошибку attempt to index a nil value. В чем ошибка функции?
Код
function Count_Contracts_By_Price(price, sell_or_buy_order)
local qty_opders = 0
for f = 0, getNumberOf("orders") - 1 do
local order_info = getItem("orders", f)
if order_info.sec_code == Emit and order_info.account == MyAccount and CheckBit(order_info.flags, 0) == 1 and (order_info.brokerref == "LimitLevels") then
if (order_info.price == price) and (CheckBit(order_info.flags, 2) == 1) and (sell_or_buy_order == "Sell") then
qty_opders = qty_opders + order_info.qty
elseif (order_info.price == price) and (CheckBit(order_info.flags, 2) ~= 1) and (sell_or_buy_order == "Buy") then
qty_opders = qty_opders + order_info.qty
end
end
end
return qty_opders
end
Да, проблема решена. Я код пишу в MS Visual Studio Code и кодировка стояла UTF-8. Для решения проблемы нужно просто пересохранить файл в кодировке Windows 1251 и все будет тип топ.
Установил стандартные шрифты, как указано в пунктах 1-3. Убрал файл info.wnd из корневой папки, перезапустил Квик, открылся Квик безо всяких таблиц графиков и .тп., запустил робота и все как прежде - вместо русских букв показывает иероглифы. Может проблема в Windows 11. У меня лицензионная система, купленная официально. Но нюанс в том, что сборка Британская. Может там собака зарыта?
Больше двух лет не запускал своего робота и возникла в нем необходимость. При отображении таблиц робота вместо русских блов отображаются непонятные символы (СКИРН). Как исправить проблему?
local function Algo(S)
local pos = S.POS
local mp = S.MIDDLE_PRICE
end
то все замечательно работает, но тогда универсальность функции теряется. Мне нужно, чтобы в эту функцию можно было передавать и другие таблицы. А иначе придется эту функцию несколько раз копировать
У меня еще вопрос, можно ли таблицу передавать в функцию, как переменную? Она в строковое значение не переведится ли? Может у меня из-за этого ошибка? Он же ругается, что ждет таблицу, а получает переменную.
А вот с этим S = {}............S = 'lalalla' все в порядке
Почему, когда я передаю таблицу в качестве параметров функции, функция не работает и выдает сообщение, функция ждет таблицу, а получает строковые данные?
Всех приветствую! Есть у кого код, который высчитвает из таблицы сделок прибыль и убыток по инструменту срочного рынка? Если не жалко поделитесь пожалуйста!
if (PosNow == 0 or (PosNow ~= 0 and SignFunc(PosNow) ~= SignFunc(PrevPos)))then DeleteAllProfit(MyAccount, Emit, Class, FileLog, "Удаление ПРОФИТА при перевороте или нулевой позе") end
Если текущая поза равна нулю или был переворот позиции, то удаляются все профиты.
Есть участок кода: function DeleteAllProfit(acc, emit, class, file, prevString) --ФУНКЦИЯ УДАЛЕНИЯ ВСЕХ ТЕЙК-ПРОФИТОВ local N = getNumberOf("orders") local count = 0 for i = 0, N - 1 do local row = getItem("orders", i) if (row.account == acc and row.sec_code == emit and row.class_code == class) then if (bit.band(row.flags,1) > 0) then local keyNumber = row.order_num DeleteProfitByNumber(emit, class, keyNumber, file, prevString) count = count + 1 end end end return count end
Вопрос: почему при вызове функции "DeleteAllProfit " заявка удаляется правильно, но одновременно выскакивает ошибка в Квике:Ошибка снятия заявки. [GW][14] "Не найдена заявка для удаления"?