admin
2023-08-04 ca310f014336d93eba73ed5010c1c5645424a1e0
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
B
Èd¦d+°ã@sddlZddlZddlZddlZddlZddlZddlZddlZddlm    Z    ddl
m Z dZ dZ dZdZdZdZdZdZd    Zd
Zd Zd Zd ZGdd„dƒZGdd„dejƒZiaGdd„dejƒZdd„Zdd„Z ej!ej"Z#Z$ddd„Z%e&dkre%ƒe'ƒdS)éN)ÚSendResponseSkManager)ÚloggerZ 388000013349Z110808Z0003Z
A641420991Z
0345104949éééééc@speZdZdZeƒZeƒZeƒZeƒZdd„Z    dd„Z
dd„Z dd    „Z d
d „Z d d „Zdd„Zdd„Zdd„ZdS)ÚTradeSimpleApircCsü||jkrtd|›ƒ‚|j |¡|jd7_t ¡}| d¡dkrXtj|_t    |_
n| d¡dkrttj |_t |_
||_ tj|_||_||_||_tj|_tj|_tj|_t ||j¡}|dkrÎtd|ƒ‚tdk    røt t d||dœd    œ¡ d
¡¡dS) Nu下单请求已经提交:rÚ00rÚ60zReqOrderInsert fail, ret[%d]Ú listen_volume)ÚcodeÚvolume)ÚtypeÚdatazutf-8) Ú_TradeSimpleApi__buy_sinfo_setÚ    ExceptionÚaddÚreq_idÚ    traderapiÚCTORATstpInputOrderFieldÚfindÚTORA_TSTP_EXD_SZSEÚ
ExchangeIDÚSZSE_ShareHolderIDÚ ShareholderIDÚTORA_TSTP_EXD_SSEÚSSE_ShareHolderIDÚ
SecurityIDZTORA_TSTP_D_BuyÚ    DirectionÚVolumeTotalOriginalÚSInfoÚ
LimitPriceÚTORA_TSTP_OPT_LimitPriceÚOrderPriceTypeÚTORA_TSTP_TC_GFDÚ TimeConditionÚTORA_TSTP_VC_AVÚVolumeConditionÚapiÚReqOrderInsertÚl2pipeÚsendÚjsonÚdumpsÚencode)Úselfr ÚcountÚpriceÚsinfoÚ    req_fieldÚret©r6ú,D:\workspace\GP\trade_huaxin\trade_client.pyÚbuyKs2
  "zTradeSimpleApi.buycCs¢||jkrtd|›ƒ‚|j |¡|jd7_t ¡}| d¡dkrRtj|_n| d¡dkrhtj    |_tj
|_ ||_ ||_ t ||j¡}|dkržtd|ƒ‚dS)Nu撤单请求已经提交:rr
rr zReqOrderAction fail, ret[%d])Ú%_TradeSimpleApi__cancel_buy_sinfo_setrrrrÚCTORATstpInputOrderActionFieldrrrrÚTORA_TSTP_AF_DeleteÚ
ActionFlagÚ
OrderSysIDr!r)ÚReqOrderAction)r0r Ú order_sys_idr3r4r5r6r6r7Ú
cancel_buyŠs 
 
 zTradeSimpleApi.cancel_buycCsR||jkrtd|›ƒ‚|j |¡|jd7_t ¡}| d¡dkrXtj|_t    |_
