- Вступ У цій статті продовжимо розмову про ефективну торгівлі на біржі. Як вже говорилося, статистичний...
- функція quotes
- Приклад запиту котирувань Газпрому (січень 2010)
Вступ
Наша взаимовыгодная связь https://banwar.org/
У цій статті продовжимо розмову про ефективну торгівлі на біржі. Як вже говорилося, статистичний аналіз котирувань є запорукою успішної торгівлі акціями. Але перед тим як обробляти котирування необхідно їх отримати. Як джерело біржових цін я вибрав сайт інвестиційної компанії "Фінам" (ну як сказати вибрав ... інших ресурсів, де можна отримати котирування через веб-інтерфейс і без пароля я не знайшов).
анатомія 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
Отже змінювані параметри:
- em - номер фінансового інструменту (в нашому випадку Газпром - 16842)
- df, mf, yf - день, місяць, рік дати починаючи з якої видавати котирування
- dt, mt, yt - дата по яку видаються котирування
- p - часовий інтервал (7 означає, що часовий інтервал 1 година)
функція 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. годину & nbsp; (З 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".
На сьогодні все.
PS Якщо хто-небудь з читачів знає інший веб-ресурс з можливістю завантаження попередніх цін акцій - повідомляйте. Тоді можна буде зробити скрипт завантаження історії котирувань з несколькоі джерел.
джерело: toly-blog.ru
100716.txt?100208.txt?