Open = ds:O(1) High = ds:H(1) Low = ds:L(1) Close = ds:C(1) Volume = ds:V(1) week_day = ds:T(1).week_day count = ds:T(1).count
Параметр | Тип | Описание |
---|---|---|
count | NUMBER | количество тиковых интервалов в секунду. Может принимать значения от «1» до «10000» включительно. |
ms | NUMBER | Миллисекунды |
sec | NUMBER | Секунды |
min | NUMBER | Минуты |
hour | NUMBER | Часы |
day | NUMBER | День |
week_day | NUMBER | Номер дня недели |
month | NUMBER | Месяц |
year | NUMBER | Год |
-- Пример получения первой свечи текущего дня function main() -- Создаем таблицу со всеми свечами нужного интервала, класса и кода ds, error_desc = CreateDataSource("QJSIM", "SBER", INTERVAL_H1) -- Ограничиваем количество попыток (времени) ожидания получения данных от сервера local try_count = 0 -- Ждем пока не получим данные от сервера, -- либо пока не закончится время ожидания (количество попыток) while ds:Size() == 0 and try_count < 1000 do sleep(100) try_count = try_count + 1 end -- Если от сервера пришла ошибка, то выведем ее и прервем выполнение if error_desc ~= nil and error_desc ~= "" then message("Ошибка получения таблицы свечей:" .. error_desc) return 0 end -- Текущий день месяца (1 - 31) local today_day = tonumber(os.date("%d")) -- Текущая свеча (с которой начинаем поиск) local current_candle = ds:Size() -- Максимальное количество свечей для поиска -- не может быть больше чем общее количество свечей в таблице local max_candles = math.min(1000, ds:Size()) -- Индекс первой свечи текущего дня local first_candle_index = nil -- Цикл пока не нашли первую свечу дня либо не проверили -- максимальное количество свечей while first_candle_index == nil and current_candle > ds:Size() - max_candles do -- Если день текущей свечи не совпадает с текущим днем if tonumber(ds:T(current_candle).day) ~= today_day then -- Тогда индекс искомой свечи first_candle_index = current_candle - 1 message("Найден индекс: " .. tostring(first_candle_index)) end current_candle = current_candle - 1 end -- Если индекс был найден if first_candle_index ~= nil then message("Первая свеча дня:") message(" индекс: " .. tostring(current_candle)) message(" время: " .. tostring(ds:T(current_candle).hour) .. ":" .. tostring(ds:T(current_candle).min) .. ":" .. tostring(ds:T(current_candle).sec)) message("Последняя свеча предыдущего дня:") message(" индекс: " .. tostring(current_candle - 1)) message(" время: " .. tostring(ds:T(current_candle - 1).hour) .. ":" .. tostring(ds:T(current_candle - 1).min) .. ":" .. tostring(ds:T(current_candle - 1).sec)) -- Если индекс найти не удалось else message("Первая свеча дня не найдена. Не достаточно свечей для поиска (" .. tostring(ds:Size()) .. ").") message("Самая дальняя свеча:") message(" индекс: " .. tostring(1)) message(" время: " .. tostring(ds:T(1).hour) .. ":" .. tostring(ds:T(1).min) .. ":" .. tostring(ds:T(1).sec)) end end