前言:
之前分享了天勤的使用函数,里面就包括了获取K线数据,天勤每次能免费获取8000跟不同周期的数据,因此无论是实盘还是数据库的更新完全够用。代码部分就不讲解了,都是基础用法。
日线数据库的逻辑:
备份数据:防止数据被污染用的
最新数据:用天勤获取最新的数据300跟日线数据,接近一年了,任何时候获取完全没有问题
全量数据:使用备份数据和最新数据合并一起的,每隔一段时间用全量数据替换备份数据,并标上日期
代码:
import warnings
import os
import pandas as pd
import datetime
from tqsdk import TqAccount, TqApi, TqAuth, tafunc, TqSim, TqKq, TargetPosTask
warnings.filterwarnings('ignore')
pd_display_rows = 10
pd_display_cols = 1000
pd_display_width = 1000
pd.set_option('display.max_rows', pd_display_rows)
pd.set_option('display.min_rows', pd_display_rows)
pd.set_option('display.max_columns', pd_display_cols)
pd.set_option('display.width', pd_display_width)
pd.set_option('display.max_colwidth', pd_display_width)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('expand_frame_repr', False) # 当列太多时不换行
# 登录api
tq_kq = TqKq() # 模拟账户
api = TqApi(TqAccount('simnow', '218493', 'HMX147258369@'), auth=TqAuth("336120", "HMX147258369"))
import datetime
def a():
# 登录api
tq_kq = TqKq() # 模拟账户
# api = TqApi(account=tq_kq, auth=TqAuth('', '')) # auth=TqAuth("TQ账户", "账户密码")
api = TqApi(TqAccount('simnow', '218493', 'HMX147258369@'), auth=TqAuth("336120", "HMX147258369"))
# 构建商品数据dict或者list
info_zl = api.query_quotes(ins_class="CONT")
# 下面的list是和choice行情相同的主力行情
info_zl = ['KQ.m@CFFEX.IC', 'KQ.m@CFFEX.IF', 'KQ.m@CFFEX.IH', 'KQ.m@CFFEX.IM', 'KQ.m@CZCE.AP', 'KQ.m@CZCE.CF', 'KQ.m@CZCE.CJ', 'KQ.m@CZCE.CY', 'KQ.m@CZCE.FG', 'KQ.m@CZCE.JR', 'KQ.m@CZCE.LR', 'KQ.m@CZCE.MA', 'KQ.m@CZCE.OI', 'KQ.m@CZCE.PF', 'KQ.m@CZCE.PK', 'KQ.m@CZCE.PM', 'KQ.m@CZCE.RI', 'KQ.m@CZCE.RM', 'KQ.m@CZCE.RS', 'KQ.m@CZCE.SA', 'KQ.m@CZCE.SF', 'KQ.m@CZCE.SM', 'KQ.m@CZCE.SR', 'KQ.m@CZCE.TA', 'KQ.m@CZCE.UR', 'KQ.m@CZCE.WH', 'KQ.m@CZCE.ZC', 'KQ.m@DCE.a', 'KQ.m@DCE.b', 'KQ.m@DCE.bb', 'KQ.m@DCE.c', 'KQ.m@DCE.cs', 'KQ.m@DCE.eb', 'KQ.m@DCE.eg', 'KQ.m@DCE.fb', 'KQ.m@DCE.i', 'KQ.m@DCE.j', 'KQ.m@DCE.jd', 'KQ.m@DCE.jm', 'KQ.m@DCE.l', 'KQ.m@DCE.lh', 'KQ.m@DCE.m', 'KQ.m@DCE.p', 'KQ.m@DCE.pg', 'KQ.m@DCE.pp', 'KQ.m@DCE.rr', 'KQ.m@DCE.v', 'KQ.m@DCE.y', 'KQ.m@SHFE.ag', 'KQ.m@SHFE.al', 'KQ.m@SHFE.ao', 'KQ.m@SHFE.au', 'KQ.m@SHFE.br', 'KQ.m@SHFE.bu', 'KQ.m@SHFE.cu', 'KQ.m@SHFE.fu', 'KQ.m@SHFE.hc', 'KQ.m@SHFE.ni', 'KQ.m@SHFE.pb', 'KQ.m@SHFE.rb', 'KQ.m@SHFE.ru', 'KQ.m@SHFE.sn', 'KQ.m@SHFE.sp', 'KQ.m@SHFE.ss', 'KQ.m@SHFE.wr', 'KQ.m@SHFE.zn']
# print(sorted(info_zl))
# print(len(info_zl)) # 66
# api.close()
# exit()
"""
# 整理后与choice行情软件一样的数据,以后可以更加需要逐个添加
['KQ.m@CFFEX.IC', 'KQ.m@CFFEX.IF', 'KQ.m@CFFEX.IH', 'KQ.m@CFFEX.IM', 'KQ.m@CZCE.AP', 'KQ.m@CZCE.CF', 'KQ.m@CZCE.CJ', 'KQ.m@CZCE.CY', 'KQ.m@CZCE.FG', 'KQ.m@CZCE.JR', 'KQ.m@CZCE.LR', 'KQ.m@CZCE.MA', 'KQ.m@CZCE.OI', 'KQ.m@CZCE.PF', 'KQ.m@CZCE.PK', 'KQ.m@CZCE.PM', 'KQ.m@CZCE.RI', 'KQ.m@CZCE.RM', 'KQ.m@CZCE.RS', 'KQ.m@CZCE.SA', 'KQ.m@CZCE.SF', 'KQ.m@CZCE.SM', 'KQ.m@CZCE.SR', 'KQ.m@CZCE.TA', 'KQ.m@CZCE.UR', 'KQ.m@CZCE.WH', 'KQ.m@CZCE.ZC', 'KQ.m@DCE.a', 'KQ.m@DCE.b', 'KQ.m@DCE.bb', 'KQ.m@DCE.c', 'KQ.m@DCE.cs', 'KQ.m@DCE.eb', 'KQ.m@DCE.eg', 'KQ.m@DCE.fb', 'KQ.m@DCE.i', 'KQ.m@DCE.j', 'KQ.m@DCE.jd', 'KQ.m@DCE.jm', 'KQ.m@DCE.l', 'KQ.m@DCE.lh', 'KQ.m@DCE.m', 'KQ.m@DCE.p', 'KQ.m@DCE.pg', 'KQ.m@DCE.pp', 'KQ.m@DCE.rr', 'KQ.m@DCE.v', 'KQ.m@DCE.y', 'KQ.m@SHFE.ag', 'KQ.m@SHFE.al', 'KQ.m@SHFE.ao', 'KQ.m@SHFE.au', 'KQ.m@SHFE.br', 'KQ.m@SHFE.bu', 'KQ.m@SHFE.cu', 'KQ.m@SHFE.fu', 'KQ.m@SHFE.hc', 'KQ.m@SHFE.ni', 'KQ.m@SHFE.pb', 'KQ.m@SHFE.rb', 'KQ.m@SHFE.ru', 'KQ.m@SHFE.sn', 'KQ.m@SHFE.sp', 'KQ.m@SHFE.ss', 'KQ.m@SHFE.wr', 'KQ.m@SHFE.zn']
"""
# 需要合并数据的循环字典,按照交易所进行排序,后续需要for循环增添字段
symbol_list = [
# 中金所
{'中证500主力': 'KQ.m@CFFEX.IC'},
{'中证300主力': 'KQ.m@CFFEX.IF'},
{'中证50主力': 'KQ.m@CFFEX.IH'},
{'中证1000主力': 'KQ.m@CFFEX.IM'},
# 上期所
{'沪银主力': 'KQ.m@SHFE.ag'},
{'沪铝主力': 'KQ.m@SHFE.al'},
{'氧化铝主力': 'KQ.m@SHFE.ao'},
{'沪金主力': 'KQ.m@SHFE.au'},
{'沪丁二烯橡胶主力': 'KQ.m@SHFE.br'},
{'沥青主力': 'KQ.m@SHFE.bu'},
{'沪铜主力': 'KQ.m@SHFE.cu'},
{'燃油主力': 'KQ.m@SHFE.fu'},
{'热卷主力': 'KQ.m@SHFE.hc'},
{'沪镍主力': 'KQ.m@SHFE.ni'},
{'沪铅主力': 'KQ.m@SHFE.pb'},
{'螺纹钢主力': 'KQ.m@SHFE.rb'},
{'橡胶主力': 'KQ.m@SHFE.ru'},
{'沪锡主力': 'KQ.m@SHFE.sn'},
{'纸浆主力': 'KQ.m@SHFE.sp'},
{'不锈钢主力': 'KQ.m@SHFE.ss'},
{'线材主力': 'KQ.m@SHFE.wr'},
{'沪锌主力': 'KQ.m@SHFE.zn'},
# 郑商所
{'苹果主力': 'KQ.m@CZCE.AP'},
{'棉花主力': 'KQ.m@CZCE.CF'},
{'红枣主力': 'KQ.m@CZCE.CJ'},
{'棉纱主力': 'KQ.m@CZCE.CY'},
{'玻璃主力': 'KQ.m@CZCE.FG'},
{'粳稻主力': 'KQ.m@CZCE.JR'},
{'晚籼主力': 'KQ.m@CZCE.LR'},
{'甲醇主力': 'KQ.m@CZCE.MA'},
{'菜油主力': 'KQ.m@CZCE.OI'},
{'短纤主力': 'KQ.m@CZCE.PF'},
{'花生主力': 'KQ.m@CZCE.PK'},
{'普麦主力': 'KQ.m@CZCE.PM'},
{'早籼主力': 'KQ.m@CZCE.RI'},