Блог им. Albus

Парсер котировок Финама

    • 30 августа 2018, 01:12
    • |
    • Albus
  • Еще
Пост будет полезен только тем, кто кодит на Луа.
---
Написал простенькую функцию, которая работает с архивом графиков Финама. На Финаме есть история торгов за много лет. Это полезно, чтобы прогнать вашу стратегию на максимально доступных исторических данных.
Архив Финама находится здесь: https://www.finam.ru/profile/moex-akcii/sberbank/export/
---
Заходите по ссылке, видите там:
Парсер котировок Финама
Там где «Формат записи в файл» выбираете как у меня: DATE,TIME,OPEN,HIGH,LOW,CLOSE,VOL. Можно брать и другие форматы, но тогда код функции придётся переписать.
---
Выбираете вверху даты с 1 января по 31 декабря и год за годом сохраняте себе на компьютер вот так:
Парсер котировок Финама
Если лень заходить на Финам и сохранять, можете просто скачать архив.
https://yadi.sk/d/83L4VzRx3agH6Z
Распакуйте. Увидите готовые файлы по СБЕРу с 2013 по 2018 (пятиминутки) и сам парсер. Скрипт должен начать работать без каких-либо дополнительных настроек. Скрипт и файлы истории должны лежать в одной папке. 
Файл FINAM_PARSER.lua запускается здесь:
Парсер котировок Финама
Выдаст такой текст в таблице сообщения КВИКа:
Парсер котировок Финама
---
Код парсера (файл FINAM_PARSER.lua) сопровождается подробными комментариями шаг за шагом.
ticker="SBER"--тикер акции
first_year=2013--первый сохранённый год
last_year=2018--последний сохранённый год. Не должно быть пропущенных лет. 
is_run=true--техническая переменная
---
function finam_parser(paper)--функция парсера
	giga_table={}--создаём пустую таблицу
	for i=first_year,last_year,1 do--крутим цикл с первого заданного года по последнего.
		local tmp_path=getScriptPath().."\\"..paper.."_"..i..".txt"--это путь к файлу с историей. getScriptPath получает путь, где лежит скрипт. В этой же папке лежат файлы с историей. Проверка есть ли такой файл, отключена. В моём рабочем роботе это делает функция path.exists. По умолчанию у вас её нет. Надо отдельно скачивать LuaForWindows.
			for line in io.lines(tmp_path) do--читаем файл с историей. Чтение идёт свечка за свечкой (строчка за строчкой)
				if string.find(line, "20") then--нам нужны только строчки, начинающиеся с цифры 20, (2018 например)
					new_line="{"..line.."}"--считали строку, превратили её в таблицу с помощью фигурных скобок и записали в переменную new_line
					local t = loadstring("local t = "..new_line.." return t")()--считали из строки мини-таблицу (свечку).
					if t[2]>100000 and t[2]<=184000 then--исключаем цены премаркета и пост-маркета.
						table.insert(giga_table,t)--вставляем свечу в создаваемую гигантскую таблицу giga_table
					end
				end
			end	
			message(tmp_path.." полей в таблице="..#giga_table,1)--КВИК выдаст сообщение: путь к файлу и текущий размер таблицы giga_table
	end
	return giga_table--парсер возвращает удобную таблицу giga_table, с которой можно дальше работать.
end

function main()--основная функция КВИКа.
	finam_parser(ticker)--запускаем парсер с указанным тикером.
	message (ticker..": giga_table принята")
	message ("посчитаю что нибудь")
	max_range=0--задали переменную. Будем искать свечу, у которой наивысшее расстояние между high и low
	for i=1,#giga_table do
		local range=giga_table[i][4]-giga_table[i][5]
		if range>max_range then 
			max_range=range
			data=giga_table[i][1]
			vremya=giga_table[i][2]
		end
	end
	message("Самая длинная свеча High-Low="..max_range.." была "..data.." "..vremya)
	message("The End")	
end

function OnStop(s) --что делать при нажатии на кнопку "остановить"
	is_run=false--прерываем вечный цикл внутри main
	return 100--число возле return - это время в миллисекундах. Если выставить этот параметр, скрипт будет удобнее останавливаться (без подвисаний)
end



Всем удачных исследований!
  • обсудить на форуме:
  • Quik Lua
5.3К | ★13
5 комментариев
добавь возможность оформлять текст в виде кода!
такая функция есть
avatar
Андрей К, спасибо. Нашёл
avatar
Albus, я рад!:)))

Читайте на SMART-LAB:
🖥 Яндекс выбирает дивиденды
IT-компания отчиталась за 4 квартал и прошлый год   Яндекс (YDEX) ➡️ Инфо и показатели     Результаты за 4 квартал — выручка: ₽436...
Фото
Как заработать на переговорах по Украине: любимые миркоины трейдеров
  В преддверии нового раунда переговоров по Украине редакция Т-Инвестиций спросила трейдеров об их ожиданиях, планах и инструментах, с...
Фото
Ставка снижена: какие бумаги опередят рынок
На февральском заседании ЦБ ключевая ставка снижена до 15,5%. Решение и посыл Банка России приятно удивили рынок. В релизе отмечается, что...
Фото
Россети Урал. Отчет об исполнении инвестпрограммы за Q4 2025г. Считаем дивиденды!
Компания Россети Урал опубликовала отчет об исполнении инвестпрограммы за Q4 2025г., где показаны финансовые показатели компании по РСБУ в...

теги блога Albus

....все тэги



UPDONW
Новый дизайн