z 4 éve
szülő
commit
ffc1ee777d

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 127 - 0
StockRestData.py


BIN
__pycache__/StockRestData.cpython-38.pyc


BIN
__pycache__/dbOperation.cpython-38.pyc


BIN
__pycache__/dbOperationStock.cpython-38.pyc


BIN
__pycache__/db_config.cpython-38.pyc


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 124 - 0
bondRestData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 79
clacHistData.py


+ 0 - 74
clacRestData.py

@@ -1,74 +0,0 @@
-# -*- coding:utf-8 -*-
-
-import time
-import datetime
-from StockRestPojo import StockRestPojo
-from dbOperation import dbOperation
-import db_config
-from threading import Thread
-from time import sleep
-import asyncio
-
-async def clacGroupData(dbConfig):
-    db = dbOperation(dbConfig)
-    stockPojoList = db.query_list("select id, code, name, list_date listDate from t_stock_base_info where 1 = 1")
-    for stockPojo in stockPojoList:
-        stockRestPojoList = db.query_list("SELECT id, realTime FROM `data_rt_" + stockPojo['code'].replace(".", "_").lower() + "` where dateOne = '0'")
-        sql = ""
-        for stockRestPojo in stockRestPojoList:
-            datTime = stockRestPojo['realTime']
-            min_ = time.localtime(datTime).tm_min # 获取分钟
-            sec_ = time.localtime(datTime).tm_sec # 获取秒数
-
-            # 1分钟数据
-            if sec_ != 0:
-                tempDatTime = datTime + 60 - sec_
-                stockRestPojo['dateOne'] = str(int(tempDatTime))
-            else:
-                stockRestPojo['dateOne'] = str(int(datTime))
-
-            # 5分钟数据
-            if sec_ != 0 or min_%5 != 0:
-                tempDatTime = datTime + (5 * 60) - sec_ - (min_%5 * 60)
-                stockRestPojo['dateFive'] = str(int(tempDatTime))
-            else:
-                stockRestPojo['dateFive'] = str(int(datTime))
-
-            # 15分钟数据
-            if sec_ != 0 or min_%15 != 0:
-                tempDatTime = datTime + (15 * 60) - sec_ - (min_%15 * 60)
-                stockRestPojo['dateFifteen'] = str(int(tempDatTime))
-            else:
-                stockRestPojo['dateFifteen'] = str(int(datTime))
-
-            # 30分钟数据
-            if sec_ != 0 or min_%30 != 0:
-                tempDatTime = datTime + (30 * 60) - sec_ - (min_%30 * 60)
-                stockRestPojo['dateThirty'] = str(int(tempDatTime))
-            else:
-                stockRestPojo['dateThirty'] = str(int(datTime))
-
-            # 60分钟数据
-            if sec_ != 0 or min_%60 != 0:
-                tempDatTime = datTime + (60 * 60) - sec_ - (min_%60 * 60)
-                stockRestPojo['dateSixty'] = str(int(tempDatTime))
-            else:
-                stockRestPojo['dateSixty'] = str(int(datTime))
-
-            sql = sql + "update `data_rt_" + stockPojo['code'].replace(".", "_").lower() + "` set dateOne = '" + str(stockRestPojo['dateOne']) + "', dateFive = '" + str(stockRestPojo['dateFive']) + "', dateFifteen = '" + str(stockRestPojo['dateFifteen']) + "', dateThirty = '" + str(stockRestPojo['dateThirty']) + "', dateSixty = '" + str(stockRestPojo['dateSixty']) + "' where id = '" + str(stockRestPojo['id']) + "';"
-        db.update(sql)
-    print("运行完成")
-    db.close
-
-
-async def main():
-    await asyncio.gather(
-        clacGroupData(db_config.db_gupiao)
-    )
-
-try:
-    #定时任务 每3秒钟触发一次
-    asyncio.run(main())
-
-except Exception as ee:
-    print("error >>>",ee)

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 143 - 0
clacRestGroupData.py


+ 1 - 1
dbOperation.py

@@ -68,7 +68,7 @@ class dbOperation:
     def batchInsert(self, tableName, key, vlues):
         try:
             sql = "insert into `" + tableName + "`(" + key + ") values " + vlues +";"
-            print(sql)
+            # print(sql)
             # text = input("press any key to cancel csq \r\n")
             # 执行sql语句
             self.cursor.execute(sql)

+ 1 - 1
dbOperationStock.py

@@ -3,7 +3,7 @@ import pymysql
 import db_config
 import re
 
-class dbOperation:
+class dbOperationStock:
 
      #建立数据库连接,新建一个查询页面
     def __init__(self, dbName):

+ 2 - 8
db_config.py

@@ -11,20 +11,14 @@ passwdstock ='root' # 密码
 charset = 'utf8' # 字符编码
 
 db_gupiao = 'stock_data' # 股票
-
 db_ganggu = 'stock_data_ganggu' #港股
+db_meigu = 'stock_data_meigu' #美股
+db_zhishu = 'stock_data_zhishu' #指数
 
 db_jijin = 'stock_data_jijin' #基金
-
 db_lilv = 'stock_data_lilv' #利率
-
-db_meigu = 'stock_data_meigu' #美股
-
 db_waihui = 'stock_data_waihui' #外汇
-
 db_zhaiquan = 'stock_data_zhaiquan' #债券
 