n| d¡dkrttj |_t |_
||_ tj|_||_||_td||ƒ|r¬|dkr¬||_|dkr¾tj|_n\|dkrÐtj|_nJ|dkrâtj|_n8|d    krôtj|_n&|d
krtj|_n|d krtj|_tj|_tj|_t  ||j¡}|dkrNtd |ƒ‚dS) Nu下单请求已经提交:rr
rr u    å– pricerrrrézReqOrderInsert fail, ret[%d])!Ú_TradeSimpleApi__sell_sinfo_setrrrrrrrrrrrrrZTORA_TSTP_D_Sellrr r!Úprintr"ZTORA_TSTP_OPT_AnyPricer$r#ZTORA_TSTP_OPT_BestPriceZTORA_TSTP_OPT_FixPriceZTORA_TSTP_OPT_FiveLevelPriceZTORA_TSTP_OPT_HomeBestPricer%r&r'r(r)r*)r0r r1r2Ú
price_typer3r4r5r6r6r7Úsell²sH
       
 
 
 
 
 
 
 
 zTradeSimpleApi.sellcCs¢||jkrtd|›ƒ‚|j |¡|jd7_t ¡}| d¡dkrRtj|_n| d¡dkrhtj    |_tj
|_ ||_ ||_ t ||j¡}|dkržtd|ƒ‚dS)Nu撤单请求已经提交:rr
rr zReqOrderAction fail, ret[%d])Ú&_TradeSimpleApi__cancel_sell_sinfo_setrrrrr:rrrrr;r<r=r!r)r>)r0r r?r3r4r5r6r6r7Ú cancel_sellýs 
 
 zTradeSimpleApi.cancel_sellcCsJ|jd7_|j}t ¡}|r&d|_t ||¡}|dkrFtd|ƒ‚|S)NrrzReqQryOrder fail, ret[%d])rrZCTORATstpQryOrderFieldZIsCancelr)Z ReqQryOrderr)r0Ú    is_cancelrr4r5r6r6r7Úlist_delegate_orders%s  z#TradeSimpleApi.list_delegate_orderscCs@|jd7_|j}t ¡}t ||¡}|dkr<td|ƒ‚|S)NrrzReqQryTrade fail, ret[%d])rrZCTORATstpQryTradeFieldr)Z ReqQryTrader)r0rr4r5r6r6r7Úlist_traded_orders7s  z!TradeSimpleApi.list_traded_orderscCs@|jd7_|j}t ¡}t ||¡}|dkr<td|ƒ‚|S)NrrzReqQryPosition fail, ret[%d])rrZCTORATstpQryPositionFieldr)ZReqQryPositionr)r0rr4r5r6r6r7Úlist_positionsAs  zTradeSimpleApi.list_positionscCsH|jd7_|j}t ¡}tj|_t ||¡}|dkrDtd|ƒ‚|S)Nrrz"ReqQryTradingAccount fail, ret[%d])rrZCTORATstpQryTradingAccountFieldZTORA_TSTP_CID_CNYÚ
