Блог им. E_psh |Алготрейдинг. QLUA округление данных (round)

function round(number, znaq) -- функция округления числа num до знаков znaq
local num = tonumber(number)
local idp = tonumber(znaq)

	if num then
		local mult = 10 ^ (idp or 0)
		if num >= 0 then return math.floor(num * mult + 0.5) / mult
		else return math.ceil(num * mult - 0.5) / mult
		end
	else return num
	end
end

Блог им. E_psh |Алготрейдинг. QLUA получение данных сколько осталось инструменту дней до экспирации

function DaysToDie(class_code, sec_code)
-- Получаем количество дней до погашения инструмента,<br />-- class_code - для фьючерсов SPBFUT<br />-- sec_code - код инструмента SiZ2, BRZ2, CRZ2 и т.д.
-- если < 4, просим заменить инструмент
-- для работы необходима ф-ция round (округляем до целого числа)
-- is_run - глобальный флаг работы робота - false = отключаемся.
---

	local daysToDie = 0 -- количество дней до погашения инструмента
	----- получаем количество дней до погашения, если < 4, рекомендуем перейти на новый инструмент ----------
	daysToDie = round(getParamEx(class_code, sec_code, "DAYS_TO_MAT_DATE").param_value, 0)
	if daysToDie <= 4 and daysToDie > 0 then
	message("Количество дней до погашения инструмента " .. SEC_CODE .. " равно " .. tostring(daysToDie) .. ". Необходимо заменить инструмент в настройках робота")
	elseif	daysToDie == 0 or daysToDie == nil then
		message("Инструмент больше не торгуется")
		is_run = false
	end
	return daysToDie
end

Блог им. E_psh |Алготрейдинг. Сохранение созданной таблицы в файл .csv через GetTableSize(t_id) и GetCell()

Когда необходимо сохранить созданную таблицу с идентификатором t_id в файл не зная сколько строк и столбцов в ней в итоге будет.
Поможет следующий вариант:

( Читать дальше )

Копипаст |Алготрейдинг. Получение имени запускаемого скрипта

— Функция возвращает имя запускаемого скрипта
— может пригодиться для логирования результата (лог_<имя_запускаемого_скрипта>)

scName=""

function OnInit(script_path)
    scName=tostring(get_file_name(script_path)) -- получение полного пути к исполняемому скрипту
end

function main()
    message("имя файла = "..scName)
end

function get_file_name (file)
    local file_name = file:match("[^\\]*.lua$") -- поиск в строке полного пути к файлу названия скрипта.lua
    return file_name:sub(0, #file_name - 4) -- обрезка '.lua' в конце строки
end

....все тэги
UPDONW
Новый дизайн