精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

如何利用Joinquant數(shù)據(jù)源為vnpy添加期貨行情數(shù)據(jù)-創(chuàng)新互聯(lián)

小編給大家分享一下如何利用Joinquant數(shù)據(jù)源為vnpy添加期貨行情數(shù)據(jù),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供臨清企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為臨清眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

使用聚寬(Joinquant)數(shù)據(jù)源JQData為vnpy添加期貨行情數(shù)據(jù)

代碼就兩個文件,一個config.json主要放登陸用戶名和期貨品種名稱對應(yīng)表,因為期貨品種在聚寬的名稱是不一樣的。

JQDataload.py是提供分鐘級別下載方法,和一個期貨品種名稱對照列表從聚寬下載。

聚寬一天提供100萬條數(shù)據(jù)下載,所以每次下載結(jié)束會有倒計時提供。其實代碼很簡單,唯一難點就是就是vnpy是每天9點00開始點,而聚寬是每天9點01為開始點;就抄抄之前vnpy已有代碼解決。

結(jié)構(gòu)如下

-JDDataService

  |--config.json

  |--JQDataload.py

其實使用很簡單,步驟如下:

1.運行 pip install jqdatasdk , 安裝jqdata的sdk

2.在聚寬平臺注冊試用數(shù)據(jù),鏈接: /tupian/20230522/404    "Username": "聚寬申請",    "Password": "聚寬申請",    "rb1910":"RB1910.XSGE",    "zn1807": "ZN1807.XSGE",    "rb0000": "RB9999.XSGE" }

JQDataload.py代碼如下:

# encoding: UTF-8
  
from __future__ import print_function
import sys
import json
from datetime import datetime,date,timedelta
from time import time, sleep
  
from pymongo import MongoClient, ASCENDING
import pandas as pd
  
from vnpy.trader.vtObject import VtBarData, VtTickData
from vnpy.trader.app.ctaStrategy.ctaBase import (MINUTE_DB_NAME,
                                                 DAILY_DB_NAME,
                                                 TICK_DB_NAME)
  
import jqdatasdk as jq
  
# 加載配置
config = open('config.json')
setting = json.load(config)
  
mc = MongoClient()  # Mongo連接
dbMinute = mc[MINUTE_DB_NAME]  # 數(shù)據(jù)庫
# dbDaily = mc[DAILY_DB_NAME]
# dbTick = mc[TICK_DB_NAME]
  
USERNAME = setting['Username']
PASSWORD = setting['Password']
jq.auth(USERNAME, PASSWORD)
  
FIELDS = ['open', 'high', 'low', 'close', 'volume']
  
  
# ----------------------------------------------------------------------
def generateVtBar(row, symbol):
    """生成K線"""
    bar = VtBarData()
  
    bar.symbol = symbol
    bar.exchange = "SHFE"
    bar.vtSymbol = bar.vtSymbol = '.'.join([bar.symbol, bar.exchange])
    bar.open = row['open']
    bar.high = row['high']
    bar.low = row['low']
    bar.close = row['close']
    bar.volume = row['volume']
    bardatetime = row.name
    bar.date = bardatetime.strftime("%Y%m%d")
  
    bar.time = bardatetime.strftime("%H%M%S")
    # 將bar的時間改成提前一分鐘
    hour = bar.time[0:2]
    minute = bar.time[2:4]
    sec = bar.time[4:6]
    if minute == "00":
        minute = "59"
  
        h = int(hour)
        if h == 0:
            h = 24
  
        hour = str(h - 1).rjust(2, '0')
    else:
        minute = str(int(minute) - 1).rjust(2, '0')
    bar.time = hour + minute + sec
  
    bar.datetime = datetime.strptime(' '.join([bar.date, bar.time]), '%Y%m%d %H%M%S')
    return bar
  
  