-db_zhishu = 'stock_data_zhishu' #指数
-
 
 db_stock = 'stock2chen' # 股票

+ 0 - 374
demo-backup.py

@@ -1,374 +0,0 @@
-# -*- coding:utf-8 -*-
-
-__author__ = 'weijie'
-
-from EmQuantAPI import *
-from datetime import timedelta, datetime
-import time as _time
-import traceback
-print("开始了")
-def mainCallback(quantdata):
-    """
-    mainCallback 是主回调函数,可捕捉如下错误
-    在start函数第三个参数位传入,该函数只有一个为c.EmQuantData类型的参数quantdata
-    :param quantdata:c.EmQuantData
-    :return:
-    """
-    print ("mainCallback",str(quantdata))
-    print("开始了2222")
-    #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
-    if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
-        print ("Your account is disconnect. You can force login automatically here if you need.")
-    #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
-    elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
-        print ("Your all csq subscribe have stopped.")
-    #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
-    elif str(quantdata.ErrorCode) == "10002009":
-        print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
-        # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
-    elif str(quantdata.ErrorCode) == "10002012":
-        print ("csq subscribe break on some error, reconnect and request automatically.")
-        # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
-    elif str(quantdata.ErrorCode) == "10002014":
-        print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
-    # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
-    elif str(quantdata.ErrorCode) == "10002013":
-        print ("cnq subscribe break on some error, reconnect and request automatically.")
-    # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
-    elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
-        print("Your all cnq subscribe have stopped.")
-    else:
-        pass
-
-def startCallback(message):
-    print("[EmQuantAPI Python]", message)
-    return 1
-def csqCallback(quantdata):
-    """
-    csqCallback 是csq订阅时提供的回调函数模板。该函数只有一个为c.EmQuantData类型的参数quantdata
-    :param quantdata:c.EmQuantData
-    :return:
-    """
-    print ("csqCallback,", str(quantdata))
-
-def cstCallBack(quantdata):
-    '''
-    cstCallBack 是日内跳价服务提供的回调函数模板
-    '''
-    for i in range(0, len(quantdata.Codes)):
-        length = len(quantdata.Dates)
-        for it in quantdata.Data.keys():
-            print(it)
-            for k in range(0, length):
-                for j in range(0, len(quantdata.Indicators)):
-                    print(quantdata.Data[it][j * length + k], " ",end = "")
-                print()
-def cnqCallback(quantdata):
-    """
-    csqCallback 是cnq订阅时提供的回调函数模板。该函数只有一个为c.EmQuantData类型的参数quantdata
-    :param quantdata:c.EmQuantData
-    :return:
-    """
-    # print ("cnqCallback,", str(quantdata))
-    print("cnqCallback,")
-    for code in quantdata.Data:
-        total = len(quantdata.Data[code])
-        for k in range(0, len(quantdata.Data[code])):
-            print(quantdata.Data[code][k])
-
-try:
-    #调用登录函数(激活后使用,不需要用户名密码)
-    loginResult = c.start("ForceLogin=1", '', mainCallback)
-    if(loginResult.ErrorCode != 0):
-        print("login in fail")
-        exit()
-
-    # 资讯查询使用范例
-    # data = c.cfn("300059.SZ,600519.SH,300024.SZ", "companynews,industrynews", eCfnMode_EndCount,
-    #              "starttime=20190501010000,endtime=20190725,count=10")
-    # print("cfn输出结果======分隔线======")
-    # if (not isinstance(data, c.EmQuantData)):
-    #     print (data)
-    # else:
-    #     if (data.ErrorCode != 0):
-    #         print("request cfn Error, ", data.ErrorMsg)
-    #     else:
-    #         for code in data.Data:
-    #             total = len(data.Data[code])
-    #             for k in range(0, len(data.Data[code])):
-    #                 print(data.Data[code][k])
-
-    # 板块树查询使用范例
-    # data = c.cfnquery("")
-    # print("cfnquery输出结果======分隔线======")
-    # if (not isinstance(data, c.EmQuantData)):
-    #     print(data)
-    # else:
-    #     if (data.ErrorCode != 0):
-    #         print("request cfnquery Error, ", data.ErrorMsg)
-    #     else:
-    #         for code in data.Codes:
-    #             for i in range(0, len(data.Indicators)):
-    #                 print(data.Data[code][i])
-
-    # 资讯订阅使用范例
-    # data = c.cnq("S888005002API", "sectornews", "", cnqCallback)
-    # if data.ErrorCode != 0:
-    #     print("request cnq Error, ", data.ErrorMsg)
-    # else:
-    #     print("cnq输出结果======分隔线======")
-    #     _time.sleep(60)
-    #     text = input("press any key to cancel cnq \r\n")
-    #     # 取消订阅
-    #     data = c.cnqcancel(data.SerialID)
-
-    # # cmc使用范例
-    # data = c.cmc("300059.SZ", "OPEN,CLOSE,HIGH", (datetime.today() + timedelta(-6)).strftime("%Y-%m-%d"), datetime.today().strftime("%Y-%m-%d"), "RowIndex=2,Ispandas=0")
-    # print("cmc输出结果======分隔线======")
-    # if(not isinstance(data, c.EmQuantData)):
-    #     print(data)
-    # else:
-    #     if(data.ErrorCode != 0):
-    #         print("request cmc Error, ", data.ErrorMsg)
-    #     else:
-    #         for i in range(0, len(data.Indicators)):
-    #             for j in range(0, len(data.Dates)):
-    #                 print("indicator=%s, value=%s" % (data.Indicators[i], str(data.Data[i][j])))
-
-    # # csd使用范例
-    # data = c.csd("300059.SZ,600425.SH", "open,close", "2016-07-01", "2016-07-06", "RowIndex=1,period=1,adjustflag=1,curtype=1,pricetype=1,year=2016,Ispandas=0")
-
-    # print("csd输出结果======分隔线======")
-    # if not isinstance(data, c.EmQuantData):
-    #     print(data)
-    # else:
-    #     if(data.ErrorCode != 0):
-    #         print("request csd Error, ", data.ErrorMsg)
-    #     else:
-    #         for code in data.Codes:
-    #             for i in range(0, len(data.Indicators)):
-    #                 for j in range(0, len(data.Dates)):
-    #                     print(data.Data[code][i][j])
-
-    # # css使用范例
-    # data = c.css("300059.SZ,000002.SZ", "open,close", "TradeDate=20170308, Ispandas=0")
-    # print("css输出结果======分隔线======")
-    # if not isinstance(data, c.EmQuantData):
-    #     print(data)
-    # else:
-    #     if(data.ErrorCode != 0):
-    #         print("request css Error, ", data.ErrorMsg)
-    #     else:
-    #         for code in data.Codes:
-    #             for i in range(0, len(data.Indicators)):
-    #                 print(data.Data[code][i])
-
-    # # sector使用范例
-    # # 001004 全部A股板块
-    # data = c.sector("001004", "2016-04-26")
-    # if data.ErrorCode != 0:
-    #     print("request sector Error, ", data.ErrorMsg)
-    # else:
-    #     print("sector输出结果======分隔线======")
-    #     for code in data.Data:
-    #         print(code)
-
-    # # tradedate使用范例
-    # data = c.tradedates("2016-07-01", "2016-07-12")
-    # if(data.ErrorCode != 0):
-    #     print("request tradedates Error, ", data.ErrorMsg)
-    # else:
-    #     print("tradedate输出结果======分隔线======")
-    #     for item in data.Data:
-    #         print(item)
-
-    # # getdate使用范例
-    # data = c.getdate("20160426", -3, "Market=CNSESH")
-    # if(data.ErrorCode != 0):
-    #     print("request getdate Error, ", data.ErrorMsg)
-    # else:
-    #     print("getdate输出结果======分隔线======")
-    #     print(data.Data)
-
-    #实时行情订阅使用范例
-    data = c.csq('600000.SH,300059.SZ', 'TIME,Now,Volume','Pushtype=2',csqCallback)
-    if(data.ErrorCode != 0):
-        print("request csq Error, ", data.ErrorMsg)
-    else:
-        print("csq输出结果======分隔线======")
-        _time.sleep(2)
-        text = input("press any key to cancel csq \r\n")
-        #取消订阅
-        data = c.csqcancel(data.SerialID)
-    
-    # #实时行情订阅使用范例
-    # data = c.csq('AUDUSD.FX', 'Time,now','Pushtype=0,alltick=1',csqCallback)
-    # if(data.ErrorCode != 0):
-    #     print("request csq Error, ", data.ErrorMsg)
-    # else:
-    #     print("csq输出结果======分隔线======")
-    #     _time.sleep(2)
-    #     text = input("press any key to cancel csq \r\n")
-    #     #取消订阅
-    #     data = c.csqcancel(data.SerialID)
-    
-    # #日内跳价使用范例
-    # data = c.cst('600000.SH,300059.SZ', 'TIME,OPEN,HIGH,LOW,NOW', '093000', '094000','',cstCallBack)
-    # if(data.ErrorCode != 0):
-    #     print("request cst Error, ", data.ErrorMsg)
-    # else:
-    #     print("cst输出结果======分割线======")
-    #     _time.sleep(2)
-    #     input("press any key to quit cst \r\n")
-
-    # #行情快照使用范例
-    # data = c.csqsnapshot("000005.SZ,600602.SH,600652.SH,600653.SH,600654.SH,600601.SH,600651.SH,000004.SZ,000002.SZ,000001.SZ,000009.SZ", "PRECLOSE,OPEN,HIGH,LOW,NOW,AMOUNT", "Ispandas=0")
-    # if not isinstance(data, c.EmQuantData):
-    #     print(data)
-    # else:
-    #     if(data.ErrorCode != 0):
-    #         print("request csqsnapshot Error, ", data.ErrorMsg)
-    #     else:
-    #         print("csqsnapshot输出结果======分割线======")
-    #         for key,value in data.Data.items():
-    #             print(key, ">>> ", end="")
-    #             for v in value:
-    #                 print(v, " ", end="")
-    #             print()
-            
-    # #获取专题报表使用范例
-    # data = c.ctr("INDEXCOMPOSITION", "", "IndexCode=000300.SH,EndDate=2017-01-13")
-    # if(data.ErrorCode != 0):
-    #     print("request ctr Error, ", data.ErrorMsg)
-    # else:
-    #     print("ctr输出结果======分割线======")
-    #     for key,value in data.Data.items():
-    #         for v in value:
-    #              print(v, " ", end="")
-    #         print()
-
-    # #选股使用范例
-    # data = c.cps("B_001004", "s0,OPEN,2017/2/27,1;s1,NAME", "[s0]>0", "orderby=rd([s0]),top=max([s0],100)")
-    # if(data.ErrorCode != 0):
-    #     print("request cps Error, ", data.ErrorMsg)
-    # else:
-    #     print("cps输出结果======分割线======")
-    #     for it in data.Data:
-    #        print(it)
-
-    # #宏观指标服务
-    # data = c.edb("EMM00087117","IsPublishDate=1,RowIndex=1,Ispandas=1")
-    # if not isinstance(data, c.EmQuantData):
-    #     print(data)
-    # else:
-    #     if(data.ErrorCode != 0):
-    #         print("request edb Error, ", data.ErrorMsg)
-    #     else:
-    #         print("edbid           date          ",end="")
-    #         for ind in data.Indicators:
-    #             print(ind, end="   ")
-    #         print("")
-    #         for code in data.Codes:
-    #             for j in range(0, len(data.Dates)):
-    #                 print(code, "    ", data.Dates[j], end="   ")
-    #                 for i in range(0, len(data.Indicators)):
-    #                     print(data.Data[code][i][j], end="   ")
-    #                 print("")
-
-    # #宏观指标id详情查询
-    # data = c.edbquery("EMM00058124,EMM00087117,EMG00147350")
-    # if(data.ErrorCode != 0):
-    #     print("request edbquery Error, ", data.ErrorMsg)
-    # else:
-    #     print("edbid         ",end="")
-    #     for ind in data.Indicators:
-    #         print(ind, end="   ")
-    #     print("")
-    #     for code in data.Codes:
-    #         for j in range(0, len(data.Dates)):
-    #             print(code, "    ", end="   ")
-    #             for i in range(0, len(data.Indicators)):
-    #                 print(data.Data[code][i][j], end="   ")
-    #             print("")
-
-    # #新建组合
-    # data = c.pcreate("quant001", "组合牛股", 100000000, "这是一个牛股的组合")
-    # if(data.ErrorCode != 0):
-    #     print("request pcreate Error, ", data.ErrorMsg)
-    # else:
-    #     print("create succeed")
-
-    # # 组合资金调配
-    # data = c.pctransfer("quant001", "IN", "2019-08-13", 10000, "追加资金", "TRANSFERTYPE=1")
-    # if (data.ErrorCode != 0):
-    #     print("request pctransfer Error, ", data.ErrorMsg)
-    # else:
-    #     print("pctransfer succeed")
-
-    # # 组合下单
-    # orderdict = {'code': ['300059.SZ', '600000.SH'],
-    #              'volume': [1000, 200],
-    #              'price': [13.11, 12.12],
-    #              'date': ['2017-08-14', '2017-08-24'],
-    #              'time': ['14:22:18', '14:22:52'],
-    #              'optype': [eOT_buy, eOT_buy],
-    #              'cost': [0, 3],
-    #              'rate': [0, 2],
-    #              'destvolume': [0, 0],
-    #              'weight': [0.1, 0.1]}
-    # data = c.porder("quant001", orderdict, "this is a test")
-    # if(data.ErrorCode != 0):
-    #     print("porder Error, ", data.ErrorMsg)
-    # else:
-    #     print("order succeed")
-
-    # #组合报表查询
-    # data = c.preport("quant001", "record", "startdate=2017/07/12,enddate=2018/01/15")
-    # if(data.ErrorCode != 0):
-    #     print("request preport Error, ", data.ErrorMsg)
-    # else:
-    #     for ind in data.Indicators:
-    #         print(ind, end="   ")
-    #     print("")
-    #     for k in data.Data:
-    #         for it in data.Data[k]:
-    #             print(it, end="   ")
-    #         print("")
-
-    # #组合信息查询
-    # data = c.pquery()
-    # if(data.ErrorCode != 0):
-    #     print("request pquery Error, ", data.ErrorMsg)
-    # else:
-    #     print("[key]:",end="")
-    #     for index in range(0, len(data.Indicators)):
-    #         print("\t", data.Indicators[index],end="")
-    #     print("")
-    #     for k,v in data.Data.items():
-    #         print(k,": ", end="")
-    #         for vv in v:
-    #             print("\t", vv, end="")
-    #         print("")
-
-    # #删除组合
-    # data = c.pdelete("quant001")
-    # if(data.ErrorCode != 0):
-    #     print("request pdelete Error, ", data.ErrorMsg)
-    # else:
-    #     print("delete succeed")
-
-    # #获取区间日期内的交易日天数
-    # data = c.tradedatesnum("2018-01-01", "2018-09-15")
-    # if data.ErrorCode != 0:
-    #     print("request tradedatesnum Error, ", data.ErrorMsg)
-    # else:
-    #     print("tradedatesnum======分割线======")
-    #     print(data.Data)
-
-#退出
-    data = logoutResult = c.stop()
-except Exception as ee:
-    print("error >>>",ee)
-    traceback.print_exc()
-else:
-    print("demo end")

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 31 - 12
getCst.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 163
getHistData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 170
getHist_gangguData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 170
getHist_jijinData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 170
getHist_meiguData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 171
getHist_zhaiquanData.py


