Блог им. Ho_Chu
Проблема в том, что Финам закрыл скачивание старых (ранее 2020 года) фьючерсов по отдельности, предлагая только «склеенные» инструменты.
А для ряда задач нужно иметь параллельные котировки в районе даты экспирации, т.е. котировки уходящего фьюча вместе с котировками «будущего» фьюча.
Может кто-то знает, где скачать такие данные? Потому как склеивание по методу Финама (в ночь за 2 дня до экпирации) не подходит для решения задачи в общем виде ((.
Вот, например, по недавней экспирации 19.09.24… Финам склеивает фьючи в ночь с 17 на 18 сентября, т.е. в 23:49:59 выдеается фьюч 9.24, а утром 18-го в 10:00:00 выдается котировка 12.24-го...
А мне нужны разные, чтобы можно было смоделировать перезаход из уходящего фьюча в будущий.
Раньше это можно было сделать, скачав просто разные фьючи в разное время и склеив их не в ночь, а, например, в. А теперь такой возможности нет.
Можно организовать другую склейку, отличную от склейки финама… тогда тоже можно поставить последовательно 2 фьюча и в момент склейки переложиться… момент склейки мы знаем, значит можно закрыть прошлую по закрытию и открыть новую по открытию след.периода
например, склеиваем в день, предшествующий экспирации, т.е. не 19.09, не в ночь с 17 на 18.09 как это делает финам, а 18.09, например в 11:40 заканчивается 9.24, а в 11:45 начинается 12.24… дату/время склейки мы знаем, перезайти — только ночь не поспать ))
но для этого нужны котировки
а их нет ((
должно быть тут
iss.moex.com/iss/reference/
https://www.moex.com/a2193
увы, я ненастоящий сварщик и не понял, где там фьючерсы ((
Ramha,
увы, с МФД ничего не скачаешь
или что, у нас разные сайты?
ну скажите же ))) я весь в нетерпении, проект стоит, не хватает данных
Ramha,
Вы на эти цифры намекаете? на даты? так тоже бесполезно, я сразу проверил ))
«iss.moex.com/iss/engines.xml» — список рынков
«iss.moex.com/iss/engines/stock/markets.xml» — список инструментов(фьючерсы, опционы и т.д.)
(вот для срочного ошибочка выше вышла)«iss.moex.com/iss/engines/futures/markets.xml»
это за текущий день
«iss.moex.com/iss/engines/futures/markets/forts/trades.xml»
чтобы историю качать, надо на сайте Вам смотреть(лет 10 назад отсюда качал не помню как называется и там выдаёт порциями максимум 5000 строк вроде как, надо отправлять запрос, получать данные и следующий запрос с аргументом +5000, так повторять пока не кончатся данные)
так для свечей но раньше качал тики(весь срочный рынок), не знаю сейчас осталось или нет.
iss.moex.com/iss/history/engines/futures/markets/forts/securities.xml?date=2010-11-22
и что обычный крестьянин должен делать с этим счастьем?
Вадим вот ссылка — «iss.moex.com/iss/history/engines/futures/markets/forts/securities.xml?date=2010-11-22» напиши код на питоне чтобы он это всё превратил в текстовый/csv/или ещё какой файл.
__rtx,
а превратите для примера таким образом… даже интересно стало )))
жаль, что там сразу нет кнопки «Бабло» ))
увы, надо, я же написал, что я ненастоящий сварщик )))
просто приведите пример того, что получается на выходе и как Вы это получили?
а в файле будет примерно такое:
спасибо, но боюсь, что это пока сложно для такого декханина как я (((
да тики и не нужны, минуток выше крыши, даже пятиминуток
import requests
import pandas as pd
from bs4 import BeautifulSoup
url = «iss.moex.com/iss/history/engines/futures/markets/forts/securities.xml?date=2010-11-22»
response = requests.get(url)
response.raise_for_status() # Проверяем на ошибки
soup = BeautifulSoup(response.content, 'xml')
data = []
for row in soup.find_all('row'):
row_data = {}
for key, value in row.attrs.items():
row_data[key] = value
data.append(row_data)
df = pd.DataFrame(data)
# Преобразуем столбцы в нужные типы данных
for column in ['OPEN', 'LOW', 'HIGH', 'CLOSE', 'OPENPOSITIONVALUE', 'VALUE', 'SETTLEPRICE', 'SWAPRATE', 'WAPRICE', 'SETTLEPRICEDAY', 'CHANGE']:
df[column] = pd.to_numeric(df[column], errors='coerce')
for column in ['VOLUME', 'OPENPOSITION', 'QTY', 'NUMTRADES']:
df[column] = pd.to_numeric(df[column], errors='coerce', downcast='integer')
# Сохраняем в CSV
df.to_csv('securities.csv', index=False)
# Сохраняем в текстовый файл
with open('securities.txt', 'w') as f:
f.write(df.to_string())
print(«Данные успешно сохранены в файлы 'securities.csv' и 'securities.txt'»)