# ----------------------------------------------------------------------
def jqdownloadMinuteBarBySymbol(symbol,startDate,endDate):
    """下載某一合約的分鐘線數(shù)據(jù)"""
    start = time()
  
    cl = dbMinute[symbol]
    cl.ensure_index([('datetime', ASCENDING)], unique=True)  # 添加索引
  
    df = jq.get_price(setting[symbol],start_date = startDate,end_date = endDate, frequency='1m', fields=FIELDS,skip_paused = True)
    for ix, row in df.iterrows():
        bar = generateVtBar(row, symbol)
        d = bar.__dict__
        flt = {'datetime': bar.datetime}
        cl.replace_one(flt, d, True)
  
    end = time()
    cost = (end - start) * 1000
  
    print(u'合約%s的分鐘K線數(shù)據(jù)下載完成%s - %s,耗時%s毫秒' % (symbol, df.index[0], df.index[-1], cost))
    print(jq.get_query_count())
  
def jqdownloadMappingExcel(exportpath = "C:\Project\\"):
    getfuture = jq.get_all_securities(types=['futures'], date=None)
    # list: 用來過濾securities的類型, list元素可選: ‘stock’, ‘fund’, ‘index’, ‘futures’, ‘etf’, ‘lof’, ‘fja’, ‘fjb’.types為空時返回所有股票, 不包括基金, 指數(shù)和期貨
    getfuture.to_excel(
                    exportpath + "Mapping" + str(date.today())  + "futures.xls",
                    index=True, header=True)
  
  
# ----------------------------------------------------------------------
def downloadAllMinuteBar(days=10):
    """下載所有配置中的合約的分鐘線數(shù)據(jù)"""
    print('-' * 50)
    print(u'開始下載合約分鐘線數(shù)據(jù)')
    print('-' * 50)
  
    startDt = datetime.today() - days * timedelta(1)
    startDate = startDt.strftime('%Y-%m-%d')
  
    # 添加下載任務(wù)
    enddt = datetime.today()
    endDate = enddt.strftime('%Y-%m-%d %H:%M:%S')
  
  
    jqdownloadMinuteBarBySymbol('rb1910', startDate, endDate)
  
    print('-' * 50)
    print
    u'合約分鐘線數(shù)據(jù)下載完成'
    print('-' * 50)
  
if __name__ == '__main__':
    # jqdownloadMappingExcel()
    #下載主力合約
  
    downloadAllMinuteBar(days=10)
    #下載單個品種
    # jqdownloadMinuteBarBySymbol('510050.XSHG',startDate,endDate)

看完了這篇文章,相信你對“如何利用Joinquant數(shù)據(jù)源為vnpy添加期貨行情數(shù)據(jù)”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!


當(dāng)前名稱:如何利用Joinquant數(shù)據(jù)源為vnpy添加期貨行情數(shù)據(jù)-創(chuàng)新互聯(lián)
本文鏈接:http://m.jcarcd.cn/article/ccgohp.html
主站蜘蛛池模板: 福利导航在线 | 乱伦自拍影视三级 | 国产在线中文字幕 | 国禹九歌电影网 | 日本中文字幕有码 | 91精品国产自产 | 国产福利在线导航 | 91精品啪 | 91啪日韩一区二区 | 日本亚洲欧 | 91资源在线视频 | 国产精品国产精品偷 | 欧洲亚洲视频 | 日韩精品国产一级 | 人人干人人摸 | 国产自产自拍视频 | 国产精品成人免费福 | 91精品综合| 日韩女同精品一区二 | 精品视频app | 欧洲成人一区二区 | 乱子伦一区二区三区 | 国产91视频一区 | 国产真实乱在线更新 | 1024亚洲 | 国产在线播精品第三 | 国产福利资源在线 | 91红桃视频 | 九九精品视频国产 | 国产手机自拍视频 | 国产天堂在线观看 | 91啪国自产中 | 99在线视频69| 精品美女 | 欧美专区在线观看 | 99热国产区 | 日本亚洲三级国产 | 精品大全中文字幕 | 国产极品美 | 国产萝控精| 日本伊人网 |