Files
big-qmt/py-client/strategy/zt/__pycache__/state.cpython-311.pyc

77 lines
11 KiB
Plaintext
Raw Normal View History

2026-08-31 13:00:22 +08:00
<EFBFBD>
2026-09-07 18:18:00 +08:00
SS<53>j<EFBFBD><00><01><><00>dZddlmZddlZddlmZddlmZddlmZddl m
2026-08-31 13:00:22 +08:00
Z
2026-09-07 14:04:26 +08:00
m Z ddl m Z d \ZZZed
<EFBFBD> <0B><00>Gd <0C>d <0A><00><00><00>ZGd<0E>d<0F><00>ZdS)u9做 T 策略的持仓状态和逐笔实际成交记录。<E5BD95>)<01> annotationsN)<01> dataclass)<01>datetime)<01>Path)<02>DealItem<65> PositionItem)<01> OrderBook)<03>READY<44>SOLD<4C>DONET)<01>slotsc<01><><00>eZdZUded<dZded<dZded<d Zded
<eZded <dZ ded <dZ
ded <dZ ded<dZ ded<dZ ded<d Zded<d Zded<dZded<dZded<dZded<dS)<17>
2026-08-31 13:00:22 +08:00
TStateItem<EFBFBD>str<74>coder<00>int<6E>base_qty<74><00>float<61> base_cost<73><00>
2026-09-07 14:04:26 +08:00
trade_date<EFBFBD>phase<73>sell_qty<74>
sell_price<EFBFBD>buy_qty<74>buy_cost<73>id<69> base_order_id<69>added_order_id<69> added_num<75> added_qty<74>
added_costN)<13>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__annotations__rrrr
rrrrrrrr r!r"r#<00><00><00>4D:\work\quant\big-qmt\py-client\strategy\zt\state.pyrrs<00><00><00><00><00><00><00> <0A>I<EFBFBD>I<EFBFBD>I<EFBFBD><15>H<EFBFBD><15><15><15><15><1A>I<EFBFBD><1A><1A><1A><1A><18>J<EFBFBD><18><18><18><18><16>E<EFBFBD><16><16><16><16><15>H<EFBFBD><15><15><15><15><1B>J<EFBFBD><1B><1B><1B><1B><14>G<EFBFBD><14><14><14><14><19>H<EFBFBD><19><19><19><19><0F>B<EFBFBD>K<EFBFBD>K<EFBFBD>K<EFBFBD>K<EFBFBD><1B>M<EFBFBD><1B><1B><1B><1B><1C>N<EFBFBD><1C><1C><1C><1C><16>I<EFBFBD><16><16><16><16><16>I<EFBFBD><16><16><16><16><1B>J<EFBFBD><1B><1B><1B><1B><1B>r)rc<01>z<00>eZdZdZdd<06>Zedd
<EFBFBD><04><00>Zedd<0F><04><00>Zedd<11><04><00>Z dd<16>Z
dd<17>Z dd<18>Z dS) <20>TStatezLApply actual executions immediately, atomically with their position changes.<2E>path<74>
str | Path<74>return<72>Nonec<01>x<00>t|<01><00>|_|jj|_|<00><00><00>dS)N)r <00>_storer-<00>_load)<02>selfr-s r*<00>__init__zTState.__init__&s,<00><00><1F><04>o<EFBFBD>o<EFBFBD><04> <0B><18>K<EFBFBD>$<24><04> <09> <0C>
<EFBFBD>
<EFBFBD> <0C> <0C> <0C> <0C> r)<00>dealr<00>boolc<01><><00>|jdko|j<00>d<02><00>p$|jdko|j<00>d<04><00>S)N<>BUY)<02>zt-base-z zt-t-buy-<2D>SELLz
zt-t-sell-)<03>side<64>local_order_id<69>
startswith)r6s r*<00> _is_zt_dealzTState._is_zt_deal+sQ<00><00> <11>I<EFBFBD><15> <1E> \<5C>4<EFBFBD>#6<>#A<>#A<>B[<5B>#\<5C>#\<5C>
<EFBFBD> <11>I<EFBFBD><16> <1F> P<>D<EFBFBD>$7<>$B<>$B<><<3C>$P<>$P<>
r)<00>itemr<00>daterc<01><><00>|jtkr=|j|kr2tdc|_|_dx|_|_dx|_|_dSdS)NrrrTF)rr rr
2026-09-07 18:18:00 +08:00
rrrr)r@rAs r*<00>_resetz TState._reset3sQ<00><00> <0F>:<3A><14> <1D> <1D>$<24>/<2F>T<EFBFBD>"9<>"9<>*/<2F><12> '<27>D<EFBFBD>J<EFBFBD><04><0F>+,<2C> ,<2C>D<EFBFBD>M<EFBFBD>D<EFBFBD>L<EFBFBD>.1<EFBFBD> 1<>D<EFBFBD>O<EFBFBD>d<EFBFBD>m<EFBFBD><17>4<EFBFBD><14>ur)<00>dictc<01><><00>|<00>||d<00><00>|d|d}}t|d<00><00>dvr8|j|z}|j|jz|z|z |_||_t|_nI|j|z}|j|jz|z|z |_||_||jkrtnt|_|d|_ dS)u?实时入账与重启恢复共用同一套做 T 轮次计算。r<00>volume<6D> trade_amount<6E> offset_flag)<02>24<32>49N)
rCrrrr rrrr r)<06>clsr@r6<00>qty<74>amount<6E>totals r*<00> _apply_t_dealzTState._apply_t_deal<s<><00><00> <0C>
2026-09-07 14:04:26 +08:00
<EFBFBD>
2026-09-07 18:18:00 +08:00
<EFBFBD>4<EFBFBD><14>l<EFBFBD>+<2B>,<2C>,<2C>,<2C><1A>8<EFBFBD>n<EFBFBD>d<EFBFBD>><3E>&:<3A>V<EFBFBD><03> <0E>t<EFBFBD>M<EFBFBD>"<22> #<23> #<23>|<7C> 3<> 3<><18>M<EFBFBD>C<EFBFBD>'<27>E<EFBFBD>#<23>}<7D>t<EFBFBD><EFBFBD>><3E><16>G<>5<EFBFBD>P<>D<EFBFBD>O<EFBFBD>!<21>D<EFBFBD>M<EFBFBD><1D>D<EFBFBD>J<EFBFBD>J<EFBFBD><18>L<EFBFBD>3<EFBFBD>&<26>E<EFBFBD>!<21>\<5C>D<EFBFBD>M<EFBFBD>9<>F<EFBFBD>B<>e<EFBFBD>K<>D<EFBFBD>M<EFBFBD> <20>D<EFBFBD>L<EFBFBD>!&<26>$<24>-<2D>!7<>!7<><14><14>T<EFBFBD>D<EFBFBD>J<EFBFBD><1E>|<7C>,<2C><04><0F><0F>r)<00> positions<6E>list[PositionItem]<5D>deals<6C>list[DealItem]c <01><><00>tj<00><00><00><00><00><00><00><00>}d<01>|jD<00><00>}g}|D]|}|<00>|<06><00>r |j|vr<01>! |j<00>|<06><00>}n#t$rY<00>IwxYw|<05>
|<07><00>|<04> |j<00><00><00>}|<05> d<02><00><03><00>d} i} |D]P}| <09> |dd<06><00>t|d<00><00>dvr|d n|d  z| |d<<00>Q|D]<5D>}
2026-09-07 14:04:26 +08:00
|
2026-09-07 18:18:00 +08:00
j} | |jvs |
jdkr<01>t%j|
j<00><00>r |
jdkr<01>Ct+d|
j| <09> | d<06><00>z
<00><00>} t-| | | r|
jnd
<EFBFBD><00>|j| <d }<08><>| <09><00><00>D]-\} } | |jvr| dkrt-| | <00><00>|j| <<00>.|D]<5D>}|j<00>|dt-|d<00><00><00><00>}|<00>||d <00><00>|d |d }} |d<00>d<0F><00>r9|j| z}|j|jz|z|z |_||_|d|_n|<00>||<07><00>|j<00>
|<07><00>d }<08><>|j<00><00><00>D]}|<00>||<03><00>p|}<08>|r|<00><00><00>dSdS#t@$r|<00>!<00><00><00>wxYw)zFDeduplicate each fill; partial fills do not wait for order completion.c<01><00>h|]
}|d<00><02> S)<01> order_sys_idr()<02>.0<EFBFBD>rows r*<00> <setcomp>z#TState.reconcile.<locals>.<setcomp>Rs<00><00>:<3A>:<3A>:<3A><03><03>N<EFBFBD>#<23>:<3A>:<3A>:r)c<01>"<00>|d|dfS)Nr<00>
trade_timer()<01>rs r*<00><lambda>z"TState.reconcile.<locals>.<lambda>]s<00><00><11><<3C><1F>!<21>L<EFBFBD>/<2F> B<>r))<01>keyF<79>
stock_coderrH)<02>23<32>48rFrTrrG<00>order_local_idr:N)"r<00>nowrA<00> isoformatrRr?rVr2<00> deal_record<72>
ValueError<EFBFBD>append<6E>add<64>sort<72>getrr_<00>itemsrF<00>math<74>isfinite<74>
2026-09-07 14:04:26 +08:00
open_price<EFBFBD>maxr<00>
2026-09-07 18:18:00 +08:00
setdefaultrCr>rrrrO<00>values<65>save<76> Exceptionr3)r4rPrR<00>today<61>seen<65>rowsr6rX<00>modified<65>net<65>positionrrL<00>deltar@rMrNs r*<00> reconcilezTState.reconcileMs<><00><00><19> <0C><0E><0E>#<23>#<23>%<25>%<25>/<2F>/<2F>1<>1<><05>:<3A>:<3A>t<EFBFBD>z<EFBFBD>:<3A>:<3A>:<3A><04><11><04><19> (<28> (<28>D<EFBFBD><17>#<23>#<23>D<EFBFBD>)<29>)<29> <19>T<EFBFBD>-><3E>$<24>-F<>-F<><18> <19><1A>k<EFBFBD>-<2D>-<2D>d<EFBFBD>3<>3<><03><03><><1D> <19> <19> <19><18><08> <19><><EFBFBD><EFBFBD> <10>K<EFBFBD>K<EFBFBD><03> <1C> <1C> <1C> <10>H<EFBFBD>H<EFBFBD>T<EFBFBD>&<26> '<27> '<27> '<27> '<27> <0C> <09> <09>B<>B<> <09>C<>C<>C<><18><08>* <12><14>C<EFBFBD><1B> <12> <12><03>),<2C><17><17><13>\<5C>1B<31>A<EFBFBD>)F<>)F<>%(<28><13>]<5D>);<3B>%<<3C>%<<3C> <0C>%L<>%L<>C<EFBFBD><08>M<EFBFBD>M<EFBFBD>SV<53>W_<57>S`<60>R`<60>*<12><03>C<EFBFBD> <0C>%<25>&<26>&<26>&<26> <20> <20><08><1F>*<2A><04><17>4<EFBFBD>:<3A>%<25>%<25><18><1F>A<EFBFBD>)=<3D>)=<3D><1C><1B>}<7D>X<EFBFBD>%8<>9<>9<><1D>X<EFBFBD>=P<>TU<54>=U<>=U<><1C><19>!<21>X<EFBFBD>_<EFBFBD>s<EFBFBD>w<EFBFBD>w<EFBFBD>t<EFBFBD>Q<EFBFBD>/?<3F>/?<3F>?<3F>@<40>@<40><03>#-<2D>d<EFBFBD>C<EFBFBD>PS<50>9\<5C><18>9L<39>9L<39>Y\<5C>#]<5D>#]<5D><04>
<EFBFBD>4<EFBFBD> <20><1F><08><08> #<23>y<EFBFBD>y<EFBFBD>{<7B>{<7B> @<01> @<01> <0B><04>e<EFBFBD><17>t<EFBFBD>z<EFBFBD>)<29>)<29>e<EFBFBD>a<EFBFBD>i<EFBFBD>i<EFBFBD>'1<>$<24><15><06>'?<3F>'?<3F>D<EFBFBD>J<EFBFBD>t<EFBFBD>$<24><><1B> <20> <20><03><1B>z<EFBFBD>,<2C>,<2C>S<EFBFBD><1C>-><3E>
<EFBFBD>3<EFBFBD>|<7C>K\<5C>@]<5D>@]<5D>^<5E>^<5E><04><14> <0B> <0B>D<EFBFBD>#<23>l<EFBFBD>"3<>4<>4<>4<>!<21>(<28>m<EFBFBD>S<EFBFBD><1E>-@<40>V<EFBFBD><03><16>'<27>(<28>3<>3<>J<EFBFBD>?<3F>?<3F>2<> <20>M<EFBFBD>C<EFBFBD>/<2F>E<EFBFBD>&*<2A>m<EFBFBD>d<EFBFBD>n<EFBFBD>&D<>v<EFBFBD>&M<>QV<51>%V<>D<EFBFBD>N<EFBFBD>$)<29>D<EFBFBD>M<EFBFBD>),<2C>-=<3D>)><3E>D<EFBFBD>&<26>&<26><18>&<26>&<26>t<EFBFBD>S<EFBFBD>1<>1<>1<><14>
2026-09-07 14:04:26 +08:00
<EFBFBD>!<21>!<21>#<23>&<26>&<26>&<26><1F><08><08><1C>
<EFBFBD>)<29>)<29>+<2B>+<2B> @<01> @<01><04><1F>;<3B>;<3B>t<EFBFBD>U<EFBFBD>3<>3<>?<3F>x<EFBFBD><08><08><17> <1C><14> <09> <09> <0B> <0B> <0B> <0B> <0B> <1C> <1C><><18> <12> <12> <12> <10>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>L<EFBFBD> <11> <12><><EFBFBD>s<00>/B
<02>
2026-09-07 18:18:00 +08:00
B<05>B<05>$I"M
<00>
M*c<01><><00> |j<00>d<01>|j<00><00><00>D<00><00>|j<00><00>dS#t$r|<00><00><00><00>wxYw)Nc<01>\<00>i|])\}}||j|j|j|j|jzd<00><04><02>*S))r_rFrn<00> open_cost)rrr)rWrr@s r*<00>
<dictcomp>zTState.save.<locals>.<dictcomp><3E>sS<00><00><12><12><12>#<23><04>d<EFBFBD> <19>&*<2A>i<EFBFBD>"&<26>-<2D>&*<2A>n<EFBFBD>%)<29>]<5D>T<EFBFBD>^<5E>%C<> <16><16><12><12>r))r2rrrkrRrsr3)r4s r*rrz TState.save<76>s<><00><00> <12> <10>K<EFBFBD> <1C> <1C><12><12>'+<2B>j<EFBFBD>&6<>&6<>&8<>&8<><12><12><12><15>
<EFBFBD> <0E> <0E> <0E> <0E> <0E><><19> <12> <12> <12> <10>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>L<EFBFBD> <11> <12><><EFBFBD>s <00>AA<00> A%c<01><><00>|j<00><00><00>i|_|jj<00><00><00>D]2\}}t ||d|d|d<00><04><00>|j|<<00>3d<05>|jj<00><00><00>D<00><00>|_|jD]`}|j<00>|d<00><00>}|<04><01>%|d}|<05>d<08><00>r||_ <00>J|<00>
||<03><00><00>atj <00><00><00> <00><00><00><00><00>}|j<00><00><00>D]}|<00>||<06><00><00>dS) NrFrnr<00>rc<01>J<00>g|] }d<00>|<01><00><00>D<00><00><00><02>!S)c<01>&<00>i|]\}}|dk<00> ||<02><02>Sr<>r()rWr^<00>values r*rz+TState._load.<locals>.<listcomp>.<dictcomp><3E>s#<00><00> F<> F<> F<>J<EFBFBD>C<EFBFBD><15>#<23><14>+<2B>+<2B>S<EFBFBD>%<25>+<2B>+<2B>+r))rk)rWr6s r*<00>
<listcomp>z TState._load.<locals>.<listcomp><3E>s?<00><00>
2026-09-07 14:04:26 +08:00
<EFBFBD>
<EFBFBD>
<EFBFBD><14> G<01> F<>$<24>*<2A>*<2A>,<2C>,<2C> F<> F<> F<>
<EFBFBD>
<EFBFBD>
2026-09-07 18:18:00 +08:00
r)r_rbr:)r2<00>loadrkrPrrRrqrjr>rrOrrcrArdrC)r4rryr6r@r=rts r*r3z TState._load<61>s~<00><00> <0C> <0B><18><18><1A><1A><1A><17><04>
<EFBFBD>"<22>k<EFBFBD>3<>9<>9<>;<3B>;<3B> o<01> o<01>N<EFBFBD>D<EFBFBD>(<28>)<29>$<24><08><18>0B<30>H<EFBFBD>\<5C>DZ<44>_g<5F>hl<68>_m<5F>n<>n<>n<>D<EFBFBD>J<EFBFBD>t<EFBFBD> <1C> <1C>
2026-09-07 14:04:26 +08:00
<EFBFBD>
<EFBFBD><1C> <0B>)<29>0<>0<>2<>2<>
<EFBFBD>
<EFBFBD>
<EFBFBD><04>
<EFBFBD>
2026-09-07 18:18:00 +08:00
<19>J<EFBFBD> /<2F> /<2F>D<EFBFBD><17>:<3A>><3E>><3E>$<24>|<7C>"4<>5<>5<>D<EFBFBD><13>|<7C><18>!<21>"2<>3<>N<EFBFBD><1D>(<28>(<28><1A>4<>4<> /<2F>%3<><04>"<22>"<22><14>"<22>"<22>4<EFBFBD><14>.<2E>.<2E>.<2E>.<2E><18> <0C><0E><0E>#<23>#<23>%<25>%<25>/<2F>/<2F>1<>1<><05><18>J<EFBFBD>%<25>%<25>'<27>'<27> %<25> %<25>D<EFBFBD> <10>K<EFBFBD>K<EFBFBD><04>e<EFBFBD> $<24> $<24> $<24> $<24> %<25> %r)N)r-r.r/r0)r6rr/r7)r@rrArr/r7)r@rr6rDr/r0)rPrQrRrSr/r0)r/r0) r$r%r&<00>__doc__r5<00> staticmethodr?rC<00> classmethodrOr{rrr3r(r)r*r,r,#s<><00><00><00><00><00><00>V<>V<><15><15><15><15>
2026-09-07 14:04:26 +08:00
<12>
<EFBFBD>
<EFBFBD>
<EFBFBD><12>\<5C>
2026-09-07 18:18:00 +08:00
<EFBFBD><12><15><15><15><12>\<5C><15><11>-<2D>-<2D>-<2D><11>[<5B>-<2D> <<12><<12><<12><<12>|<12><12><12><12>$%<25>%<25>%<25>%<25>%<25>%r)r,)r<><00>
__future__rrl<00> dataclassesrr<00>pathlibr<00>sdkrr<00>libs.orderbookr r
r r rr,r(r)r*<00><module>r<>s<00><01>?<3F>?<3F>"<22>"<22>"<22>"<22>"<22>"<22> <0B> <0B> <0B> <0B>!<21>!<21>!<21>!<21>!<21>!<21><1D><1D><1D><1D><1D><1D><18><18><18><18><18><18>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>$<24>$<24>$<24>$<24>$<24>$<24>+<2B><11><05>t<EFBFBD>T<EFBFBD> <0B><19><14><16><16><16><1C><1C><1C><1C><1C><1C><1C><17><16><1C>$O%<25>O%<25>O%<25>O%<25>O%<25>O%<25>O%<25>O%<25>O%<25>O%r)