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

EXPORT_QUOTE_V3.0

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

В результате получется файл с названием бумаги и содержания:
LKOH;10;20140725;134000;1982.5;1989.4;1979;1979;39587
LKOH;10;20140725;135000;1978.5;1979.7;1976.7;1978;9334
LKOH;10;20140725;140000;1977.5;1984.7;1977.5;1981.9;30015

Формат:
TICKER,TF,DATE_YMD,TIME,OPEN,HIGH,LOW,CLOSE,VOLUME

В архиве два скрипта:
exportToCsv_V3.lua
автоматический экспорт в файл, аналогичный ручному экспорту в Quik правой кнопкой мыши на любом баре.

exportToCsv_V3_inv.lua
автоматический экспорт в файл, с обратным порядком строк, для использования с Excel.

 

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

Дополнительная информация:

Настройки:
Настройки выполняются редактированием самого скрипта —
любым текстовым редактором в файле exportToCsv.lua
Основные настройки:
pathf = «c:\\temp» ; —путь, где будет создаваться файл
cntBars = 1200; —сколько баров надо вывести в файл

Для добавления новой бумаги внизу файла exportToCsv.lua требуется добавить строку такого вида:
cycl («LKOH»,»TQBR»,INTERVAL_M5)

INTERVAL_M5 — означает что вывод будет с 5 минутного таймфрейма.
Другие варианты :
INTERVAL_M1 — (1) 1 минута
INTERVAL_M2 — (2) 2 минуты
INTERVAL_M3 — (3) 3 минуты
INTERVAL_M4 — (4) 4 минуты
INTERVAL_M5 — (5) 5 минут
INTERVAL_M6 — (6) 6 минут
INTERVAL_M10 — (10) 10 минут
INTERVAL_M15 — (15) 15 минут
INTERVAL_M20 — (20) 20 минут
INTERVAL_M30 — (30) 30 минут
INTERVAL_H1 — (60) 1 час
INTERVAL_H2 — (120) 2 часа
INTERVAL_H4 — (240) 4 часа
INTERVAL_D1 — (-1) 1 день
INTERVAL_W1 — (-2) 1 неделя
INTERVAL_MN1 — (-3) 1 месяц


 

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

Дополнительная информация:


Скрипт используется в среде Windows 7.
1) требуется первичная настройка параметров (путь где находятся файлы и их названия ), выполняется однократно вручную путем редактирования файла myQuick.js в любом текстовом редакторе.
2) далее скопировать файл ami_csv.format в директорию D:\AmiBroker\Formats
3) далее запуск скрипта необходимо настроить с помощью стандарного средства windows : планировщик: (запуск программы с:\ваш путь\myQuick.js) каждую минуту или как Вам нужно.

Настройки в самой программе Amibroker:
1) «File»-«Database settings»-Выбрать «database source (local database)».
2) для создания новой бумаги (которая будет храниться в локальной базе Amibroker) необходимо нажать в меню вверху «Symbol»—«New»—Ввести точно такое же название как файл, но без расширения csv. Например, для добавления котировок из файла LKOH.csv надо ввести просто LKOH.