通达信行情数据获取
通达信行情数据获取方法,其中可以通过通达信每天下载导自身文件获取(通过c或者c++写一个接口就可以了),但是每天需要手动同步数据。下面介绍一个比较好网上接口。需要到“Tushare金融大数据开放社区”注册一个账号,
https://tushare.pro/register?reg=132182
然后通过python每天定时或者接口,方便快捷。
#coding=utf-8
'''
Created on Nov 13, 2018
@author: root
'''
##import pandas as pd
import pymysql
import os
import tushare as ts
import csv
import time
# input date
#获取当天系统日期 如20190308
timest=time.strftime("%Y%m%d")
pro = ts.pro_api('输入注册平台上自己注册到id')
##获取交易日期
##平台上到接口,可以获取每天交易日期 ,该变量保存日期文件
file_date='/root/workspace/stock/src/dt_'+timest+'.csv'
##df_date 若果想获取多天数据 修改 start_date=timest, end_date=timest 中变量则可以
df_date=pro.query('trade_cal', start_date=timest, end_date=timest)
##把日期文件信息保存到csv文件
df_date.to_csv(file_date,index=False, mode='w',header=False, encoding='gbk')
文件内容如下SSE,20190307,1 其中 1 表示为交易当天有交易。0表示当天没交易
##filename = '/root/workspace/stock/src/dt_'+timest+'.csv'
##下面代码打开日期文件,循环读取日期,并下载有交易日期到数据
with open(file_date) as f:
reader = csv.reader(f)
dt_dates = []
for row in reader:
dt_dates.append([row[1],row[2]])
print (dt_dates)
file_name='/root/workspace/stock/src/stock_datas_'+timest+'.csv'
for dt_date, act_flag in dt_dates :
##若干当天为交易日期则连接平台获取交易数据并保存到本地
if act_flag == '1' :
df = pro.daily(trade_date=dt_date)
df.to_csv(file_name ,index=False, mode='w',header=False, encoding="utf-8",sep='|')
###下面把数据保持到mysql
if os.path.exists(file_name) :
db = pymysql.connect(host='127.0.0.1', user='mysql用户', passwd='mysql密码', db='mysql数据库', charset='utf8',local_infile=1)
cursor = db.cursor()
sql_load_datas="""LOAD DATA LOCAL INFILE '%s'
INTO TABLE tb_tock_daily
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
;
"""%(file_name)
sql_ddl=""" truncate table tb_tock_daily ;"""
sql_delete="""delete from tb_tock_daily_his where trade_date ='%s' """%(timest)
sql_insert="""insert into tb_tock_daily_his select a.* from tb_tock_daily a where trade_date ='%s' """%(timest)
cursor.execute(sql_ddl)
cursor.execute("commit;")
cursor.execute(sql_load_datas)
cursor.execute("commit;")
cursor.execute(sql_delete)
cursor.execute("commit;")
cursor.execute(sql_insert)
cursor.execute("commit;")
cursor.close()
db.close()
调通上面代码后,则可以通过linux 的 crontab 每天定时抽取相关数据了
赞 (0)