admin
2025-06-04 287c506725b2d970f721f80169f83c2418cb0991
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
120
121
122
123
124
125
126
127
128
129
B
²×dJJã@sØddlZddlZddlZddlZddlZddlZddlZddlZddlm    Z    m
Z
ddl m Z ddl mZmZmZmZmZmZddlmZmZGdd„dejƒZGdd    „d    ejeƒZGd
d „d ejƒZd d „ZedkrÔdS)éN)Ú
mysql_dataÚ redis_manager)Ú
RedisUtils)Ú socket_utilÚhosting_api_utilÚhuaxin_trade_record_managerÚ huaxin_utilÚtoolÚglobal_data_cache_util)ÚHistoryKDatasUtilsÚ    JueJinApic@seZdZdd„ZdS)Ú MyTCPServercCstjj|||dddS)NT)Zbind_and_activate)Ú socketserverÚ    TCPServerÚ__init__)ÚselfZserver_addressZRequestHandlerClass©rú5D:\workspace\GP\gp_middle_server\middle_api_server.pyrszMyTCPServer.__init__N)Ú__name__Ú
__module__Ú __qualname__rrrrrr sr c@s eZdZdS)ÚMyThreadingTCPServerN)rrrrrrrrsrcsTeZdZdZdd„Zedd„ƒZdd„Z‡fdd    „Zed
d „ƒZ    ‡fd d „Z
‡Z S)ÚMyBaseRequestHandleFcCs | ¡dS)N)Ú_MyBaseRequestHandle__init)rrrrÚsetupszMyBaseRequestHandle.setupcCs|jr
dSd|_i|_dS)NT)Ú_MyBaseRequestHandle__initedZ%_MyBaseRequestHandle__req_socket_dict)ÚclsrrrZ__initszMyBaseRequestHandle.__initcCs|g}|d}| d¡x$|D]}| |›d||›¡qW| ¡d |¡d}t |jdd¡ ¡}||krxtdƒ‚dS)NÚsignú=ú&z
JiaBei@!*.zutf-8)Úencodingu 签名出错)    ÚpopÚappendÚsortÚjoinÚhashlibÚmd5ÚencodeZ    hexdigestÚ    Exception)rÚ    data_jsonZlist_strrÚkZ_MyBaseRequestHandle__strr&rrrZ__is_sign_right&s
 
z#MyBaseRequestHandle.__is_sign_rightc" sÊ|jd}tƒ ¡|j}x¨d}z‚y6t |¡\}}|rZ|}t |¡}|d}t|ƒt    krp| 
|||¡}Pt  |¡}    |dkrŽ|    st dƒ‚|d}
|
d} |
d} |
d    } y°| s¾t d
ƒ‚| sÊt d ƒ‚t t| ƒd ƒdkrt | g¡}|söt d ƒ‚|dd} t tj| | t t| ƒd ƒ¡}|r\|}td|ƒ|ddkrPt ddi¡}n t |dƒ‚PWn(t k
rˆ}z|‚Wdd}~XYnXnÌ|dkr4|    s¦t dƒ‚|d}
|
d} |
 d¡}|
 d¡}| rt tj| |d¡}tdƒt|ƒ|ddkrt ddi¡}n t |dƒ‚nt dddœ¡}Pn&|dkrø|    sLt dƒ‚|d}
|
d} |
d} |
d    } |
d}| s¤t | g¡}|s”t d ƒ‚|ddd} t tj| | | ¡}|ddkrÖt dddœ¡}n t |dƒ‚tdƒt|ƒPnb|dkr‚|dd}|dd}d\}}|rLtj t d ¡dtjtj g¡\}}ntj t d ¡|¡\}}t d||d!œdd"œ¡}PnØ|d#kr¸tj! t d ¡¡}t dd$|idd"œ¡}n¢|d%kròtj" t d ¡¡\}}t dd$|idd"œ¡}nh|d&krtj# $¡}t d|dd"œ¡}n>|d'krR|dd}t %|¡t didd"œ¡}n|d(kr‚t&j'}t dt(|ƒ|d)œdd"œ¡}nØ|d*kr¸|dd} t )| ¡t didd"œ¡}n¢|d+kràt *¡t didd"œ¡}nz|d,krg}i}t d|dd"œ¡}nR|d-krvy(t+ ,t ¡¡}|r8t dddœ¡}Wn8t k
rr}zt dt-|ƒdœ¡}Wdd}~XYnXnä|d.kr”t .¡}t |¡}nÆ|d/krZt/ 0d0¡ 1¡}z¢t2 2¡}g} x,t3dd1ƒD]}!t4j5|d2d3|!›d4d5qÆW|  6t2 2¡|¡t2 2¡}x$t3dd6ƒD]}!t4j7|d2d4d5qW|  6t2 2¡|¡t d| dd"œ¡}Wd| 8¡XPWnDt k
r¢}z$t9 :|¡t d7t-|ƒdœ¡}PWdd}~XYnXWd| ;t <|j=d8d9¡¡XqWdS):NrÚÚtypeZbuyu 签名错误ÚdataÚcodeÚvolumeÚpriceu 请上传codeu请上传volumeéu现价获取失败éu下单结果:ÚmsgZ cancel_orderÚ
orderSysIDÚ    accountIdTu---撤单结果----u请上传代码)r.r3ZsellZforceg{®Gáz¤?u---卖出结果----Z delegate_listÚ update_timeÚ
can_cancel)NNz%Y%m%d)ÚlistZ
updateTime)r.r-r3Z    deal_listr8Z position_listZ
money_listZsync_trade_dataZget_huaxin_subscript_codes)Úcountr8Úexport_l2_dataÚ everyday_initZhuaxin_channel_stateZjuejin_is_validÚ get_env_infoZ
test_rediséédZtest_setz000000:F)Z    auto_freeéi‘zutf-8)r )>Zclient_addressÚsuperÚhandleZrequestrZ    recv_dataÚjsonÚloadsr,ÚintÚprocess_num_typeZis_client_params_sign_rightr(ÚroundÚfloatr Z get_now_pricerZ trade_orderZTRADE_DIRECTION_BUYÚprintÚdumpsÚgetZtrade_cancel_orderZTRADE_DIRECTION_SELLrZDelegateRecordManagerZ list_by_dayr    Zget_now_date_strrZTORA_TSTP_OST_AcceptedZTORA_TSTP_OST_PartTradedZDealRecordManagerZPositionManagerZ MoneyManagerÚget_dataZrefresh_trade_datar
Zhuaxin_subscript_codesÚlenr:r;r Zget_previous_trading_dateÚstrr<rZ RedisManagerZgetRedisNoPoolÚtimeÚrangerZsaddr"ZsmembersÚcloseÚloggingZ    exceptionZsendallZ load_headerr')"rZhostÚskÚ
return_strr-ÚheaderZdata_strr)Ztype_Z is_sign_rightZ
codes_datar.r/r0ZpricesÚresultZ
resultJSONÚer4r5Z
force_sellr6r7ZresultsZ
money_dataZ    sync_typeZfresultsÚtypesZfdataZdateZredisZ _start_timeÚtimesÚi)Ú    __class__rrrA2sH
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
$
 
 
 
