admin
2025-01-15 f84dcf456dbfa318f490d6cf878be5d5d5262718
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
B
r«„g 0ã@s´ddlZddlZddlZddlZddlZddlZddlmZddlm    Z    da
ddl m Z dd„Z Gdd    „d    ej ƒZejejd
œd d „Zejejd
œd d„Zdd„Zedkr°eƒdS)éN)Ú logger_system)Útooli †)ÚdatetimecCs tdatS)Né)Úg_seqnum©rrõ=D:\量化低吸\low_suction_hx\huaxin_client\l1_api_client.pyÚ
new_seqnumsr    c@s€eZdZiZiZdd„Zdd„Zddd„Zd    d
„Zdd d „Z    d d„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS) Ú    sampleSpicCstj |¡||_dS)N)ÚqcvalueaddproapiÚCQCValueAddProSpiÚ__init__Úm_api)ÚselfZt_tapirrrr s zsampleSpi.__init__cCstƒS)N)r    )rrrrZ__create_request_idszsampleSpi.__create_request_idréÈc
 
Cs¦ytt ¡}||_||_||_||_tj|_| ¡}|j     
||¡}x0t ddƒD]"}||j krd|j |St  d¡qLWWn,tk
r }    zt |    ¡Wdd}    ~    XYnXgS)uÙ
        æŸ¥è¯¢äº¤æ˜“日历
        @param start_date: æ ¼å¼ï¼š20241201
        @param end_date: æ ¼å¼ï¼š20241201
        @param page_locate:
        @param page_count:
        @return: è¿”回日期[顺序]
        riègü©ñÒMb`?N)r ZCQCVDReqQryShareCalendarFieldÚBegDateÚEndDateÚ    PageCountÚ
PageLocateZQCVD_ORDST_ASCÚ    OrderTypeÚ_sampleSpi__create_request_idrZReqReqQryShareCalendarÚrangeÚ_sampleSpi__result_cacheÚtimeÚsleepÚ    ExceptionÚloggingÚ    exception)
rÚ
start_dateÚend_dateÚ page_locateÚ
page_countÚ
queryFieldÚ
request_idÚresultsÚiÚerrrZ__query_trade_calendar!s     
 
z sampleSpi.__query_trade_calendarc
Cs¢g}yld}xTtdƒD]H}|j| dd¡| dd¡|d}|rF| |¡t|ƒdkrTP|d7}qWtdt|ƒƒWn,tk
rœ}zt |¡Wdd}~XYnX|S)    u5
        æŸ¥è¯¢äº¤æ˜“日历
        @return:
        réú-Ú)r rzqueryTradeCalendar:N)    rÚ _sampleSpi__query_trade_calendarÚreplaceÚextendÚlenÚprintrrr)rrrÚfresultsr r%r$r&rrrÚqueryTradeCalendar;s
  zsampleSpi.queryTradeCalendarc
Csªt ¡}| dd¡|_| dd¡|_t |¡r8tj|_ntj    |_||_
||_ ||_ tj |_| ¡}|j ||¡}x4tddƒD]&}    ||jkr˜|j|}|St d¡q|WgS)Nr(r)riègü©ñÒMb`?)r Z!CQCVDReqQryStockDayQuotationFieldr+rrrÚ
is_sh_codeZ QCVD_EXD_SSEZ
ExchangeIDZ QCVD_EXD_SZSEÚ
SecurityIDrrZQCVD_ORDST_DESCrrrZReqReqQryStockDayQuotationrrrr)
rÚcodeÚ
begin_daterr r!r"r#r$r%rrrZ __query_barsPs$
 
 
 
zsampleSpi.__query_barsc CsȐy’d}g}xFtdƒD]:}| ||||¡}|r8| |¡t|ƒdkrHPq|d7}qWd}xÌtdt|ƒƒD]º}||}    |s€|    d}||    dkrht|    d|    d|dƒ|    d<t|    d|    d    |dƒ|    d    <t|    d|    d
|dƒ|    d
<t|    d|    d |dƒ|    d <t|    d|    d |dƒ|    d <qhWg}
xX|D]P} |
 | d | d    | d
| d | d | d| dt | dd¡| ddœ    ¡q0Wtdt|
ƒƒ|
St    k
rÂ} zt
  | ¡Wdd} ~ XYnXdS)uû
        èŽ·å–åŽ†å²K线(包含起止日期)
        @param code:
        @param begin_date:  ä¾‹å¦‚:2024-10-31
        @param end_date: ä¾‹å¦‚:2024-11-30
        @param page_locate: ç¬¬å‡ é¡µï¼ˆä»Žç¬¬ä¸€é¡µå¼€å§‹ï¼‰
        @return:
        rr'rNrÚ AdjustFactorÚ PreClosePriceéÚ    OpenPriceÚ    HighPriceÚLowPriceÚ
ClosePricer2ÚVolumeÚ
TradingDayz%Y%m%dÚTurnover)    Zsec_idÚopenÚhighÚlowÚcloseÚvolumeÚ    pre_closeZbobÚamountzReqReqQryStockDayQuotation:) rÚ_sampleSpi__query_barsr,r-ÚroundÚappendrÚstrptimer.rrr) rr3r4rr Z final_resultsr%r$Zstart_adjust_factorÚdr/Úrr&rrrÚ    queryBarsisH    
   "
 