CurrencyIDr)ZReqQryTradingAccountr)r0rr4r5r6r6r7Úget_money_accountKs  z TradeSimpleApi.get_money_accountcCs\t ¡}t|_tj|_t|_d|_d|_t    j
d7_
t   |t    j
¡}|dkrXt d|ƒ‚dS)NÚjiabeizePC;IIP=123.112.154.118;IPORT=50361;LIP=192.168.118.107;MAC=54EE750B1713FCF8AE5CBD58;HD=TF655AY91GHRVLrrzReqUserLogin fail, ret[%d])rÚCTORATstpReqUserLoginFieldÚUserIDÚ LogInAccountÚTORA_TSTP_LACT_UserIDÚLogInAccountTypeÚPasswordÚUserProductInfoÚ TerminalInfor    rr)Ú ReqUserLoginr)r0Ú    login_reqr5r6r6r7ÚloginUs    zTradeSimpleApi.loginN)Ú__name__Ú
__module__Ú __qualname__rÚsetrrBr9rFr8r@rErGrIrJrKrMrYr6r6r6r7r    Cs?(K(
 
 
r    c@s˜eZdZdd„Zddœdd„Zdddœd    d
„Zd d ddd œdd„Zdd dddœdd„Zdd dddœdd„Zdd dddœdd„Z    dd dddœdd„Z
d d ddd!œd"d#„Z d$d ddd%œd&d'„Z d(dd)œd*d+„Z d,dd-œd.d/„Zd0dd1œd2d3„Zd4d dd5dd6œd7d8„Zd9d dd5dd:œd;d<„Zd=d dd5dd>œd?d@„ZdAd dd5ddBœdCdD„Zd(d dd5ddEœdFdG„ZdHd dd5ddIœdJdK„Zd,dd-œdLd/„Zd,d dd5ddMœdNdO„ZdPS)QÚ    TraderSpicCs4tj |¡d|_d|_||_i|_i|_i|_dS)Nr)    rÚCTORATstpTraderSpiÚ__init__Ú_TraderSpi__front_idÚ_TraderSpi__session_idÚ_TraderSpi__data_callbackÚ _TraderSpi__temp_order_list_dictÚ#_TraderSpi__temp_position_list_dictÚ(_TraderSpi__temp_money_account_list_dict)r0Úcallbackr6r6r7r`„s zTraderSpi.__init__Zvoid)ÚreturncCs>t d¡tjd7_t tj¡}|dkr:t d|¡dS)NÚOnFrontConnectedrrz"ReqGetConnectionInfo fail, ret[%d])rÚinfor    rr)ZReqGetConnectionInfo)r0r5r6r6r7ris
 
 zTraderSpi.OnFrontConnectedÚint)ÚnReasonrhcCst d|¡dS)NzOnFrontDisconnected: [%d])rrj)r0rlr6r6r7ÚOnFrontDisconnected—szTraderSpi.OnFrontDisconnectedZCTORATstpConnectionInfoFieldÚCTORATstpRspInfoField)ÚpConnectionInfoFieldÚ pRspInfoFieldÚ
nRequestIDrhcCsÒ|jdkr¶t d|j¡t d|j¡t d|j¡t d|j¡t d|j¡t     ¡}t
|_ tj |_ t|_d|_d|_tjd    7_t |tj¡}|dkrÎt d
|¡nt d ||j|jf¡dS) Nrzinner_ip_address[%s]zinner_port[%d]zouter_ip_address[%s]zouter_port[%d]zmac_address[%s]rNzaPC;IIP=NA;IPORT=NA;LIP=192.168.84.75;MAC=5C6F69CC2B40;HD=004bc76004aff0882b9052ba0eb00506;@jiabeirzReqUserLogin fail, ret[%d]z)GetConnectionInfo fail, [%d] [%d] [%s]!!!)ÚErrorIDrrjÚInnerIPAddressZ    InnerPortÚOuterIPAddressÚ    OuterPortÚ
MacAddressrrOrPrQrRrSrTrUrVr    rr)rWÚErrorMsg)r0rorprqrXr5r6r6r7ÚOnRspGetConnectionInfošs$
    z TraderSpi.OnRspGetConnectionInfoÚCTORATstpRspUserLoginField)ÚpRspUserLoginFieldrprqrhcCsP|jdkr4t d|¡|j|_|j|_tƒ ¡nt d||j|j    f¡dS)NrzLogin success! [%d]zLogin fail!!! [%d] [%d] [%s])
rrrrjÚFrontIDraÚ    SessionIDrbr    rMrw)r0rzrprqr6r6r7ÚOnRspUserLoginÒs
 zTraderSpi.OnRspUserLoginZ CTORATstpUserPasswordUpdateField)ÚpUserPasswordUpdateFieldrprqrhcCs6|jdkrt d|¡nt d||j|jf¡dS)Nrz!OnRspUserPasswordUpdate: OK! [%d]z.OnRspUserPasswordUpdate: Error! [%d] [%d] [%s])rrrrjrw)r0r~rprqr6r6r7ÚOnRspUserPasswordUpdateïs
