怎么使用Joinquant做實盤行情數據-創新互聯

這篇文章主要為大家展示了“怎么使用Joinquant做實盤行情數據”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么使用Joinquant做實盤行情數據”這篇文章吧。

成都創新互聯公司是一家專業提供古田企業網站建設,專注與網站建設、網站設計、H5開發、小程序制作等業務。10年已為古田眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。

如下圖,如果運行行情數據下載時候,是在交易日中的話比如2點半或者上午8點,如果填寫的endDate是當天或者之后的日期,那么返回數據會自動填充到下午3點交易時候。此時之后的數據都是交易量為0,價格就是2點半時候價格。

怎么使用Joinquant做實盤行情數據

所以在用作實盤數據分析時候,必須要填入endDate的分鐘時間為當前時間,才可以確保不會出現控制。整體代碼更新如下:

# 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]  # 數據庫
# 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):
    """下載某一合約的分鐘線數據"""
    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線數據下載完成%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為空時返回所有股票, 不包括基金, 指數和期貨
    getfuture.to_excel(
                    exportpath + "Mapping" + str(date.today())  + "futures.xls",
                    index=True, header=True)
 
 
# ----------------------------------------------------------------------
def downloadAllMinuteBar(days=10):
    """下載所有配置中的合約的分鐘線數據"""
    print('-' * 50)
    print(u'開始下載合約分鐘線數據')
    print('-' * 50)
 
    startDt = datetime.today() - days * timedelta(1)
    startDate = startDt.strftime('%Y-%m-%d')
 
    # 添加下載任務
    enddt = datetime.today()
    endDate = enddt.strftime('%Y-%m-%d %H:%M:%S')
 
 
    jqdownloadMinuteBarBySymbol('rb1910', startDate, endDate)
 
    print('-' * 50)
    print
    u'合約分鐘線數據下載完成'
    print('-' * 50)
 
if __name__ == '__main__':
    # jqdownloadMappingExcel()
    #下載主力合約
 
    downloadAllMinuteBar(days=10)
    #下載單個品種
    # jqdownloadMinuteBarBySymbol('510050.XSHG',startDate,endDate)

以上是“怎么使用Joinquant做實盤行情數據”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯-成都網站建設公司行業資訊頻道!

本文題目:怎么使用Joinquant做實盤行情數據-創新互聯
轉載來于:http://m.kartarina.com/article0/ccigoo.html

成都網站建設公司_創新互聯,為您提供網站營銷虛擬主機微信小程序全網營銷推廣網站維護商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 亚洲国产一二三精品无码| 国产又爽又黄无码无遮挡在线观看| 日韩精品无码视频一区二区蜜桃 | 一本大道东京热无码一区| 少妇性饥渴无码A区免费 | 亚洲性无码AV中文字幕| 亚洲精品无码少妇30P| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 日韩人妻系列无码专区| 久久亚洲精品无码| 国产成人无码av在线播放不卡| 国产做无码视频在线观看浪潮| 亚洲av中文无码字幕色不卡| 国产爆乳无码视频在线观看| 精品一区二区三区无码视频 | 亚洲av无码乱码在线观看野外| 免费无码又爽又刺激高潮视频| 久久无码人妻精品一区二区三区| 激情无码人妻又粗又大中国人 | 精品亚洲A∨无码一区二区三区 | 久久综合精品国产二区无码| 国产精品无码无卡无需播放器 | 无码人妻少妇伦在线电影| 亚洲日韩中文字幕无码一区| 久久久无码精品国产一区 | 亚洲AV无码久久精品蜜桃| 亚洲AV中文无码乱人伦在线视色| 西西444www无码大胆| 无码中文字幕乱码一区 | 中文无码制服丝袜人妻av| 亚洲精品97久久中文字幕无码| 亚洲乱亚洲乱妇无码| 亚洲国产精品无码中文lv| 亚洲AV无码一区二区三区在线| 午夜福利av无码一区二区| 日韩精品真人荷官无码| 久久亚洲AV成人无码| 亚洲AV无码一区二区三区性色| 50岁人妻丰满熟妇αv无码区| 一区二区无码免费视频网站| 亚洲AV日韩AV永久无码色欲|