Пишу запросы на MOEX ISS, а там исторические данные(с прошедшей экспирацией) можно получить только с короткими названиями тикеров фьючерсов и опционов. Может кто-то уже писал код, чтобы вытащить дату экспирации из короткого названия тикера? Поделитесь пожалуйста.
Это один из запросов на MOEX:
<code>import requests import apimoex import pandas as pd # request_url = ('http://iss.moex.com/iss/history/engines/futures/markets/options/securities.json?date=2021-12-01&assetcode=RIZ1') request_url = ('http://iss.moex.com/iss/history/engines/futures/markets/options/securities.json?date=2021-12-01&assetcode=RTS') arguments = {'securities.columns': (["BOARDID, TRADEDATE, SECID, OPEN, LOW, HIGH, CLOSE, OPENPOSITIONVALUE, VALUE, VOLUME, OPENPOSITION, SETTLEPRICE"])} with requests.Session() as session: iss = apimoex.ISSClient(session, request_url, arguments) data = iss.get() df = pd.DataFrame(data['history']) df.set_index('SECID', inplace=True) print(df.to_string(max_rows=10, max_cols=15), '\n') df.info()</code>
2) Обратиться к строке LSTTRADE у полученной таблицы.
Выглядит это примерно так. Тут я обращаюсь к константному номеру строки 6, но раньше вычислял эту строку автоматически (закомментил, наверное плохо работало)
У меня так сделано:
from urllib.request import urlopen
import json
def get_date_of_last_trade(ticker):
url_str = 'https://iss.moex.com/iss/securities/{}.json'.format(ticker)
try:
j = urlopen(url_str)
except Exception as e:
print(e)
j_obj = json.load(j)
df_j = pd.DataFrame(j_obj['description']['data'], columns = j_obj['description']['columns'])
df_j = df_j[df_j['name'] == 'LSTTRADE']['value']
i = df_j.index[0]
return df_j.at[i]
Или придется по дате экспирации опционов подбирать?
Вопрос по ISS Moex. Данные по опционам можно ли качать через ISS? (smart-lab.ru)