скрипт на Lua - экспорт

Скрипт на LUA — экспорт в CSV файл

By Mechel

Lua — скриптовый язык программирования разработанный в Бразилии.Интерпретатор языка является свободно распространяемым, с открытыми исходными текстами на языке Си. Включая минимальный набор типов данных, Lua пытается найти баланс между мощностью и размером.

Простой пример как можно с помощью LUA Quik осуществлять вывод данных с графика, без открытия графика.
Ввод данных OHLC котировок в текстовый файл, скачать пример скрипта.


--lua example
is_run = true

--настройка параметров
secc = "CHMF" --код бумаги
codclass = "TQBR" --код класса бумаги
inter= INTERVAL_M5 --таймфрейм
timezone = 3; --временная зона
pathf = "r:\\forAmi" ; --путь, где будет создаваться файл
cntBars = 500; --сколько баров надо вывести
--настройка параметров

function OnInit()
-- out_file = io.open(getScriptPath().."\\"..tostring(secc)..".csv","w")
out_file = io.open(pathf .."\\"..tostring(secc)..".csv","w")

is_run = (out_file ~= nil)

ds = CreateDataSource(codclass, secc,inter ); --источник данных
ds:SetUpdateCallback(NewChartData)--обновление
end

function FTEXT(int)
local dtm = tostring(int)
local dtmN = string.len(int)
if dtmN==1 then
Output = "0" .. tostring(dtm);
else Output=dtm
end
return Output
end

function main()
while is_run do
local Size = ds:Size(); --всего баров количество свечей в источнике данных

if cntBars>Size then
cntBars = Size-1;
end

for i = Size-cntBars, Size, 1 do
local O = ds:O(i); -- Получить значение Open для указанной свечи (цена открытия свечи)
local H = ds:H(i); -- Получить значение High для указанной свечи (наибольшая цена свечи)
local L = ds:L(i); -- Получить значение Low для указанной свечи (наименьшая цена свечи)
local C = ds:C(i); -- Получить значение Close для указанной свечи (цена закрытия свечи)
local V = ds:V(i); -- Получить значение Volume для указанной свечи (объем сделок в свече)
local T = ds:T(i); -- Получить значение Time для указанной свечи (время открытия свечи (таблица datetime))
seconds_since_epoch = os.time(T);
datetime = os.date("!*t",seconds_since_epoch);
--
--sleep(500)
--message("dtm is " .. tostring(getScriptPath() ), 3)

--вывод в файл
out_file:write(secc ..";".. tostring(inter).. ";" .. tostring(datetime.year).. tostring(FTEXT(datetime.month)) .. tostring(FTEXT(datetime.day)) .. ";" .. tostring(FTEXT(datetime.hour + timezone)) .. tostring(FTEXT(datetime.min)) .. tostring(FTEXT(datetime.sec)) .. ";" .. tostring(O)..
";" .. tostring(H)..";" .. tostring(L)..";" .. tostring(C)..";" .. tostring(V).."\n")
out_file:flush()
sleep(0)
end;
out_file:close()
--вывод в файл

sleep(5000) -- приостановка (1000 = на 1 секунду)
out_file = io.open(pathf .."\\"..tostring(secc)..".csv","w")

end
end

 

Результат выглядит так :
CHMF;5;20160608;121500;685.5;688.1;685.3;687.2;516
CHMF;5;20160608;122000;687.6;688.7;685.9;686.1;520
CHMF;5;20160608;122500;685.7;690.4;685.3;687.7;442
CHMF;5;20160608;123000;687.9;687.9;687.2;687.2;79
CHMF;5;20160608;123500;687.2;689;687;688.5;201
CHMF;5;20160608;124000;688.5;688.5;686.7;687.1;129
...............

Купить улучшенный скрипт: Экспорт котировок из Quik в CSV: ver 2.0.

Купить Cкрипт, выполняюший автоматический импорт котировок из текстовых файлов CSV в программу тех. анализа Amibroker