IMOEX_req = requests.get( 'https://iss.moex.com/iss/history/engines/stock/markets/index/securities/IMOEX.json?from=' + yesterdayDate + '&till=' + todayDate + '&interval=1').json() data = [{k: r[i] for i, k in enumerate(IMOEX_req['history']['columns'])} for r in IMOEX_req['history']['data']] frame = pd.DataFrame(data)Но, если день не закончен, значения дневной свечки по нему не приходят.
import pylunar
import pandas as pd
import matplotlib.pyplot as plt
df = intraday_df.resample('D').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'})
df = df.dropna()
Теперь в df содержатся дневки IMOEX.
*** Вычисляем процентное изменение цены за один день
df['pct'] = df['Close'].pct_change().shift(-1)
*** Изменение цены за один день
df['diff'] = df['Close'].diff().shift(-1)
Делаем стобец для хранения лунных дней
df['age'] = 0.0
mi = pylunar.MoonInfo((55,45,7),(37,36,56))
Здесь цифры (55,45,7),(37,36,56) — широта и долгота г.Москвы
import requests import pandas as pd import numpy as np import matplotlib.pyplot as plt
# URL для API MOEX, данные по ZCYC (zero coupon yield curve) url = "https://iss.moex.com/iss/engines/stock/zcyc/securities.json" # Запрос на получение данных response = requests.get(url) data = response.json() # Извлекаем данные из секции 'params' columns = data['params']['columns'] values = data['params']['data'] # Преобразуем в DataFrame df = pd.DataFrame(values, columns=columns) # Выбираем нужные столбцы: B1, B2, B3, T1, G1, ..., G9 df_selected = df[['tradedate', 'tradetime', 'B1', 'B2', 'B3', 'T1', 'G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9']] # Извлекаем параметры для функции GT из df_selected beta0 = df_selected['B1'].values[0] beta1 = df_selected['B2'].values[0] beta2 = df_selected['B3'].values[0] tau = df_selected['T1'].values[0] g_values = df_selected[['G1', 'G2', 'G3', 'G4', 'G5', 'G6', 'G7', 'G8', 'G9']].values[0].tolist()