+ 1 - 8
getLimitUpNewsData.py

@@ -41,13 +41,8 @@ def mainCallback(quantdata):
         pass
 
 def cnqCallback(quantdata):
-    """
-    csqCallback 是cnq订阅时提供的回调函数模板。该函数只有一个为c.EmQuantData类型的参数quantdata
-    :param quantdata:c.EmQuantData
-    :return:
-    """
     print ("cnqCallback,", str(quantdata))
-    # print("cnqCallback,")
+    print("cnqCallback,")
     for code in quantdata.Data:
         total = len(quantdata.Data[code])
         for k in range(0, len(quantdata.Data[code])):
@@ -60,7 +55,6 @@ try:
         print("login in fail")
         exit()
 
-
     # 资讯订阅使用范例 0072255 昨日涨停
     data = c.cnq("0072255", "sectornews", "", cnqCallback)
     if data.ErrorCode != 0:
@@ -72,7 +66,6 @@ try:
         # 取消订阅
         data = c.cnqcancel(data.SerialID)
 
-
 #退出
     data = logoutResult = c.stop()
 except Exception as ee:

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 210
getRestData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 109
getStockListData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 109
getStockList_gangguData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 131 - 0
hist/BondHistData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 124 - 0
hist/FundHistData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 130 - 0
hist/SotckHistData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 130 - 0
hist/StockHkHistData.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 128 - 0
hist/StockUsaHistData.py


