資源簡介
演示wsq實時行情訂閱的使用,訂閱模式主要有兩部分組成,一部分是用wsq函數訂閱所需要的行情,
另一部分是編寫自己的回調函數,用于處理實時推送過來的行情數據

代碼片段和文件信息
#?coding:?UTF-8
#?說明:
#?該案例是演示wsq實時行情訂閱的使用,訂閱模式主要有兩部分組成,一部分是用wsq函數訂閱所需要的行情,
#?另一部分是編寫自己的回調函數,用于處理實時推送過來的行情數據
#?myCallback(indata)?即為本案例所使用的回調函數,回調函數有且只能有一個參數:indata
#?indata的數據結構如下:
#?indata.ErrorCode?錯誤碼,如果為0表示運行正常
#?indata.StateCode?狀態字段,使用時無需處理
#?indata.RequestID?存放對應wsq請求的RequestID
#?indata.Codes?存放行情對應的code
#?indata.Fields?存放行情數據對應的指標
#?indata.Times?存放本地時間,注意這個不是行情對應的時間,要獲取行情對應的時間,請訂閱rt_time指標
#?indata.Data?存放行情數據
#?取消訂閱可使用w.cancelRequest(requestID)如果想取消全部訂閱,可使用w.cancelRequest(0)
#例如:
#?indata.ErrorCode=0
#?indata.StateCode=1
#?indata.RequestID=3
#?indata.Codes=[IF.CFE]
#?indata.Fields=[RT_LAST]
#?indata.Times=[20151123?15:12:40]
#?indata.Data=[[3623.0]]
from?WindPy?import?*
w.start();
#open?a?file?to?write.
pf?=?open(‘c:\\pywsqdataif.data‘?‘w‘)
#define?the?callback?function
#用于處理行情的回調函數
def?myCallback(indata):
????print?indata
????if?indata.ErrorCode!=0:
????????print(‘error?code:‘+str(indata.ErrorCode)+‘\n‘);
????????return();
????global?begintime
????lastvalue?=““;
????for?k?in?range(0len(indata.Fields)):
?????????if(indata.Fields[k]?==?“RT_TIME“):
????????????begintime?=?indata.Data[k][0];
?????????if(indata.Fields[k]?==?“RT_LAST“):
????????????lastvalue?=?str(indata.Data[k][0]);
????string?=?str(begintime)?+?“?“?+?lastvalue?+“\n“;
????pf.writelines(string)
????print(string);
????pf.flush();
????#想要結束訂閱,可使用w.cancelRequest(0)命令,然后后調用pf.close()關閉文件
????#pf.close();
#訂閱行情
w.wsq(“IF.CFE““rt_timert_last“func=myCallback)
while(1):
????info=“這個while循環主要是防止IDE在運行或者debug時,運行w.wsq()語句后就退出,從而導致行情推送過來后,回調函數無法運行!“;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2237??2015-11-23?17:32??Python?WSQ行情訂閱演示案例\wsqsave.py
?????文件????????937??2015-11-23?17:33??Python?WSQ行情訂閱演示案例\程序說明.txt
?????目錄??????????0??2015-11-23?17:30??Python?WSQ行情訂閱演示案例
-----------?---------??----------?-----??----
?????????????????3174????????????????????3
評論
共有 條評論