Files
big-qmt/py-client/strategy/trend/__pycache__/order.cpython-311.pyc

58 lines
11 KiB
Plaintext
Raw Normal View History

2026-08-28 18:52:27 +08:00
<EFBFBD>
2026-08-28 22:56:35 +08:00
j<EE8591><00><01> <00>dZddlmZddlZddlmZddlmZmZddlm Z ddl
2026-08-28 18:52:27 +08:00
m Z dd dd d
2026-08-28 22:56:35 +08:00
<EFBFBD>Z hd <0B>Z ed d <0C> <0A><00>Gd<0E>d<0F><00><00><00>Zed <0C><10><00>Gd<11>d<12><00><00><00>ZGd<13>d<14><00>Zd#d<19>Zd$d<1D>Zd%d<1F>Zd&d"<22>ZdS)'uD趋势策略委托簿,对应 Go 客户端的 ``logic/order.go``。<>)<01> annotationsN)<01> dataclass)<02>datetime<6D> timedelta)<01>Lock)<01>Any<6E>BUY<55>SELL)<04>23<32>24<32>48<34>49>r r<00>50<35>51<35>52<35>55T)<02>frozen<65>slotsc<01>P<00>eZdZUdZded<ded<ded<ded<ded <ded
<d S) <0C>PlaceOrderRequestu8``OrderBook.place`` 提交委托所需的全部参数。r<00>client<6E>int<6E>op<6F>str<74>code<64>volume<6D>order_id<69> strategy_nameN)<05>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>__annotations__<5F><00><00>7D:\work\quant\big-qmt\py-client\strategy\trend\order.pyrrsQ<00><00><00><00><00><00><00>B<>B<><0F>K<EFBFBD>K<EFBFBD>K<EFBFBD> <0B>G<EFBFBD>G<EFBFBD>G<EFBFBD> <0A>I<EFBFBD>I<EFBFBD>I<EFBFBD><0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><11>M<EFBFBD>M<EFBFBD>M<EFBFBD><16><16><16><16><16>r%r)rc<01>h<00>eZdZUdZded<ded<ded<ded<ded<ded <d
ed <d Zded <dS)<0F> OrderItemu8从 QMT 委托明细转换得到的本地订单记录。r<00>idr<00>side<64>remark<72>status<75>datetime | None<6E>
created_atrr<00><00>local_order_idN)rr r!r"r#r0r$r%r&r(r(sk<00><00><00><00><00><00><00>B<>B<> <0B>G<EFBFBD>G<EFBFBD>G<EFBFBD> <0A>I<EFBFBD>I<EFBFBD>I<EFBFBD> <0A>I<EFBFBD>I<EFBFBD>I<EFBFBD><0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><1F><1F><1F><1F><0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><1C>N<EFBFBD><1C><1C><1C><1C><1C>r%r(c<01>^<00>eZdZdZddd<07>Zedd
2026-08-28 18:52:27 +08:00
<EFBFBD><04><00>Zdd<0E>Zdd<0F>Zdd<12>Z d d!d<16>Z
2026-08-28 22:56:35 +08:00
d"d<19>Z dS)#<23> OrderBooku$线程安全的活动委托缓存。<E5AD98>,<00>timeout_seconds<64>float<61>return<72>Nonec<01>r<00>t|<01><01><00>|_i|_g|_t <00><00>|_dS)N)<01>seconds)r<00>timeout<75>data<74>indexr<00>lock)<02>selfr4s r&<00>__init__zOrderBook.__init__/s1<00><00> <20><1F>9<>9<>9<><04> <0C>*,<2C><04> <09> "<22><04>
<EFBFBD><18>F<EFBFBD>F<EFBFBD><04> <09> <09> r%<00>legrc<01>F<00>d|<00>dtjd<03><00><00><00>dd<05>S)u1生成不超过 24 个字符的策略订单号。zzt-<2D>-<2D>N<>)<02>secrets<74> token_hex)r@s r&<00> new_order_idzOrderBook.new_order_id5s.<00><00>2<>S<EFBFBD>1<>1<>7<EFBFBD>,<2C>Q<EFBFBD>/<2F>/<2F>1<>1<>#<23>2<EFBFBD>#<23>6<>6r%r*r<00>boolc<01>`<00>|j5|<01>d|<02><00>|jvcddd<02><00>S#1swxYwYdS)uB判断证券在指定买卖方向上是否已经被委托锁定。rBN)r=r<)r>r*rs r&<00>is_lockzOrderBook.is_lock:s<><00><00> <11>Y<EFBFBD> 2<> 2<><1A>#<23>#<23>T<EFBFBD>#<23>#<23>t<EFBFBD>z<EFBFBD>1<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<><32><EFBFBD><EFBFBD> 2<> 2<> 2<> 2<> 2<> 2s <00>#<03>'<07>'c<01><><00>|j5|<02>d|<01><00>}|j<00>|<03><00>}||jvpt |o |jt v<00><00>cddd<02><00>S#1swxYwYdS)u<判断证券是否存在仍在处理中的同方向委托。rBN)r=r;<00>getr<rHr,<00> BUSY_STATUSES)r>rr*<00>key<65>orders r&<00>busyzOrderBook.busy?s<><00><00> <11>Y<EFBFBD> V<01> V<01><19>"<22>"<22>D<EFBFBD>"<22>"<22>C<EFBFBD><18>I<EFBFBD>M<EFBFBD>M<EFBFBD>#<23>&<26>&<26>E<EFBFBD><16>$<24>*<2A>$<24>U<><04>U<EFBFBD>-T<>u<EFBFBD>|<7C>}<7D>7T<37>(U<>(U<> V<01> V<01> V<01> V<01> V<01> V<01> V<01> V<01> V<01> V<01> V<01> V<01><><EFBFBD><EFBFBD> V<01> V<01> V<01> V<01> V<01> Vs<00>AA<03>A <07>#A rrc<01><><00>d<01>|<01>d<02><00>D<00><00>}|j5d<03>|D<00><00>|_d<04>|D<00><00>|_ddd<05><00>dS#1swxYwYdS)u2从 QMT 刷新当前委托明细和方向索引。c<01>,<00>g|]}t|<01><00><00><02>Sr$)<01> parse_order)<02>.0<EFBFBD>rows r&<00>
<listcomp>z%OrderBook.refresh.<locals>.<listcomp>Hs-<00><00>
2026-08-28 18:52:27 +08:00
<EFBFBD>
<EFBFBD>
<EFBFBD>!$<24>K<EFBFBD><03> <1C> <1C>
<EFBFBD>
<EFBFBD>
2026-08-28 22:56:35 +08:00
r%rOc<01><00>i|]\}}||<02><02> Sr$r$<00>rTrN<00>items r&<00>
<dictcomp>z%OrderBook.refresh.<locals>.<dictcomp>Ls<00><00>B<>B<>B<>y<EFBFBD>s<EFBFBD>D<EFBFBD><13>d<EFBFBD>B<>B<>Br%c<01>4<00>g|]\}}|jtv<00>|<01><02>Sr$)r,rMrXs r&rVz%OrderBook.refresh.<locals>.<listcomp>Ms/<00><00><0E><0E><0E>!<21><03>T<EFBFBD>d<EFBFBD>k<EFBFBD>]<5D>6R<36>6R<36><03>6R<36>6R<36>6Rr%N)<04>trade_detail_datar=r;r<)r>r<00> parsed_orderss r&<00>refreshzOrderBook.refreshFs<><00><00>
2026-08-28 18:52:27 +08:00
<EFBFBD>
<EFBFBD>(.<2E>(@<40>(@<40><17>(I<>(I<>
<EFBFBD>
<EFBFBD>
2026-08-28 22:56:35 +08:00
<EFBFBD> <0A><12>Y<EFBFBD> <0E> <0E>B<>B<>M<EFBFBD>B<>B<>B<>D<EFBFBD>I<EFBFBD><0E><0E>%2<><0E><0E><0E>D<EFBFBD>J<EFBFBD> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E> <0E><><EFBFBD><EFBFBD> <0E> <0E> <0E> <0E> <0E> s<00>#A<03>A<07>AN<>nowr-c<01>"<00>|<00>|<01><00>|ptj<00><00>}t|j<00><00><00><00><00>D]=}|j<00>4||jz
2026-08-28 18:52:27 +08:00
|jkr!|jr|<01> |j<00><00><00>>dS)u<尝试撤销超过有效期且具有委托编号的订单。N)
2026-08-28 22:56:35 +08:00
r^rr_<00>listr;<00>valuesr.r:r)<00> cancel_by_id)r>rr_<00>currentrOs r&<00>cancel_expiredzOrderBook.cancel_expiredQs<><00><00> <0C> <0C> <0C>V<EFBFBD><1C><1C><1C><15>'<27><18><1C><1E><1E><07><1A>$<24>)<29>*<2A>*<2A>,<2C>,<2C>-<2D>-<2D> .<2E> .<2E>E<EFBFBD><15> <20>,<2C><1B>e<EFBFBD>.<2E>.<2E><14><1C>=<3D>=<3D><19>H<EFBFBD>><3E><17>#<23>#<23>E<EFBFBD>H<EFBFBD>-<2D>-<2D>-<2D><>  .<2E> .r%<00>requestrc
<01><><00>|j<00>|j|j|j|j|j<00><00>}t|t<00><00>sdSt|<02>
d<02><00>pd<03><00><00> <00><00><00> <00><00>}|<02>
d<04><00>dks|dvrdSt<00>
t|j<00><00>d<03><00>}t||j||jdtj<00><00>|j|j<00><08><00>}|j5|<04>d |j<00><00>}||j|<||jvr|j<00>|<06><00>d
d
d
<EFBFBD><00>n #1swxYwYd S) u<按最新价提交委托并立即写入本地方向锁。F<E38082> order_refr/r,<00>success>r/<00>none<6E>unknownr <00>r)rr*r+r,r.rr0rBNT)r<00>passorder_latest_taggedrrrrr<00>
isinstance<EFBFBD>dictrrL<00>strip<69>lower<65> OFFSET_FLAGr(rr_r=r;r<<00>append)r>rf<00>resultrhr*<00>pendingrNs r&<00>placezOrderBook.place_s<><00><00><18><1E>7<>7<> <13>J<EFBFBD> <13>L<EFBFBD> <13>N<EFBFBD> <13> !<21> <13> <1C> 
<EFBFBD>
<EFBFBD><06><1A>&<26>$<24>'<27>'<27> <19><18>5<EFBFBD><17><06>
<EFBFBD>
<EFBFBD>;<3B>/<2F>/<2F>5<>2<EFBFBD>6<>6<><<3C><<3C>><3E>><3E>D<>D<>F<>F<> <09> <11>:<3A>:<3A>h<EFBFBD> <1F> <1F>9<EFBFBD> ,<2C> ,<2C> <09>=T<>0T<30>0T<30><18>5<EFBFBD><1A><EFBFBD><EFBFBD>s<EFBFBD>7<EFBFBD>:<3A><EFBFBD><EFBFBD><02>3<>3<><04><1B><18><18><1C><15><1A>#<23><17><1F>|<7C>~<7E>~<7E><1A>><3E>"<22>+<2B> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD><07><12>Y<EFBFBD> '<27> '<27><19>*<2A>*<2A>G<EFBFBD>L<EFBFBD>*<2A>*<2A>C<EFBFBD>$<24>D<EFBFBD>I<EFBFBD>c<EFBFBD>N<EFBFBD><12>$<24>*<2A>$<24>$<24><14>
<EFBFBD>!<21>!<21>#<23>&<26>&<26>&<26>  '<27> '<27> '<27> '<27> '<27> '<27> '<27> '<27> '<27> '<27> '<27><><EFBFBD><EFBFBD> '<27> '<27> '<27> '<27>
<14>ts<00>&:E,<03>,E0<07>3E0)r3)r4r5r6r7)r@rr6r)r*rrrr6rH)rrr*rr6rH)rrr6r7)N)rrr_r-r6r7)rfrr6rH) rr r!r"r?<00> staticmethodrGrJrPr^rervr$r%r&r2r2,s<><00><00><00><00><00><00>.<2E>.<2E><1B><1B><1B><1B><1B> <12>7<>7<>7<><12>\<5C>7<>2<>2<>2<>2<>
V<01>V<01>V<01>V<01> <0E> <0E> <0E> <0E> .<2E> .<2E> .<2E> .<2E> .<2E><14><14><14><14><14>r%r2rU<00>dict[str, Any]r6<00>tuple[str, OrderItem]c<01>d<00>t|<00>d<01><00><00><00>t|<00>d<02><00><00><00>z}t|<00>d<03><00><00><00>}|dkr|dz}|rtj|<02><00>nt |<00><00>}t t |<00>d<06><00>pd<07><00>t |<00>d<08><00>pd<07><00>t<00>t |<00>d <09><00><00><00>d<07><00>t |<00>d
<EFBFBD><00>pd<07><00>t |<00>d <0B><00>pd<07><00>||tt |<00>d
<EFBFBD><00>pd<07><00><00><00><00> <0C><00>}|j <00>d |j
<00><00>|fS)uA把 QMT 原始委托字段转换为本地订单及其索引键。<E994AE>m_nVolumeTotal<61>m_nVolumeTraded<65> m_nOrderTimelh<>]i<><00>m_strOrderSysIDr/<00>m_strInstrumentID<49> m_nOffsetFlag<61> m_strRemark<72>m_nOrderStatusrlrB) <0B>_as_intrLr<00> fromtimestamp<6D>_parse_insert_datetimer(rrr<00>_local_order_idr*r)rUr<00> timestampr.rYs r&rSrS<00>s<><00><00> <14>S<EFBFBD>W<EFBFBD>W<EFBFBD>-<2D>.<2E>.<2E> /<2F> /<2F>'<27> <0B><07><07>!<21>"<22>"<22>3<06>3<06><06>F<EFBFBD><18><03><07><07><0E>/<2F>/<2F>0<>0<>I<EFBFBD><10>?<3F>"<22>"<22><11>T<EFBFBD><19> <09> <15> )<29><08><1E>y<EFBFBD>)<29>)<29>)<29> #<23>C<EFBFBD> (<28> (<28><0F> <15> <0E>s<EFBFBD>w<EFBFBD>w<EFBFBD>(<28>)<29>)<29>/<2F>R<EFBFBD> 0<> 0<> <10><13><17><17>,<2C>-<2D>-<2D>3<><12> 4<> 4<> <18>_<EFBFBD>_<EFBFBD>S<EFBFBD><13><17><17><1F>!9<>!9<>:<3A>:<3A>B<EFBFBD> ?<3F> ?<3F><12>3<EFBFBD>7<EFBFBD>7<EFBFBD>=<3D>)<29>)<29>/<2F>R<EFBFBD>0<>0<><12>3<EFBFBD>7<EFBFBD>7<EFBFBD>+<2B>,<2C>,<2C>2<><02>3<>3<><1D><15>&<26>s<EFBFBD>3<EFBFBD>7<EFBFBD>7<EFBFBD>=<3D>+A<>+A<>+G<>R<EFBFBD>'H<>'H<>I<>I<> <06> <06> <06>D<EFBFBD><13>i<EFBFBD> %<25> %<25>$<24>)<29> %<25> %<25>t<EFBFBD> +<2B>+r%<00>valuerrc<01>V<00> t|pd<01><00>S#ttf$rYdSwxYw)u-安全转换整数,无效值按 0 处理。r)r<00> TypeError<6F>
ValueError)r<>s r&r<>r<><00>s><00><00><11><12>5<EFBFBD>:<3A>A<EFBFBD><EFBFBD><EFBFBD><1E><> <15>z<EFBFBD> "<22><11><11><11><10>q<EFBFBD>q<EFBFBD><11><><EFBFBD>s <00><00>(<03>(r-c<01>4<00>t|<00>d<01><00>pd<02><00>}t|<00>d<03><00>pd<02><00><00>dd<02><00><00>d<05><00>} t j||zd<06><00>S#t $rYdSwxYw)u6使用委托日期和时间字段构造本地时间。<E997B4>m_strInsertDater/<00>m_strInsertTime<6D>:rCz %Y%m%d%H%M%SN)rrL<00>replace<63>zfillr<00>strptimer<65>)rU<00>date<74>clocks r&r<>r<><00>s<><00><00> <0E>s<EFBFBD>w<EFBFBD>w<EFBFBD>(<28>)<29>)<29>/<2F>R<EFBFBD> 0<> 0<>D<EFBFBD> <0F><03><07><07>)<29>*<2A>*<2A>0<>b<EFBFBD> 1<> 1<> 9<> 9<>#<23>r<EFBFBD> B<> B<> H<> H<><11> K<> K<>E<EFBFBD><14><17> <20><14><05><1C>~<7E>><3E>><3E>><3E><> <15><14><14><14><13>t<EFBFBD>t<EFBFBD><14><><EFBFBD>s<00>1B <00>
B<03>Br+rc<01>B<00>|r|<00>dd<02><00>dndS)u<兼容 ``local_order_id|signal_key`` 形式的 QMT 备注。<E6B3A8>|<7C>rr/)<01>split)r+s r&r<>r<><00>s%<00><00>&,<2C> 4<>6<EFBFBD><<3C><<3C><03>Q<EFBFBD> <1F> <1F><01> "<22> "<22>"<22>4r%)rUrxr6ry)r<>rr6r)rUrxr6r-)r+rr6r)r"<00>
__future__rrE<00> dataclassesrrr<00> threadingr<00>typingrrrrMrr(r2rSr<>r<>r<>r$r%r&<00><module>r<>s<><00><01>J<>J<>"<22>"<22>"<22>"<22>"<22>"<22><0E><0E><0E><0E>!<21>!<21>!<21>!<21>!<21>!<21>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28><1A><1A><1A><1A><1A><1A><16><16><16><16><16><16><1B>&<26><05>V<EFBFBD>D<>D<> <0B>5<>4<>4<> <0A> <0B><19>$<24>d<EFBFBD>#<23>#<23>#<23><17><17><17><17><17><17><17>$<24>#<23><17> <0B><19><14><16><16><16>
<1D>
<1D>
<1D>
<1D>
<1D>
<1D>
<1D><17><16>
<1D>R<14>R<14>R<14>R<14>R<14>R<14>R<14>R<14>j,<2C>,<2C>,<2C>,<2C>:<11><11><11><11><14><14><14><14>5<>5<>5<>5<>5<>5r%