+ 0 - 0
hist/__init__.py


+ 0 - 121
mongo_demo.py

@@ -1,121 +0,0 @@
-from pymongo import MongoClient
-
-db = MongoClient('127.0.0.1',27017)
-my_db = db.my_db
-my_infor = my_db.my_infor
-
-# 向文件中插入数据
-user = [{'name':'jiesen','age':15,'sex':'男'},{'name':'jiesen','age':35,'sex':'男'},{'name':'jiesen','age':23,'sex':'男'}]
-# my_infor.insert(user)
-'''
-insert():可以实现单条或多条数据的插入
-save():只能完成单条数据的插入,并且数据必须是字典结构
-'''
-
-# 查询数据
-res = my_infor.find({'name':'jiesen'})
-# for item in res:
-#     print(item)
-
-# 更新数据
-# multi: 布尔类型, 设置数据更新时是否一次性更新多条数据, 默认为False
-# upsert: 设置数据更新时,如果数据不存在,是否将本次数据添加到文件中,默认为False
-# my_infor.update({'name':'jiesen1'},{'$set':{'age':20,'sex':'woman'}},multi=True,upsert=True)
-
-# 删除数据
-# delete_one(): 删除数据中一条数据
-# delete_many(): 一次性删除多条满足的数据
-# my_infor.delete_many({'name':'jiesen'})
-
-# mongodb条件查询:
-'''
-> : $gt
-< : $lt
->= : $gte
-<= : $lte
-$in:(m,n,) : 提取在指定内容中的数据
-
-$all[n,m,...]: 查找数据库中某一条数据是否全部包含all中的数据, 如果'全部'包含则返回该条数据,否则不反悔
-
-$push: 向已有数据源中按照字段进行数据的添加.基于'列表'
-
-$pop: 将数据库中对应数据的某一个字段数据按照指定方式进行删除. 其中 -1:从列表的起始位置开始删除; 1: 从列表的最后位置开始删除
-
-$pull: 将对应数据中指定的数据分布进行删除(按值删除)
-
-$or : 或者指令, 该指令通常作为字典的键, 其对应的值是一个'列表'结构,列表中每一个元素之间是'并列'的关系.
-
-"在字典中所有的键值对之间代表的是一种'并且'的关系."
-
-.sort('age',1): 将查找之后的结果按照指定的字段进行排序, 1为升序,-1为降序
-
-.skip(m).limit(n): 将查找结果的取值显示为,跳过m条数据,显示n条数据.  即只显示m+1~m+1+n的数据
-'''
-#例:
-#查询年龄在[5,25]之间的所有数据
-res = my_infor.find({
-    'age':{'$gte':5,"$lte":25}
-})
-# for item in res:
-#     print(item)
-
-#查询年龄15以下或25以上,name是jiesen的数据
-res1 = my_infor.find({
-    '$or':[
-        {'age':{'$gte':25}},
-        {'age':{'$lte':15}}
-    ],
-    'name':'jiesen'
-})
-
-
-# $in: 提取在指定内容中的数据
-res3 = my_infor.find({
-    'age':{'$in':(15,23)}
-})
-
-obj = {
-    'name':'ysh',
-    'sex':'男',
-    'age':77,
-    'photo':['img/1.jpg','img/2.jpg'],
-    'score':[12,15,17,90]
-}
-# my_infor.insert(obj)
-
-res4 = my_infor.find({
-    'score':{'$all':[12,15,90]}
-})
-
-# $push: 向已有数据源中按照字段进行数据的添加.基于'列表'
-# my_infor.update(
-#     {'name':'ysh'},   #指定数据的条件
-#     {'$push':{'score':[103,120]}}
-# )
-
-# $pop: 将数据库中对应数据的某一个字段数据按照指定方式进行删除. 其中 -1:从列表的起始位置开始删除; 1: 从列表的最后位置开始删除
-# $pull: 将对应数据中指定的数据分布进行删除(按值删除)
-my_infor.update(
-    {'name':'ysh'},
-    # {'$pop':{'score':1}},
-    {'$pull':{'score':90}}
-)
-
-#多路查询
-res5 = my_infor.find({
-    'score.0':{'$gt':10}
-})
-
-obj1 = {
-    'name':'YSH',
-    'son':[
-        {'name':'ete','age':17},
-        {'name':"ete1",'age':15}
-    ]
-}
-# my_infor.insert(obj1)
-res6 = my_infor.find({
-    'son.1.age':15
-})
-for item in res6:
-    print(item)

