Блог им. 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.4К | ★13
5 комментариев
добавь возможность оформлять текст в виде кода!
такая функция есть
avatar
Андрей К, спасибо. Нашёл
avatar
Albus, я рад!:)))

Читайте на SMART-LAB:
Фото
Новые фишки от ВТБ Мои Инвестиции: заявки до отмены и крутой поиск
Мое знакомство с приложением «ВТБ Мои Инвестиции» состоялось в 2018 году, когда я открыл самый первый брокерский счет. 🆕 И вот только что вышло...
Фото
USD/JPY: медведи борются с ветряными мельницами
Скоординированная интервенция центробанков Японии и США по валютной паре USD/JPY привела к падению курса от многолетних максимумов в районе 164.00...
Фото
✈️ Акции Аэрофлота закрыли дивидендный гэп за 18 дней
Дивиденд по итогам 2025 года составил 5,29 руб. на акцию, что дало 15,7% доходности относительно цены последней сделки 16 июля 2026 года перед...
Фото
Хэдхантер. Ситуация на рынке труда в июле. Есть признаки улучшения
Вышла статистика рынка труда за июль 2026 года (за июнь можно почитать здесь ), которую Хедхантер публикует ежемесячно, что же там...

теги блога Albus

....все тэги



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