z!TraderSpi.OnRspUserPasswordUpdater)ÚpInputOrderFieldrprqrhcCs`|jdkr*t dtt ¡dƒ|f¡n2t d||j|jf¡| t||jd|jdœ¡dS)Nrz[%d] OnRspOrderInsert: OK! [%d]ièz'OnRspOrderInsert: Error! [%d] [%d] [%s]éÿÿÿÿ)r3Ú orderStatusZorderStatusMsg)    rrrrjÚroundÚtimerwrcÚ
TYPE_ORDERr!)r0r€rprqr6r6r7ÚOnRspOrderInsert÷s 
 zTraderSpi.OnRspOrderInsertr:)ÚpInputOrderActionFieldrprqrhc
Csr|jdkr4t d|¡| t||j|jddœ¡n:t d||j|jf¡| t||j|jd|j|jdœ¡dS)NrzOnRspOrderAction: OK! [%d]r)r3Ú
orderSysIDÚcancelz'OnRspOrderAction: Error! [%d] [%d] [%s])r3rˆr‰ZerrorIDZerrorMsg)rrrrjrcÚTYPE_CANCEL_ORDERr!r=rw)r0r‡rprqr6r6r7ÚOnRspOrderActions
   zTraderSpi.OnRspOrderActionZCTORATstpRspInquiryJZFundField)ÚpRspInquiryJZFundFieldrprqrhcCs@|jdkr$t d||j|jf¡nt d||j|jf¡dS)Nrz*OnRspInquiryJZFund: OK! [%d] [%.2f] [%.2f]z)OnRspInquiryJZFund: Error! [%d] [%d] [%s])rrrrjÚ UsefulMoneyÚ
FetchLimitrw)r0rŒrprqr6r6r7ÚOnRspInquiryJZFunds
 
zTraderSpi.OnRspInquiryJZFundZCTORATstpInputTransferFundField)ÚpInputTransferFundFieldrprqrhcCs6|jdkrt d|¡nt d||j|jf¡dS)NrzOnRspTransferFund: OK! [%d]z(OnRspTransferFund: Error! [%d] [%d] [%s])rrrrjrw)r0rrprqr6r6r7ÚOnRspTransferFunds
zTraderSpi.OnRspTransferFundZCTORATstpOrderField)Ú pOrderFieldrhc Cs|t dtt ¡dƒ|j|j|j|j|j|j    |j
|j |j f
¡|j t jkrx| td|j|j|j|j |j|j |jdœ¡dS)Nzž[%d] OnRtnOrder: SInfo[%s] InvestorID[%s] SecurityID[%s] OrderRef[%d] OrderLocalID[%s] LimitPrice[%.2f] VolumeTotalOriginal[%d] OrderSysID[%s] OrderStatus[%s]ièr)r3Z
securityIdZ orderLocalIdr‚Ú    statusMsgrˆZ    accountId)rrjrƒr„r!Ú
InvestorIDrÚOrderRefÚ OrderLocalIDr"r r=Ú OrderStatusrZTORA_TSTP_OST_Unknownrcr…Ú    StatusMsgÚ    AccountID)r0r’r6r6r7Ú
OnRtnOrder"s   zTraderSpi.OnRtnOrderZCTORATstpTradeField)Ú pTradeFieldrhc
Cs.t d|j|j|j|j|j|j|jf¡dS)NzjOnRtnTrade: TradeID[%s] InvestorID[%s] SecurityID[%s] OrderRef[%d] OrderLocalID[%s] Price[%.2f] Volume[%d])    rrjÚTradeIDr”rr•r–ÚPriceÚVolume)r0r›r6r6r7Ú
OnRtnTrade1s zTraderSpi.OnRtnTradeZCTORATstpMarketStatusField)ÚpMarketStatusFieldrhcCst d|j|jf¡dS)Nz0OnRtnMarketStatus: MarketID[%s] MarketStatus[%s])rrjÚMarketIDZ MarketStatus)r0r r6r6r7ÚOnRtnMarketStatus7s
zTraderSpi.OnRtnMarketStatusZCTORATstpSecurityFieldÚbool)ÚpSecurityFieldrprqÚbIsLastrhc CsR|dkr6t d||j|j|j|j|j|j|jf¡nt d||j    |j
f¡dS)Nrz‰OnRspQrySecurity[%d]: SecurityID[%s] SecurityName[%s] MarketID[%s] OrderUnit[%s] OpenDate[%s] UpperLimitPrice[%.2f] LowerLimitPrice[%.2f]u/查询合约结束[%d] ErrorID[%d] ErrorMsg[%s]) rrjrÚ SecurityNamer¡Z    OrderUnitZOpenDateÚUpperLimitPriceÚLowerLimitPricerrrw)r0r¤rprqr¥r6r6r7ÚOnRspQrySecurityDs zTraderSpi.OnRspQrySecurityZCTORATstpInvestorField)ÚpInvestorFieldrprqr¥rhcCsB|dkr&t d||j|j|jf¡nt d||j|jf¡dS)NrzBOnRspQryInvestor[%d]: InvestorID[%s] InvestorName[%s] Operways[%s]u2查询投资者结束[%d] ErrorID[%d] ErrorMsg[%s])rrjr”Z InvestorNameZOperwaysrrrw)r0rªrprqr¥r6r6r7ÚOnRspQryInvestorPs 
zTraderSpi.OnRspQryInvestorZ CTORATstpShareholderAccountField)ÚpShareholderAccountFieldrprqr¥rhcCsB|dkr&t d||j|j|jf¡nt d||j|jf¡dS)NrzOOnRspQryShareholderAccount[%d]: InvestorID[%s] ExchangeID[%s] ShareholderID[%s]u5查询股东账户结束[%d] ErrorID[%d] ErrorMsg[%s])rrjr”rrrrrw)r0r¬rprqr¥r6r6r7ÚOnRspQryShareholderAccountZs 
z$TraderSpi.OnRspQryShareholderAccountZCTORATstpTradingAccountField)ÚpTradingAccountFieldrprqr¥rhc
Cs²||jkrg|j|<|dkr||j| |j|j|j|jt|jdƒt|jdƒdœ¡t     
d||j|j|j|j|j|jf¡n2|j  |¡}|  t ||¡t     
d||j|jf¡dS)Nrr)Z departmentIDÚ
investorIDÚ    accountIDZ
currencyIDZ usefulMoneyZ
fetchLimitz{OnRspQryTradingAccount[%d]: DepartmentID[%s] InvestorID[%s] AccountID[%s] CurrencyID[%s] UsefulMoney[%.2f] FetchLimit[%.2f]u5查询资金账号结束[%d] ErrorID[%d] ErrorMsg[%s])rfÚappendÚ DepartmentIDr”r™rLrƒrrŽrrjÚpoprcÚTYPE_LIST_MONEYrrrw)r0r®rprqr¥Úresultsr6r6r7ÚOnRspQryTradingAccountes"
 
 
 
 
 z TraderSpi.OnRspQryTradingAccount)r’rprqr¥rhcCsâtd|ƒ||jkrg|j|<|s¦t d||j|j|j|j|j|j    |j
|j |j f
¡|j|  |j|j|j|j|j|j|j|j|j|j|j|j    |j
|j |j dœ¡n8t d||j|jf¡| t||j|¡|j |¡dS)Nu查询报单回调z¢OnRspQryOrder[%d]: SecurityID[%s] OrderLocalID[%s] Direction[%s] OrderRef[%d] OrderSysID[%s] VolumeTraded[%d] OrderStatus[%s] OrderSubmitStatus[%s], StatusMsg[%s])Ú
securityIDÚ orderLocalIDÚ    directionrˆZ
insertTimeZ
insertDateZ
acceptTimeZ
cancelTimeZ
limitPriceZturnoverrZ volumeTradedr‚ZorderSubmitStatusr“u/查询报单结束[%d] ErrorID[%d] ErrorMsg[%s])rCrdrrjrr–rr•r=Z VolumeTradedr—ZOrderSubmitStatusr˜r±Z
InsertTimeZ
InsertDateZ
AcceptTimeZ
CancelTimer"ÚTurnoverr rrrwrcÚTYPE_LIST_DELEGATEr³)r0r’rprqr¥r6r6r7Ú OnRspQryOrderzs0
 
 
 
zTraderSpi.OnRspQryOrderZCTORATstpPositionField)ÚpPositionFieldrprqr¥rhcCs°||jkrg|j|<|dkrt|j| |j|j|j|j|j|j|j|j    |j
|j |j |j |j|j|j|j|jdœ¡n8t d||j|jf¡| t||j|¡|j |¡dS)Nr)r¯Ú
tradingDayZ securityNamer·Z
historyPosZhistoryPosFrozenZ
todayBSPosZtodayBSPosFrozenZhistoryPosPriceZ totalPosCostZ prePositionZavailablePositionZcurrentPositionZ openPosCostZtodayCommissionZtodayTotalBuyAmountZtodayTotalSellAmountu/查询持仓结束[%d] ErrorID[%d] ErrorMsg[%s])rer±r”Ú
TradingDayr¦rZ
HistoryPosZHistoryPosFrozenZ
TodayBSPosZTodayBSPosFrozenZHistoryPosPriceZ TotalPosCostZ PrePositionZAvailablePositionZCurrentPositionZ OpenPosCostZTodayCommissionZTodayTotalBuyAmountZTodayTotalSellAmountrrjrrrwrcÚTYPE_LIST_POSITIONr³)r0r½rprqr¥r6r6r7ÚOnRspQryPosition—s&
 
 
zTraderSpi.OnRspQryPositioncCst d¡dS)NrŸ)rrj)r0r›r6r6r7rŸ¯s)r›rprqr¥rhcCsŠt d¡||jkrg|j|<|sf|j| |j|j|j|j|j|j    |j
|j |j |j |j|jdœ ¡n | t||j|¡|j |¡dS)Nu查询成交响应) ZtradeIDr·r¸r¹rˆr2Z    tradeTimerZ    tradeDater¾ZpbuIDr°)rrjrdr±rœrr–rr=rÚ    TradeTimeržZ    TradeDater¿ZPbuIDr™rcÚTYPE_LIST_TRADEDr³)r0r›rprqr¥r6r6r7Ú OnRspQryTrade³s
 
 
 
  zTraderSpi.OnRspQryTradeN)rZr[r\r`rirmrxr}rr†r‹rr‘ršrŸr¢r©r«r­r¶r¼rÁrÄr6r6r6r7r^ƒsH    