+ 3 - 0
pojo/CsqDataPojo.py

@@ -0,0 +1,3 @@
+class CsqDataPojo:
+    id = ""
+    dataContent = ""

StockHistPojo.py → pojo/StockHistPojo.py


StockPojo.py → pojo/StockPojo.py


StockRestPojo.py → pojo/StockRestPojo.py


+ 0 - 0
pojo/__init__.py


+ 0 - 0
rest/__init__.py


+ 84 - 0
startGetHistData.py

@@ -0,0 +1,84 @@
+from threading import Thread
+import asyncio
+from EmQuantAPI import *
+import traceback
+from SotckHistData import SotckHistData
+from StockHkHistData import StockHkHistData
+from StockUsaHistData import StockUsaHistData
+from BondHistData import BondHistData
+
+def mainCallback(quantdata):
+    print ("mainCallback",str(quantdata))
+    #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
+    if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
+        print ("Your account is disconnect. You can force login automatically here if you need.")
+    #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
+    elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
+        print ("Your all csq subscribe have stopped.")
+    #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
+    elif str(quantdata.ErrorCode) == "10002009":
+        print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
+        # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
+    elif str(quantdata.ErrorCode) == "10002012":
+        print ("csq subscribe break on some error, reconnect and request automatically.")
+        # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
+    elif str(quantdata.ErrorCode) == "10002014":
+        print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
+    # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
+    elif str(quantdata.ErrorCode) == "10002013":
+        print ("cnq subscribe break on some error, reconnect and request automatically.")
+    # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
+    elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
+        print("Your all cnq subscribe have stopped.")
+    else:
+        pass
+
+# 获取股票历史数据
+async def getStockHist():
+    sotckHistData = SotckHistData()
+    sotckHistData.toGet()
+    
+# 获取港股历史数据
+async def getStockHkHist():
+    stockHkHistData = StockHkHistData()
+    stockHkHistData.toGet()
+
+# 获取美股历史数据
+async def getStockUsaHist():
+    stockUsaHistData = StockUsaHistData()
+    stockUsaHistData.toGet()
+
+# 获取债券历史数据
+async def getBondHist():
+    bondHistData = BondHistData()
+    bondHistData.toGet()
+
+# 获取指数历史数据
+async def getIndexHist():
+    print(2)
+
+async def main():
+    await asyncio.gather(
+        getStockHist(),
+        getStockHkHist(),
+        getStockUsaHist(),
+        getBondHist(),
+    )
+
+# 每天执行一次  运行时间在每天停盘之后到第二天开盘之前就行
+try:
+    #调用登录函数(激活后使用,不需要用户名密码)
+    loginResult = c.start("ForceLogin=1", '', mainCallback)
+    if(loginResult.ErrorCode != 0):
+        print("login in fail")
+        exit()
+    asyncio.run(main())
+
+except Exception as ee:
+    print("error >>>",ee)
+    #退出
+    data = logoutResult = c.stop()
+    traceback.print_exc()
+else:
+    print("demo end")
+    