zMyBaseRequestHandle.handlec
CsNd}y
|dkrTt |¡}|dd}x|D]}t |tj¡q,Wt ddi¡}nº|dkr t |¡}|dd}x|D]}t |tj¡qxWt ddi¡}nn|dkrÂt tj¡}t |¡}nL|d    krNt |¡}|dd}y.x|D]}t |tj¡qêWt ddi¡}Wn8t    k
rH}    zt d
t
|    ƒd œ¡}Wdd}    ~    XYnXnÀ|d kržt |¡}|dd}x|D]}t |tj¡qtWt ddi¡}np|d krÂt tj¡}t |¡}nL|dkrt |¡}|dd}x|D]}t |tj ¡qèWt ddi¡}nü|dkrbt |¡}|dd}x|D]}t |tj ¡q8Wt ddi¡}n¬|dkr†t tj ¡}t |¡}nˆ|dkrÖt |¡}|dd}x|D]}t |tj ¡q¬Wt ddi¡}n8|dkr&t |¡}|dd}x|D]}t |tj ¡qüWt ddi¡}nè|dkrJt tj ¡}t |¡}nÄ|dkrÆt |¡}|dd}|d}t  |¡}|dd}
|
tjkr²|
tjkr²t ddd œ¡}nt d
dd œ¡}nH|dkrþt |¡}|dd}t |¡}t |¡}n|dkrVt |¡}|dd} | r0t d¡n
t d¡t d| rJdndd œ¡}n¸|dkrtt ¡}t |¡}nš|d kròt |¡}|dd!} y"t | ¡t dd!| id"œ¡}Wn8t    k
rî}    zt d
t
|    ƒd œ¡}Wdd}    ~    XYnXn|d#krt ¡}t |¡}Wn8t    k
rH}    zt d
t
|    ƒd œ¡}Wdd}    ~    XYnX|S)$Nr+éÉr-Úcodesr.réËi-éÊr2)r.r3éÌi.i‘i’i“i›iœii¤Ústateu 可以取消u不可以取消i®iõÚopenTFu 开启成功u 关闭成功iöi÷Úmode)r.r-iø)rBrCrZ add_code_listZCODE_LIST_BLACKrIZremove_code_listZ get_code_listZCODE_LIST_WHITEr(rMZCODE_LIST_WANTZCODE_LIST_PAUSE_BUYZget_code_trade_stateÚ trade_managerZTRADE_STATE_BUY_CANCEL_SUCCESSZTRADE_STATE_BUY_SUCCESSZget_code_attributeZset_trade_stateZget_trade_stateZset_trade_modeZget_trade_mode) rrRr,Ú_strrSr-r\r.rUrVr`Zis_openrbrrrrEûsÎ
 
 
 
 
 
 
*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
(
&z$MyBaseRequestHandle.process_num_typecstƒ ¡dS)N)r@Úfinish)r)rZrrre‡szMyBaseRequestHandle.finish) rrrrrÚ classmethodrZ#_MyBaseRequestHandle__is_sign_rightrArEreÚ __classcell__rr)rZrrs  J  rcCs"tdƒd}t|tƒ}| ¡dS)Nzcreate middle_api_server)z0.0.0.0i')rHrrZ serve_forever)ZladdrZ    tcpserverrrrÚrun‹s
rhÚ__main__)r%rBrQZsocketrÚ    threadingrNrcZdbrrZdb.redis_managerrZutilsrrrrr    r
Zutils.history_k_data_utilr r rr ZThreadingMixInrZBaseRequestHandlerrrhrrrrrÚ<module>s&  t