7              r^c@s:eZdZeƒZdd„Zdd„Zdd„Zdd„Zd    d
„Z    d S) ÚMyTradeActionCallbackc
Csltdt ¡ƒ|dkrP|d}|d}|d}|d}|d}    |dkr¶y"||ft|    <|j ||||    ¡WnHtk
r²}
z*t t    ¡ 
t   dt |
ƒdœ¡ d    ¡¡Wdd}
~
XYnXn–|d
krhy6|d } ||ft|    <|j |||| |    ¡td tƒWnTtk
rJ}
z4t |
¡t t    ¡ 
t   dt |
ƒdœ¡ d    ¡¡Wdd}
~
XYnXn|d
krh|d}|d}|d } |d}    |dkròy ||ft|    <|j || |    ¡WnJtk
rî}
z*t t¡ 
t   dt |
ƒdœ¡ d    ¡¡Wdd}
~
XYnXnv|d
krhy ||ft|    <|j || |    ¡WnJtk
rf}
z*t t¡ 
t   dt |
ƒdœ¡ d    ¡¡Wdd}
~
XYnXdS)Nu请求进程IDrr¹r rr2r3)r Úmsgzutf-8rrDrErˆ)rCÚosÚgetpidÚ req_rid_dictÚ&_MyTradeActionCallback__tradeSimpleApir8rrÚget_send_response_skr…Úsendallr-r.Ústrr/rEÚloggingÚ    exceptionr@rŠrG) r0Ú    client_idÚ
request_idÚtype_rr¹r rr2r3ÚerDrˆr6r6r7ÚOnTradeÏsV
 