+ 13 - 19
startGet.py

@@ -2,20 +2,8 @@ from threading import Thread
 from time import sleep
 import asyncio
 from EmQuantAPI import *
-from datetime import timedelta, datetime
-import time
 import traceback
-import json
-from StockRestPojo import StockRestPojo
-from dbOperation import dbOperation
-from threading import Thread
-import db_config
-
-async def getHistStock():
-    print(1)
-
-async def getHistIndex():
-    print(2)
+from StockRestData import StockRestData
 
 def mainCallback(quantdata):
     print ("mainCallback",str(quantdata))
@@ -43,25 +31,31 @@ def mainCallback(quantdata):
     else:
         pass
 
+# 获取股票实时数据
+async def getStockRest():
+    stockRestData = StockRestData()
+    stockRestData.toGet()
+    
+
 async def main():
     await asyncio.gather(
-        clacGroupData(db_config.db_gupiao)
+        getStockRest(),
     )
 
-print("开始了")
+# 运行了就不会停了
 try:
     #调用登录函数(激活后使用,不需要用户名密码)
     loginResult = c.start("ForceLogin=1", '', mainCallback)
     if(loginResult.ErrorCode != 0):
         print("login in fail")
         exit()
-#退出
-    data = logoutResult = c.stop()
-
+    asyncio.run(main())
 
 except Exception as ee:
     print("error >>>",ee)
+    #退出
+    data = logoutResult = c.stop()
     traceback.print_exc()
 else:
     print("demo end")
-    asyncio.run(main())
+    

+ 69 - 0
startGetStructure.py

