欢迎访问369期货网 369会员登录 注册

当前位置: 主页 > 期货量化

量化交易实战07 - 借助量化平台获取更多数据(一)获取股票数据

时间:2025-10-15 16:02|来源:369期货网|作者:369期货网|点击:
既然要进行实战,那么我们就需要更多的数据,仅仅是免费开源的数据是不够的,如果自己开发一个爬虫程序来说,又很复杂,我们可以使用别人已经整理好的数据,就是量化平台的数据来研究。

其实有很多量化平台,第三方的量化平台如:聚宽(JionQuant)、米筐(RiceQuan)、BigQuant等,但是有个缺点就是,这些第三方平台不能进行实盘,对于编程不擅长的朋友来说,到时候还需要重新再学一下编程语言,有点麻烦。
所有西西这边建议一步到位,直接使用券商的量化软件,QMT和PTrade,两个软件都可以,QMT是本地的,PTrade是云端服务器,最大的差别就是QMT支持的品种更多,如果只交易主板,科创板和创业板的话,PTrade就很合适。
西西这边是可以提供公用模拟账户供大家使用的。
具体的教程呢可以看一下西西前面对于软件的使用教程,点击详情查看。
这边暂时用QMT举例。


获取数据
QMT支持的数据很齐全。

图片
假设我们要获取行情数据
代码如下:
    #encoding:gbkdef init(C):  start_date = '20231001'# 格式"YYYYMMDD",开始下载的日期,date = ""时全量下载  end_date = ""   period = "1d"   need_download = 1  # 取数据是空值时,将need_download赋值为1,确保正确下载了历史数据  code_list = ["000001.SZ", "600519.SH"] # 股票列表  if need_download: # 判断要不要下载数据, gmd系列函数都是从本地读取历史数据,从服务器订阅获取最新数据    my_download(code_list, period, start_date, end_date)  ############ 仅获取历史行情 #####################  subscribe = False # 设置订阅参数,使gmd_ex仅返回本地数据  count = -1 # 设置count参数,使gmd_ex返回全部数据  data1 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe)  ############ 仅获取最新行情 #####################  subscribe = True # 设置订阅参数,使gmd_ex仅返回最新行情  count = 1 # 设置count参数,使gmd_ex仅返回最新行情数据  data2 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe, count = 1) # count 设置为1,使返回值只包含最新行情  ############ 获取历史行情+最新行情 #####################  subscribe = True # 设置订阅参数,使gmd_ex仅返回最新行情  count = -1 # 设置count参数,使gmd_ex返回全部数据  data3 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe, count = -1) # count 设置为-1,使返回值包含最新行情和历史行情  print(data1[code_list[0]].tail())# 行情数据查看  print(data2[code_list[0]].tail())  print(data3[code_list[0]].tail())def handlebar(C):  returndef my_download(stock_list,period,start_date = '', end_date = ''):  '''  用于显示下载进度  '''  if "d" in period:    period = "1d"  elif "m" in period:    if int(period[0]) < 5:      period = "1m"    else:      period = "5m"  elif "tick" == period:    pass  else:    raise KeyboardInterrupt("周期传入错误")  n = 1  num = len(stock_list)  for i in stock_list:    print(f"当前正在下载{n}/{num}")    download_history_data(i,period,start_date, end_date)    n += 1  print("下载任务结束")
    运行结果,我之前的数据已经下载了,所以是补充了一下我没有下载的数据:
    图片
    我这边就仅演示了行情数据,还可以获取股票的信息:
    图片


    编辑推荐

    Copyright © 2024-2025 成都宁时科技有限公司 版权所有

    蜀ICP备2022023994号