1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
__author__ = 'Paul Ding'
import sys import os from datetime import datetime from contextlib import closing from tqsdk import TqApi, TqAuth from tqsdk.tools import DataDownloader
symbols = ["DCE.i", "DCE.j", "DCE.jm", "SHFE.rb", "SHFE.au", "SHFE.ag", "SHFE.cu", "SHFE.al", "SHFE.zn", "SHFE.ni"] years = range(20, 25, 1) months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"] dur_seconds = [("m01", 60), ("m03", 60 * 3), ("m05", 60 * 5), ("m10", 60 * 10), ("m15", 60 * 15), ("m30", 60 * 30), ("h1", 3600), ("h2", 3600 * 2), ("h3", 3600 * 3), ("h4", 3600 * 4), ("d1", 3600 * 24), ("d7", 3600 * 24 * 7)] contracts = ["{}{}{}".format(symbol, year, month) for symbol in symbols for year in years for month in months]
if not os.path.exists("csv"): os.mkdir("csv") os.chdir("csv") for contract in contracts: print(contract) try: api = TqApi(auth=TqAuth("账户", "密码")) with closing(api): for dur_sec in dur_seconds: csv_file_name = "{}_{}.csv".format(contract, dur_sec[0]) print(csv_file_name) kd = DataDownloader(api, symbol_list=contract, dur_sec=dur_sec[1], start_dt=datetime(2015, 1, 1, 0, 0, 0), end_dt=datetime(2024, 12, 31, 23, 0, 0), csv_file_name="{}".format(csv_file_name)) while not kd.is_finished(): api.wait_update() print("progress: %s: %.2f%%" % (csv_file_name, kd.get_progress())) except KeyboardInterrupt: sys.exit("用户中断程序执行 ...") except Exception as err: print(err, contract)
|