0
 
 
2
 
 
0
 
zMyTradeActionCallback.OnTradec
CsVy|j ¡}||ft|<Wn6tk
rP}zt d||t|ƒ¡Wdd}~XYnXdS)NÚcommon)rÊrJrÉrrÚsend_error_responserÍ)r0rÐrÑrrÓr6r6r7Ú
OnDealLists
 
z MyTradeActionCallback.OnDealListc
CsXy|j |¡}||ft|<Wn6tk
rR}zt d||t|ƒ¡Wdd}~XYnXdS)NrÕ)rÊrIrÉrrrÖrÍ)r0rÐrÑrHrrÓr6r6r7ÚOnDelegateList s
 z$MyTradeActionCallback.OnDelegateListc
CsVy|j ¡}||ft|<Wn6tk
rP}zt d||t|ƒ¡Wdd}~XYnXdS)NrÕ)rÊrMrÉrrrÖrÍ)r0rÐrÑrrÓr6r6r7ÚOnMoneys
 
zMyTradeActionCallback.OnMoneyc
CsVy|j ¡}||ft|<Wn6tk
rP}zt d||t|ƒ¡Wdd}~XYnXdS)NrÕ)rÊrKrÉrrrÖrÍ)r0rÐrÑrrÓr6r6r7ÚOnPositionLists
 
