123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- # -*- 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()
- # 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])
- #退出
- data = logoutResult = c.stop()
- except Exception as ee:
- print("error >>>",ee)
- traceback.print_exc()
- else:
- print("demo end")
|