zsampleSpi.queryBarscCs8tdƒt ¡}t|_tj|_t|_|j     
|t ƒ¡dS)NÚOnFrontConnected) r.r ZCQCVDReqUserLoginFieldÚg_useridÚ LogInAccountZQCVD_AM_PasswordZAuthModeÚg_passwdZPasswordrZ ReqUserLoginr    )rZ
loginfieldrrrrM s zsampleSpi.OnFrontConnectedcCstd|ƒdS)NzOnFrontDisconnected Reason[%d])r.)rZnReasonrrrÚOnFrontDisconnected©szsampleSpi.OnFrontDisconnectedcCs2td|j||j|jfƒ|jdkr.t d¡dS)NzGOnRspUserLogin LogInAccount[%s] RequestID[%d] ErrorID[%d] ErrorMsg[%s] ru!华鑫增值服务API登录成功)r.rOZErrorIDZErrorMsgrÚinfo)rZpRspUserLoginFieldÚpRspInfoÚ
nRequestIDZbIsLastrrrÚOnRspUserLogin®s 
zsampleSpi.OnRspUserLogincCst ¡}|j |tƒ¡dS)N)r ZCQCVDQryGGTEODPricesFieldrÚReqQryGGTEODPricesr    )rÚQryFieldrrrrV¼szsampleSpi.ReqQryGGTEODPricescCst ¡}|j |tƒ¡dS)N)r ZCQCVDQryInvestorFieldrÚReqQryInvestorr    )rrWrrrrXÀszsampleSpi.ReqQryInvestorcCs\||jkrg|j|<|r,|j| |j¡n,|j||j|<|j |¡td|j|ƒdS)uÁ
        äº¤æ˜“日历响应
        @param pShareCalendar:
        @param pRspInfo:
        @param nRequestID:
        @param bIsPageLast:
        @param bIsTotalLast:
        @return:
        zOnRspInquiryShareCalendar:N)Ú_sampleSpi__temp_cacherHr=rÚpopr.)rZpShareCalendarrSrTÚ bIsPageLastÚ bIsTotalLastrrrÚOnRspInquiryShareCalendarÄs
 
 
 z#sampleSpi.OnRspInquiryShareCalendarcCs˜||jkrg|j|<|sd|j| |j|j|j|j|j|j|j|j    t
|j dƒt
|j dƒdœ
¡n0|j||j |<|j |¡tdt|j |ƒƒdS)uµ
       æ—¥K响应
       @param pStockDayQuotation:
       @param pRspInfo:
       @param nRequestID:
       @param bIsPageLast:
       @param bIsTotalLast:
       @return:
       édiè)
r2r=r5r6r8r9r:r;r<r>zOnRspInquiryStockDayQuotation:N)rYrHr2r=r5r6r8r9r:r;Úintr<r>rrZr.r-)rZpStockDayQuotationrSrTr[r\rrrÚOnRspInquiryStockDayQuotationØs
 
 
 
 z'sampleSpi.OnRspInquiryStockDayQuotationN)rr)rr)Ú__name__Ú
__module__Ú __qualname__rrYr rr*r0rFrLrMrQrUrVrXr]r`rrrrr
s
 
7    r
)Ú request_queueÚresponse_queuec
sȇfdd„}x¶yŽ| ¡}|d}|d}| d¡}|dkrb|d}|d}t ||¡}    |||    ƒn8|d    krš|d}|d}|d
}
t |
||¡}    |||    ƒWqtk
r¾} zWdd} ~ XYqXqWdS) Ncsˆ ||dœ¡dS)N)r#Údata)Ú
put_nowait)r#Ú response_data)rerrÚ__set_response_dataøsz+__read_request.<locals>.__set_response_dataÚtyper#rfÚget_trade_calendarrrÚget_history_k_barsr3)ÚgetÚthespir0rLr) rdreriÚvalÚtype_r#rfrrr$r3r&r)rerÚ__read_requestös( 
  rqcCsxdadadadat ¡s dadatdt ¡ƒt     ¡}t
|ƒa |  t ¡|  tt¡tjt||fdd     ¡| ¡d
S) ul
    è¿è¡Œ
    @param request_queue: è¯·æ±‚队列
    @param response_queue: å“åº”队列
    @return:
    z 101.230.90.99iÔcZ 388000013942Z110808z 192.168.84.61iÕczGetApiVersion():T)ÚtargetÚargsÚdaemonN)Z    g_addressZg_portrNrPÚconstantÚ
is_windowsr.r ZCQCValueAddProApi_GetApiVersionZ"CQCValueAddProApi_CreateInfoQryApir
rnZ RegisterSpiZ RegisterFrontÚ    threadingÚThreadrqÚstartZRun)rdreZtheapirrrÚruns    
 rzcCs t ¡t ¡}}t||ƒdS)N)ÚmultiprocessingÚQueuerz)rdrerrrÚmain4sr}Ú__main__)rr{rwrrur Úlog_module.logrÚutilsrrrr    r r
r|rqrzr}rarrrrÚ<module>s"   a"