z$MyTradeActionCallback.OnPositionListN)
rZr[r\r    rÊrÔr×rØrÙrÚr6r6r6r7rÅÌs 6rÅcCsbt d¡tj dd¡attƒat     t¡t 
d¡t 
d¡t  tj ¡t  tj ¡t ¡dS)Nu初始化交易服务器z./flowFztcp://192.168.84.31:6500ztcp://192.168.84.32:26500)rrjrZCTORATstpTraderApiZCreateTstpTraderApir)r^Útraderapi_callbackÚspiÚ RegisterSpiÚ RegisterFrontZSubscribePrivateTopicZTORA_TERT_QUICKZSubscribePublicTopicÚInitr6r6r6r7Ú__init_trade_data_server"s
 
 
 
  ràc
sî‡fdd„}tdˆ||ƒtdt ¡ƒ|}ˆtks<ˆtkrD|d}yxtdtƒtr˜|tkr˜t |¡\}}|t dd|d    œ||d
œ¡     d ¡ƒtd ƒn"|t d d|ˆdœdœ¡     d ¡ƒWn,t
k
rè}zt   |¡Wdd}~XYnXdS)Nc
syt ˆ¡ |¡Wnvtk
rP}zt ˆ¡t ˆ¡ |¡Wdd}~XYn<tk
rŠ}zt ˆ¡t ˆ¡ |¡Wdd}~XYnXdS)N)rrËrÌÚConnectionResetErrorÚdel_send_response_skÚBrokenPipeError)Zdata_strrÓ)rr6r7Ú send_responseYs
 
z)traderapi_callback.<locals>.send_responseu回调u进程IDr3rÛÚresponser)r r)rrrÐrÑzutf-8u结果发送完毕Ztrade_callback)r rr)rr) rCrÇrÈr…rŠrÉr³r-r.r/rrÎrÏ)rrrräÚkeyrÐrÑrÓr6)rr7rÛXs$
 
 
$rÛcCs6tƒ|at ¡at tttƒ¡t     ¡t
dƒdS)Nutrade_client启动成功) ràr+Úcommand_managerÚTradeCommandManagerZtradeCommandManagerÚinitÚaddrÚportrÅÚrunrC)Úpiper6r6r7rì|s rìÚ__main__)N)(r-rÎrÇÚsocketr„rçÚconstantrÚclient_networkrÚlogrrPrTr”r²r™rrr…rŠr»rÃrÀr´r    r_r^rÉÚTradeActionCallbackrÅràrÛÚ    SERVER_IPÚ SERVER_PORTrêrërìrZÚinputr6r6r6r7Ú<module>sJ  !BHV6!