Модуль quotes. Загружаем котировки.ВведениеВ этой статье продолжим разговор об эффективной торговле на бирже. Как уже говорилось, статистический анализ котировок является залогом успешной торговли акциями. Но перед тем как обрабатывать котировки необходимо их получить. В качестве источника биржевых цен я выбрал сайт инвестиционной компании "Финам" (ну как сказать выбрал... других ресурсов, где можно получить котировки через веб-интерфейс и без пароля я не нашел). Анатомия finam.ruДля работы предпочтительно сохранить файл с котировками на компьютер. На сайте есть удобный инструмент для этих целей, расположенный по адресу http://www.finam.ru/analysis/export/default.asp. Здесь можно выбрать секцию рынка, наименование акции (контракт), требуемый период и другие параметры. Сразу определимся со значениями передаваемых параметров: Естественно, даты, временной интервал и наименование акции будут изменяемыми. Понаблюдаем механизм обмена данными при получении котировок. Для этого используем сетевой анализатор WireShark. секцию рынка, наименование акции (контракт), требуемый период и другие параметры. Сразу определимся со значениями передаваемых параметров:Как видим - ничего сложного: обычный GET-запрос. Ознакомившись с HTML-кодом формы все становится предельно ясным. Строка запроса: /GAZP_100716_100716.txt?d=d&market=1&em=16842 &df=16&mf=6&yf=2010&dt=16&mt=6&yt=2010 &p=7&f=GAZP_100716_100716&e=.txt&cn=GAZP&dtf=1 &tmf=1&MSOR=0&sep=3&sep2=1&datf=5 Итак изменяемые параметры:
Функция quotesТеперь напишем функцию для получения котировок. def quotes(df, mf, yf, dt, mt, yt, simb, period): f = urllib.urlopen('http://195.128.78.52/GAZP_080201_100208.txt?d=d&market=1&em=' + str(simb)+'&df='+str(df)+'&mf='+str(mf)+'&yf='+str(yf)+'&dt='+str(dt)+'&mt=' +str(mt)+'&yt='+str(yt)+'&p='+str(period) +'&f=GAZP_080201_100208&e=.txt&cn=GAZP&dtf=4&tmf=4&MSOR=0&sep=1&sep2=1&datf=5&at=1') quot = f.read() f.close() return string.split(quot, '\\n')[1:-1] Остановлюсь подробнее на параметрах simb и period. simb - номер торгового инструмента (см. скриншот) : period - периодичность котировок. Из фрагмента HTML-кода формы экспорта котировок видно как выбирать этот параметр: <tr valign="top"> <td><label for="p">Периодичность</label></td> <td> <select tabindex="9" id="p" name="p" onChange='javascript:rebuildDataFormat(document.chartform.datf, this.options[this.selectedIndex].value)'> <option value=1>тики <option value=2>1 мин. <option value=3>5 мин. <option value=4>10 мин. <option value=5>15 мин. <option value=6>30 мин. <option value=7 selected>1 час <option value=11>1 час (с 10:30) <option value=8>1 день <option value=9>1 неделя <option value=10>1 месяц </select> </td> </tr> Пример запроса котировок Газпрома (январь 2010)Следующий код получает и построчно выводит дневные котировки акций Газпрома за январь 2010 года (так как месяца на finam.ru нумеруются с нуля, в качестве номера месяца указываем 0): qq = quotes(1, 0, 2010, 30, 0, 2010, 16842, 8) for q in qq: print q[:-1] После запуска смотрим на экран: секцию рынка, наименование акции (контракт), требуемый период и другие параметры. Сразу определимся со значениями передаваемых параметров:Убедившись, что все работает как надо, для дальнейшей работы сохраняем файл с функцией как модуль "quotes.py ". На сегодня все. P.S. Если кто-нибудь из читателей знает другой веб-ресурс с возможностью загрузки предыдущих цен акций - сообщайте. Тогда можно будет сделать скрипт загрузки истории котировок из несколькои источников. Источник: toly-blog.ru Активные темы форума
|