admin
5 天以前 1dea3d72da9d3d2d55f2e41b611913b0901d8074
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
B
sN‡gºã@sºddlZddlZddlZddlZddlZddlmZddlm    Z
ddl m Z ddl mZmZddlmZmZmZmZddlmZmZGdd„deƒZGd    d
„d
ejejjƒZdd d„ZdS)éN)ÚBaseHTTPRequestHandler)Ú
data_cache)Úhuaxin_trade_apiÚhuaxin_trade_data_update)ÚDelegateRecordManagerÚDealRecordManagerÚ MoneyManagerÚPositionManager)ÚtoolÚ huaxin_utilc@sJeZdZejjddZdd„Zdd„Zdd„Z    d    d
„Z
d d „Z d d„Z dS)Ú
DataServeré
)Z max_workerscGsdS)N©)ÚselfÚformatÚargsrrõ-D:\量化低吸\low_suction_hx\data_server.pyÚ log_messageszDataServer.log_messagecCs dd„}|j}t |¡}||ƒ}d}|jdkrJt ¡}t d|dœ¡}n¤|jdkrpt ¡}t d|dœ¡}n~|jdkržt     t
  d    ¡¡}t d|dœ¡}nP|jd
kr|  d ¡}g}    |dkrî|rÚt jt jt jt jg}    nt jt jt jt jg}    tj    t
  d    ¡d|    d }t d|dœ¡}nØ|jd krŽ|  d¡}
|
dkr@t ¡n<|
dkrVt d¡n&|
dkrjt ¡n|
dkr|t ¡t didœ¡}n`|jdkrî|  d¡} t | ¡} g} x*| D]"}tj  |¡}|r¸|  |¡q¸Wt d| dœ¡}|  d¡| !dd¡| "¡|j# $| %¡¡dS)NcSstdd„t |j¡ ¡DƒƒS)NcSsg|]\}}||df‘qS)rr)Ú.0ÚkÚvrrrú
<listcomp>sz9DataServer.do_GET.<locals>.get_params.<locals>.<listcomp>)ÚdictÚurlparseÚparse_qsÚqueryÚitems)ÚurlrrrÚ
get_paramssz%DataServer.do_GET.<locals>.get_paramsÚz/get_position_listr)ÚcodeÚdataz
/get_moneyz/get_deal_listz%Y%m%dz/get_delegate_listÚ
can_cancel)Z orderStatusz/refresh_trade_dataÚtypeZmoneyÚdelegateu 手动刷新ZdealÚpositionz/get_market_infoÚcodeséÈz Content-typezapplication/json)&Úpathrr    Zget_position_cacheÚjsonÚdumpsrÚget_datarZ list_by_dayr
Úget_now_date_strÚgetr ZTORA_TSTP_OST_CachedZTORA_TSTP_OST_UnknownZTORA_TSTP_OST_AcceptedZTORA_TSTP_OST_PartTradedZTORA_TSTP_OST_AllTradedZTORA_TSTP_OST_PartTradeCanceledZTORA_TSTP_OST_AllCanceledZTORA_TSTP_OST_RejectedrrZadd_money_listZadd_delegate_listZ add_deal_listZadd_position_listÚloadsrÚlatest_code_market_info_dictÚappendÚ send_responseÚ send_headerÚ end_headersÚwfileÚwriteÚencode)rrr(rÚ params_dictÚ response_dataÚresultsÚresultr"Z order_statusZ_typeZ    codes_strr&Úfdatasr r!rrrÚdo_GETsb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 zDataServer.do_GETcCs„g}x2| ¡D]&\}}|dkr q| |›d|›¡qW| ¡d |¡d}t ¡}| | d¡¡| ¡}||     d¡kr€dSdS)NÚsignú=ú&z!@#lowSU*^cTion8888zutf-8TF)
rr0ÚsortÚjoinÚhashlibÚmd5Úupdater6Ú    hexdigestr-)rÚparamsZpsrrZ
source_strZmd5_hashZ md5_hexdigestrrrZ__is_sign_rightWszDataServer.__is_sign_rightc
Csºd}z¢yb|j}t |¡}|jdkrh| ¡}t|ƒtkrLt t |¡¡n
t |¡t ddi¡}n|jdkrè| ¡}|     |¡s˜t dddœ¡}dSt
d    |ƒ|  d¡}|  d
¡}t |  d ¡d ƒ}t  d |||¡}    t d|    dœ¡}n‚|jdkrj| ¡}|     |¡st dddœ¡}dSt
d|ƒ|  d¡}|  d
¡}t |  d ¡d ƒ}t  d |||¡}    t d|    dœ¡}Wn8tk
r¤}
zt d t|
ƒdœ¡}Wdd}
~
XYnXWd| |¡XdS)Nrz/trade_callbackr rz/buyiéu 签名错误)r Úmsgu买入ÚvolumeÚpriceéé)r r!z/sellu卖出)r(rÚ_DataServer__parse_requestr#ÚstrrZadd_trade_callback_datar)r*Ú_DataServer__is_sign_rightÚprintr-ÚroundÚorderÚ    ExceptionÚ_DataServer__send_response) rÚ
result_strr(rÚbodyrFr rHrIr:ÚerrrÚdo_POSThsF
 
 
 
 
 
 
 
 
 
 
*zDataServer.do_POSTcCs2| d¡| dd¡| ¡|j | ¡¡dS)Nr'z Content-typezapplication/json)r1r2r3r4r5r6)rr!rrrZ__send_response”s
 zDataServer.__send_responsecCsDi}|j t|jdƒ¡}t|dd}yt |¡}|S|SdS)Nzcontent-lengthÚgbk)Úencoding)ZrfileÚreadÚintÚheadersrMr)r.)rrFÚdatasÚ_strrrrZ__parse_request›s 
zDataServer.__parse_requestN) Ú__name__Ú
__module__Ú __qualname__Ú
concurrentÚfuturesÚThreadPoolExecutorZ%_DataServer__data_process_thread_poolrr<rNrWrSrLrrrrr sA,r c@s eZdZdS)ÚThreadedHTTPServerN)r_r`rarrrrre§sreú0.0.0.0éQ2c
CsVt}y*t||f|ƒ}td||fƒ| ¡Wn"tk
rP}zWdd}~XYnXdS)Nz HTTP server is at: http://%s:%d/)r rerOÚ serve_foreverrR)ÚaddrÚportÚhandlerZhttpdrVrrrÚrun«s rl)rfrg)Úconcurrent.futuresrbrBÚhttpr)Ú socketserverZ http.serverrÚ urllib.parseÚparserÚstrategyrÚtraderrZ!trade.huaxin_trade_record_managerrrrr    Úutilsr
r r ZThreadingMixInÚserverZ
HTTPServerrerlrrrrÚ<module>s