скрипт на 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 3.0.

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