原创 +1银贝 期货量化系列——构建期货日线数据库

小小的夏天 2024-2-25 98

前言:

之前分享了天勤的使用函数,里面就包括了获取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'},
  

本主题为课程学员专享,成为股票量化投资课程学员后可免费阅读

成为学员

上传的附件:

最新回复 ( 0条评论 )


官方微信
码力十足学量化
Powered by Xiuno BBS 4.0.7

官方微信