@@ -0,0 +1,69 @@
+from threading import Thread
+from time import sleep
+import asyncio
+from EmQuantAPI import *
+import traceback
+from StockStructure import StockStructure
+from StockHkStructure import StockHkStructure
+
+
+def mainCallback(quantdata):
+    print ("mainCallback",str(quantdata))
+    #登录掉线或者 登陆数达到上线(即登录被踢下线) 这时所有的服务都会停止
+    if str(quantdata.ErrorCode) == "10001011" or str(quantdata.ErrorCode) == "10001009":
+        print ("Your account is disconnect. You can force login automatically here if you need.")
+    #行情登录验证失败(每次连接行情服务器时需要登录验证)或者行情流量验证失败时,会取消所有订阅,用户需根据具体情况处理
+    elif str(quantdata.ErrorCode) == "10001021" or str(quantdata.ErrorCode) == "10001022":
+        print ("Your all csq subscribe have stopped.")
+    #行情服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
+    elif str(quantdata.ErrorCode) == "10002009":
+        print ("Your all csq subscribe have stopped, reconnect 6 times fail.")
+        # 行情订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_QUOTE_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
+    elif str(quantdata.ErrorCode) == "10002012":
+        print ("csq subscribe break on some error, reconnect and request automatically.")
+        # 资讯服务器断线自动重连连续6次失败(1分钟左右)不过重连尝试还会继续进行直到成功为止,遇到这种情况需要确认两边的网络状况
+    elif str(quantdata.ErrorCode) == "10002014":
+        print ("Your all cnq subscribe have stopped, reconnect 6 times fail.")
+    # 资讯订阅遇到一些错误(这些错误会导致重连,错误原因通过日志输出,统一转换成EQERR_INFO_RECONNECT在这里通知),正自动重连并重新订阅,可以做个监控
+    elif str(quantdata.ErrorCode) == "10002013":
+        print ("cnq subscribe break on some error, reconnect and request automatically.")
+    # 资讯登录验证失败(每次连接资讯服务器时需要登录验证)或者资讯流量验证失败时,会取消所有订阅,用户需根据具体情况处理
+    elif str(quantdata.ErrorCode) == "10001024" or str(quantdata.ErrorCode) == "10001025":
+        print("Your all cnq subscribe have stopped.")
+    else:
+        pass
+
+# 获取股票列表并生成数据库表
+async def getStockStructure():
+    stockStructure = StockStructure()
+    stockStructure.toGet()
+
+# 获取港股列表并生成数据库表
+async def getStockHkStructure():
+    stockHkStructure = StockHkStructure()
+    stockHkStructure.toGet()  
+    
+
+async def main():
+    await asyncio.gather(
+        getStockStructure(),
+        getStockHkStructure(),
+    )
+
+# 获取需要数据的数据结构
+try:
+    #调用登录函数(激活后使用,不需要用户名密码)
+    loginResult = c.start("ForceLogin=1", '', mainCallback)
+    if(loginResult.ErrorCode != 0):
+        print("login in fail")
+        exit()
+    asyncio.run(main())
+
+except Exception as ee:
+    print("error >>>",ee)
+    #退出
+    data = logoutResult = c.stop()
+    traceback.print_exc()
+else:
+    print("demo end")
+    

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 68 - 0
structure/StockHkStructure.py


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 66 - 0
structure/StockStructure.py


+ 0 - 0
structure/__init__.py


+ 50 - 0
test.py

@@ -0,0 +1,50 @@
+# -*- coding:utf-8 -*-
+
+__author__ = 'weijie'
+
+from EmQuantAPI import *
+import datetime
+import time
+import traceback
+import json
+from StockRestPojo import StockRestPojo
+from dbOperation import dbOperation
+
+# print("开始了")
+# datTime = datetime.datetime.strptime("2020-1-23", "%Y-%m-%d")
+# print(datTime)
+
+
+
+
+
+# year = time.localtime(datTime1).tm_year # 获取年份
+# print(str(year) + "-01-01")
+# datTime = time.mktime(time.strptime(str(year) + "-01-01", "%Y-%m-%d"))
+# print(int(datTime))
+
+# month = time.localtime(datTime1).tm_mon # 获取月份
+# print(str(month))
+# year = time.localtime(datTime1).tm_year # 获取年份
+# if 10 > month:
+#     print(str(year) + "-0" + str(month) + "-01")
+#     datTime = time.mktime(time.strptime(str(year) + "-0" + str(month) + "-01", "%Y-%m-%d"))
+#     print(int(datTime))
+# else:
+#     print(str(year) + "-" + str(month) + "-01")
+#     datTime = time.mktime(time.strptime(str(year) + "-" + str(month) + "-01", "%Y-%m-%d"))
+#     print(int(datTime))
+
+in_date = '1994-04-12'
+# datTime1 = time.mktime(time.strptime(in_date, "%Y-%m-%d"))
+# wday = time.localtime(datTime1).tm_wday # 获取周
+
+dt = datetime.datetime.strptime(in_date, "%Y-%m-%d")
+out_date = (dt + datetime.timedelta(days=-wday)).strftime("%Y-%m-%d")
+datTime = time.mktime(time.strptime(out_date, "%Y-%m-%d"))
+
+# #获取日
+# datTime = time.mktime(time.strptime(in_date, "%Y-%m-%d"))
+# print(int(datTime))
+
+# print n_days.strftime('%Y-%m-%d')

+ 95 - 0
test1.py

