{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#88\n", "# 888\n", "# 889\n", "# 99, IF99" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Download data " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from datetime import datetime\n", "from typing import List, Dict, Tuple\n", "\n", "from vnpy.trader.engine import BaseEngine, MainEngine, EventEngine\n", "from vnpy.trader.constant import Interval, Exchange\n", "from vnpy.trader.object import BarData, HistoryRequest\n", "from vnpy.trader.database import database_manager\n", "from vnpy.trader.rqdata import rqdata_client" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rqdata_client.init()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def download_data(symbol, exchange):\n", " start = datetime(2006,1,1)\n", " req = HistoryRequest(\n", " symbol=symbol,\n", " exchange=exchange,\n", " interval=Interval.DAILY,\n", " start=start,\n", " end=datetime.now()\n", " )\n", "\n", " data = rqdata_client.query_history(req)\n", " database_manager.save_bar_data(data)\n", " \n", " print(\"finish! symbol=\",symbol, \"count=\", len(data))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "download_data(\"IC99\", Exchange.CFFEX)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "database_manager.save_bar_data(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# GET ALL instuments" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
order_book_idunderlying_symbolmarket_tplussymbolmargin_ratematurity_datetypetrading_codeexchangeproductcontract_multiplierround_lottrading_hourslisted_dateindustry_namede_listed_dateunderlying_order_book_id
0A0303A0.0豆一03030.052003-03-14Futurea0303DCECommodity10.01.021:01-23:00,09:01-10:15,10:31-11:30,13:31-15:002002-03-15油脂2003-03-14null
1A0305A0.0豆一03050.052003-05-23Futurea0305DCECommodity10.01.021:01-23:00,09:01-10:15,10:31-11:30,13:31-15:002002-03-15油脂2003-05-23null
2A0307A0.0豆一03070.052003-07-14Futurea0307DCECommodity10.01.021:01-23:00,09:01-10:15,10:31-11:30,13:31-15:002002-03-15油脂2003-07-14null
3A0309A0.0豆一03090.052003-09-12Futurea0309DCECommodity10.01.021:01-23:00,09:01-10:15,10:31-11:30,13:31-15:002002-05-22油脂2003-09-12null
4A0311A0.0豆一03110.052003-11-14Futurea0311DCECommodity10.01.021:01-23:00,09:01-10:15,10:31-11:30,13:31-15:002002-05-22油脂2003-11-14null
......................................................
6609PB2201PB0.0铅22010.082022-01-17Futurepb2201SHFECommodity5.01.021:01-01:00,09:01-10:15,10:31-11:30,13:31-15:002021-01-18有色2022-01-17null
6610BC2201BC0.0国际铜22010.082022-01-17Futurebc2201INECommodity5.01.021:01-01:00,09:01-10:15,10:31-11:30,13:31-15:002021-01-18未知2022-01-17null
6611BB2201BB0.0细木工板22010.402022-01-17Futurebb2201DCECommodity500.01.009:01-10:15,10:31-11:30,13:31-15:002021-01-18建材2022-01-17null
6612SR2201SR0.0白砂糖22010.072022-01-14FutureSR201CZCECommodity10.01.021:01-23:00,09:01-10:15,10:31-11:30,13:31-15:002021-01-18软商品2022-01-14null
6613WR2201WR0.0线材22010.072022-01-17Futurewr2201SHFECommodity10.01.009:01-10:15,10:31-11:30,13:31-15:002021-01-18焦煤钢矿2022-01-17null
\n", "

6614 rows × 17 columns

\n", "
" ], "text/plain": [ " order_book_id underlying_symbol market_tplus symbol margin_rate \\\n", "0 A0303 A 0.0 豆一0303 0.05 \n", "1 A0305 A 0.0 豆一0305 0.05 \n", "2 A0307 A 0.0 豆一0307 0.05 \n", "3 A0309 A 0.0 豆一0309 0.05 \n", "4 A0311 A 0.0 豆一0311 0.05 \n", "... ... ... ... ... ... \n", "6609 PB2201 PB 0.0 铅2201 0.08 \n", "6610 BC2201 BC 0.0 国际铜2201 0.08 \n", "6611 BB2201 BB 0.0 细木工板2201 0.40 \n", "6612 SR2201 SR 0.0 白砂糖2201 0.07 \n", "6613 WR2201 WR 0.0 线材2201 0.07 \n", "\n", " maturity_date type trading_code exchange product \\\n", "0 2003-03-14 Future a0303 DCE Commodity \n", "1 2003-05-23 Future a0305 DCE Commodity \n", "2 2003-07-14 Future a0307 DCE Commodity \n", "3 2003-09-12 Future a0309 DCE Commodity \n", "4 2003-11-14 Future a0311 DCE Commodity \n", "... ... ... ... ... ... \n", "6609 2022-01-17 Future pb2201 SHFE Commodity \n", "6610 2022-01-17 Future bc2201 INE Commodity \n", "6611 2022-01-17 Future bb2201 DCE Commodity \n", "6612 2022-01-14 Future SR201 CZCE Commodity \n", "6613 2022-01-17 Future wr2201 SHFE Commodity \n", "\n", " contract_multiplier round_lot \\\n", "0 10.0 1.0 \n", "1 10.0 1.0 \n", "2 10.0 1.0 \n", "3 10.0 1.0 \n", "4 10.0 1.0 \n", "... ... ... \n", "6609 5.0 1.0 \n", "6610 5.0 1.0 \n", "6611 500.0 1.0 \n", "6612 10.0 1.0 \n", "6613 10.0 1.0 \n", "\n", " trading_hours listed_date \\\n", "0 21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00 2002-03-15 \n", "1 21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00 2002-03-15 \n", "2 21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00 2002-03-15 \n", "3 21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00 2002-05-22 \n", "4 21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00 2002-05-22 \n", "... ... ... \n", "6609 21:01-01:00,09:01-10:15,10:31-11:30,13:31-15:00 2021-01-18 \n", "6610 21:01-01:00,09:01-10:15,10:31-11:30,13:31-15:00 2021-01-18 \n", "6611 09:01-10:15,10:31-11:30,13:31-15:00 2021-01-18 \n", "6612 21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00 2021-01-18 \n", "6613 09:01-10:15,10:31-11:30,13:31-15:00 2021-01-18 \n", "\n", " industry_name de_listed_date underlying_order_book_id \n", "0 油脂 2003-03-14 null \n", "1 油脂 2003-05-23 null \n", "2 油脂 2003-07-14 null \n", "3 油脂 2003-09-12 null \n", "4 油脂 2003-11-14 null \n", "... ... ... ... \n", "6609 有色 2022-01-17 null \n", "6610 未知 2022-01-17 null \n", "6611 建材 2022-01-17 null \n", "6612 软商品 2022-01-14 null \n", "6613 焦煤钢矿 2022-01-17 null \n", "\n", "[6614 rows x 17 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df=rqdata_client.get_all_futures()\n", "df\n", "# underlying_symbol\n", "# exchange\n", "# listed_date" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "data_dict = df.transpose().to_dict()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'order_book_id': 'A0303',\n", " 'underlying_symbol': 'A',\n", " 'market_tplus': 0.0,\n", " 'symbol': '豆一0303',\n", " 'margin_rate': 0.05,\n", " 'maturity_date': '2003-03-14',\n", " 'type': 'Future',\n", " 'trading_code': 'a0303',\n", " 'exchange': 'DCE',\n", " 'product': 'Commodity',\n", " 'contract_multiplier': 10.0,\n", " 'round_lot': 1.0,\n", " 'trading_hours': '21:01-23:00,09:01-10:15,10:31-11:30,13:31-15:00',\n", " 'listed_date': '2002-03-15',\n", " 'industry_name': '油脂',\n", " 'de_listed_date': '2003-03-14',\n", " 'underlying_order_book_id': 'null'}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_dict[0]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "underlying_symbols = []\n", "vt_symbols = [] # IF99.CFFEX\n", "for data in data_dict.values():\n", " # 1) Filter underlying symbol \n", " underlying = data['underlying_symbol']\n", " if underlying not in underlying_symbols:\n", " underlying_symbols.append(underlying)\n", " \n", " # 2) Filter listed date\n", " dt_str = data[\"listed_date\"]\n", " dt = datetime.strptime(dt_str, \"%Y-%m-%d\")\n", " \n", " if dt <= datetime(2016,1,1):\n", " \n", " vt_symbol = underlying + \"99\" + \".\" + data[\"exchange\"]\n", " \n", " vt_symbols.append(vt_symbol)\n", " \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "finish! symbol= A99 count= 3661\n", "finish! symbol= AG99 count= 2121\n", "finish! symbol= AL99 count= 3661\n", "finish! symbol= AU99 count= 3173\n", "finish! symbol= B99 count= 3661\n", "finish! symbol= BB99 count= 1739\n", "finish! symbol= BU99 count= 1781\n", "finish! symbol= C99 count= 3661\n", "finish! symbol= CF99 count= 3661\n", "finish! symbol= CS99 count= 1485\n", "finish! symbol= CU99 count= 3661\n", "finish! symbol= ER99 count= 994\n", "finish! symbol= FB99 count= 1739\n", "finish! symbol= FG99 count= 1980\n", "finish! symbol= FU99 count= 3650\n", "finish! symbol= HC99 count= 1670\n", "finish! symbol= I99 count= 1774\n", "finish! symbol= IC99 count= 1409\n", "finish! symbol= IF99 count= 2620\n", "finish! symbol= IH99 count= 1409\n", "finish! symbol= J99 count= 2380\n", "finish! symbol= JD99 count= 1759\n", "finish! symbol= JM99 count= 1909\n", "finish! symbol= JR99 count= 1753\n", "finish! symbol= L99 count= 3282\n", "finish! symbol= LR99 count= 1597\n", "finish! symbol= M99 count= 3661\n", "finish! symbol= MA99 count= 1612\n", "finish! symbol= ME99 count= 860\n", "finish! symbol= NI99 count= 1422\n", "finish! symbol= OI99 count= 2075\n", "finish! symbol= P99 count= 3223\n", "finish! symbol= PB99 count= 2394\n", "finish! symbol= PM99 count= 2193\n", "finish! symbol= PP99 count= 1685\n", "finish! symbol= RB99 count= 2878\n", "finish! symbol= RI99 count= 2069\n", "finish! symbol= RM99 count= 1961\n", "finish! symbol= RO99 count= 1444\n", "finish! symbol= RS99 count= 1961\n", "finish! symbol= RU99 count= 3661\n", "finish! symbol= S99 count= 0\n", "finish! symbol= SF99 count= 1574\n", "finish! symbol= SM99 count= 1574\n", "finish! symbol= SN99 count= 1422\n", "finish! symbol= SR99 count= 3659\n", "finish! symbol= T99 count= 1427\n", "finish! symbol= TA99 count= 3430\n", "finish! symbol= TC99 count= 617\n", "finish! symbol= TF99 count= 1797\n", "finish! symbol= V99 count= 2839\n", "finish! symbol= WH99 count= 2069\n", "finish! symbol= WR99 count= 2853\n", "finish! symbol= WS99 count= 1792\n", "finish! symbol= WT99 count= 1675\n", "finish! symbol= Y99 count= 3658\n", "finish! symbol= ZC99 count= 1388\n", "finish! symbol= ZN99 count= 3368\n" ] } ], "source": [ "for vt_symbol in vt_symbols:\n", " symbol, exchange =tuple(vt_symbol.split(\".\"))\n", " download_data(symbol, Exchange(exchange))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 4 }