90 lines
2.2 KiB
Python
90 lines
2.2 KiB
Python
import requests
|
|
import pandas as pd
|
|
|
|
CN_CODE_TYPE = {
|
|
"600":'sh',
|
|
"601":'sh',
|
|
"603":'sh',
|
|
"605":'sh',
|
|
"000":'sz',
|
|
"300":'sz',
|
|
"688":'sh',
|
|
"002":'sz',
|
|
"50":"sh",
|
|
"51":"sh",
|
|
"52":"sh",
|
|
"16":"sz",
|
|
"15":"sz",
|
|
"18":"sz"
|
|
}
|
|
|
|
|
|
|
|
def get_history_k(code, start_date='19700101', end_date=None):
|
|
|
|
if '.' in code:
|
|
code = code.split('.')[0]
|
|
|
|
stock_code = ''
|
|
|
|
if code[0:2] in CN_CODE_TYPE:
|
|
stock_code = code + '.' + CN_CODE_TYPE[code[0:2]]
|
|
elif code[0:3] in CN_CODE_TYPE:
|
|
stock_code = code + '.' + CN_CODE_TYPE[code[0:3]]
|
|
print(stock_code)
|
|
if stock_code != '':
|
|
|
|
url = "https://api.zhituapi.com/hs/history/%s/d/f?token=6E0E86BC-15AD-4275-8A95-B02D168D63C1&st=%s"%(stock_code, start_date)
|
|
|
|
if end_date is not None:
|
|
url += "&end_date=%s"%(end_date)
|
|
|
|
response = requests.get(url)
|
|
|
|
data = response.json()
|
|
print(data)
|
|
df = pd.DataFrame(data)
|
|
|
|
df['t'] = df['t'].apply(pd.to_datetime)
|
|
df.rename({'t': 'date', 'o': 'open', 'h': 'high', 'l': 'low', 'c': 'close', 'v': 'volume', 'a': 'amount'},
|
|
axis='columns', inplace=True)
|
|
df = df[['date', 'open', 'high', 'low', 'close', 'volume', 'amount']].set_index('date')
|
|
|
|
else:
|
|
df = pd.DataFrame()
|
|
|
|
|
|
return df
|
|
|
|
|
|
def get_5min_k(code, start_date='19700101', end_date=None):
|
|
stock_code = ''
|
|
|
|
if code[0:2] in CN_CODE_TYPE:
|
|
stock_code = code + '.' + CN_CODE_TYPE[code[0:2]]
|
|
elif code[0:3] in CN_CODE_TYPE:
|
|
stock_code = code + '.' + CN_CODE_TYPE[code[0:3]]
|
|
|
|
if stock_code != '':
|
|
|
|
url = "https://api.zhituapi.com/hs/history/%s/5/n?token=6E0E86BC-15AD-4275-8A95-B02D168D63C1&st=%s"%(stock_code, start_date)
|
|
|
|
if end_date is not None:
|
|
url += "&end_date=%s"%(end_date)
|
|
|
|
response = requests.get(url)
|
|
|
|
data = response.json()
|
|
|
|
df = pd.DataFrame(data)
|
|
df['t'] = df['t'].apply(pd.to_datetime)
|
|
df.rename({'t': 'date', 'o': 'open', 'h': 'high', 'l': 'low', 'c': 'close', 'v': 'volume', 'a': 'amount'},
|
|
axis='columns', inplace=True)
|
|
df = df[['date','close', 'volume']].set_index('date')
|
|
|
|
else:
|
|
df = pd.DataFrame()
|
|
|
|
|
|
return df
|