@@ -0,0 +1,95 @@
+# -*- coding:utf-8 -*-
+
+__author__ = 'weijie'
+
+from EmQuantAPI import *
+import datetime
+import time
+import traceback
+import json
+from StockRestPojo import StockRestPojo
+from dbOperation import dbOperation
+
+# print("开始了")
+# datTime = datetime.datetime.strptime("2020-1-23", "%Y-%m-%d")
+# print(datTime)
+
+date = "20201023"
+time1 = "155959"
+
+datTime = time.mktime(time.strptime(date + time1, "%Y%m%d%H%M%S"))
+print(date + time1 +"=="+ str(datTime))
+
+month = time.localtime(datTime).tm_mon # 获取月份
+year = time.localtime(datTime).tm_year # 获取年份
+day = time.localtime(datTime).tm_mday #获取日
+hour = time.localtime(datTime).tm_hour #获取小时
+min_ = time.localtime(datTime).tm_min # 获取分钟
+sec_ = time.localtime(datTime).tm_sec # 获取秒数
+
+print(min_)
+# 设置1分钟
+if sec_ != 0:
+    min_ = min_ + 1
+    if min_ == 60:
+        min_ = 0
+        hour = hour + 1
+        sec_ = 0
+
+if min_ >= 10:
+    dateOne = str(year) + str(month) + str(day) + str(hour) + str(min_) + "00"
+else :
+    dateOne = str(year) + str(month) + str(day) + str(hour) + "0" + str(min_) + "00"
+datTime1 = time.mktime(time.strptime(str(dateOne), "%Y%m%d%H%M%S"))
+print(str(dateOne) + "==" + str(int(datTime1)))
+
+# 设置5分钟
+dateFive = ""
+tempHour = hour
+tremMin = min_
+if(min_ > 55):
+    tempHour = tempHour + 1
+    tremMin = "00"
+elif (min_%5 != 0):
+    tremMin = tremMin + (5 - tremMin%5)
+if tremMin >= 10:
+    dateFive = str(year) + str(month) + str(day) + str(tempHour) + str(tremMin) + "00"
+else :
+    dateFive = str(year) + str(month) + str(day) + str(tempHour) + "0" + str(tremMin) + "00"
+datTime1 = time.mktime(time.strptime(str(dateFive), "%Y%m%d%H%M%S"))
+print(str(dateFive) + "==" + str(int(datTime1)))
+
+# 设置15分钟
+dateFifteen = ""
+tempHour = hour
+tremMin = min_
+if(min_ > 45):
+    tempHour = tempHour + 1
+    tremMin = "00"
+elif (min_%15 != 0):
+    tremMin = tremMin + (15 - tremMin%15)
+dateFifteen = str(year) + str(month) + str(day) + str(tempHour) + str(tremMin) + "00"
+datTime1 = time.mktime(time.strptime(str(dateFifteen), "%Y%m%d%H%M%S"))
+print(str(dateFifteen) + "==" + str(int(datTime1)))
+
+# 设置30分钟
+dateThirty = ""
+tempHour = hour
+tremMin = min_
+if(min_ > 30):
+    tempHour = tempHour + 1
+    tremMin = "00"
+elif (min_%30 != 0):
+    tremMin = tremMin + (30 - tremMin%30)
+dateThirty = str(year) + str(month) + str(day) + str(tempHour) + str(tremMin) + "00"
+datTime1 = time.mktime(time.strptime(str(dateThirty), "%Y%m%d%H%M%S"))
+print(str(dateThirty) + "==" + str(int(datTime1)))
+
+
+# 设置小时
+if sec_ != 0 ^ min_ != 0:
+    dateSixty = str(year) + str(month) + str(day) + str(hour + 1) + "0000"
+else :
+    dateSixty = str(year) + str(month) + str(day) + str(hour) + "0000"
+datTime1 = time.mktime(time.strptime(str(dateSixty), "%Y%m%d%H%M%S"))
+print(str(dateSixty) + "==" + str(int(datTime1)))

+ 61 - 0
test2.py

@@ -0,0 +1,61 @@
+# -*- coding:utf-8 -*-
+
+__author__ = 'weijie'
+
+from EmQuantAPI import *
+import datetime
+import time
+import traceback
+import json
+from StockRestPojo import StockRestPojo
+from dbOperation import dbOperation
+
+# print("开始了")
+# datTime = datetime.datetime.strptime("2020-1-23", "%Y-%m-%d")
+# print(datTime)
+
+date = "20201023"
+time1 = "155959"
+
+datTime = time.mktime(time.strptime(date + time1, "%Y%m%d%H%M%S"))
+print(date + time1 +"=="+ str(datTime))
+
+hour = time.localtime(datTime).tm_hour #获取小时
+min_ = time.localtime(datTime).tm_min # 获取分钟
+sec_ = time.localtime(datTime).tm_sec # 获取秒数
+
+
+# 1分钟数据
+if sec_ != 0:
+    tempDatTime = datTime + 60 - sec_
+    print(tempDatTime)
+else:
+    print(datTime)
+
+# 5分钟数据
+if sec_ != 0 ^ min_%5 != 0:
+    tempDatTime = datTime + (5 * 60) - sec_ - (min_%5 * 60)
+    print(tempDatTime)
+else:
+    print(datTime)
+
+# 15分钟数据
+if sec_ != 0 ^ min_%15 != 0:
+    tempDatTime = datTime + (15 * 60) - sec_ - (min_%15 * 60)
+    print(tempDatTime)
+else:
+    print(datTime)
+
+# 30分钟数据
+if sec_ != 0 ^ min_%30 != 0:
+    tempDatTime = datTime + (30 * 60) - sec_ - (min_%30 * 60)
+    print(tempDatTime)
+else:
+    print(datTime)
+
+# 60分钟数据
+if sec_ != 0 ^ min_%60 != 0:
+    tempDatTime = datTime + (60 * 60) - sec_ - (min_%60 * 60)
+    print(tempDatTime)
+else:
+    print(datTime)