Files
big-qmt/py-client/tests/__pycache__/test_trend.cpython-311.pyc

66 lines
24 KiB
Plaintext
Raw Normal View History

2026-08-28 22:56:35 +08:00
<EFBFBD>
2026-09-01 14:28:49 +08:00
e<>j/<00><01>p<00>ddlmZddlZddlmZddlmZmZddlmZddl m
2026-08-28 22:56:35 +08:00
Z
2026-09-01 14:28:49 +08:00
ddl m Z ddl mZmZdd lmZmZmZmZmZdd
lmZmZdd lmZmZmZdd lmZdd lm Z m!Z!m"Z"m#Z#Gd<0E>d<0F><00>Z$Gd<10>d<11><00>Z%Gd<12>d<13><00>Z&Gd<14>dej'<00><00>Z(e)dkrej*<00><00>dSdS)<17>)<01> annotationsN)<01>ThreadPoolExecutor)<02>datetime<6D> timedelta)<01>TemporaryDirectory)<01>SimpleNamespace)<01>patch)<02> GridState<74>GridTrailingTracker)<05>APIError<6F>Assets<74> OrderItem<65> PositionItem<65>Tick)<02> OrderBook<6F>PlaceOrderRequest)<03>
2026-08-30 14:46:34 +08:00
LOSS_TIERS<EFBFBD> handle_loss<73>manage_positions)<01>RunOnce)<04> STATUS_OK<4F>STATUS_UNKNOWN<57>State<74> StateItemc<01><00>eZdZd<01>Zd<02>ZdS)<04>
2026-09-01 14:28:49 +08:00
FakeClientc<01><00>g|_dS<00>N<><01>orders)<01>selfs <20>3D:\work\quant\big-qmt\py-client\tests\test_trend.py<70>__init__zFakeClient.__init__s <00><00><18><04> <0B> <0B> <0B>c<01>t<00>|j<00>|||||f<05><00>ddt|j<00><00><00><00>d<03>S)N<>successzbroker-)<02>status<75> order_ref)r <00>append<6E>len)r!<00>op<6F>code<64>volume<6D> strategy_name<6D>order_ids r"<00>passorder_latest_taggedz"FakeClient.passorder_latest_taggedsD<00><00> <0C> <0B><1A><1A>B<EFBFBD><04>f<EFBFBD>m<EFBFBD>X<EFBFBD>F<>G<>G<>G<>#<23>2N<32>C<EFBFBD><04> <0B><L<><L<>2N<32>2N<32>O<>O<>Or$N)<05>__name__<5F>
__module__<EFBFBD> __qualname__r#r0<00>r$r"rrs7<00><00><00><00><00><00><19><19><19>P<01>P<01>P<01>P<01>Pr$rc<01> <00>eZdZd<01>Zd<02>Zd<03>ZdS)<05>FakeOrderClientc<01>"<00>||_g|_dSr)r <00>canceled)r!r s r"r#zFakeOrderClient.__init__s<00><00><1C><04> <0B><1A><04> <0A> <0A> r$c<01><00>|jSrr)r!<00> _datatypes r"<00>trade_detail_dataz!FakeOrderClient.trade_detail_data s
<00><00><13>{<7B>r$c<01>:<00>|j<00>|<01><00>dSr)r8r))r!r/s r"<00> cancel_by_idzFakeOrderClient.cancel_by_id#s<00><00> <0C> <0A><1C><1C>X<EFBFBD>&<26>&<26>&<26>&<26>&r$N)r1r2r3r#r;r=r4r$r"r6r6sA<00><00><00><00><00><00><1B><1B><1B><1B><1B><1B>'<27>'<27>'<27>'<27>'r$r6c<01><00>eZdZd<01>ZdS)<03>FailedOrderClientc<01>"<00>tdd<02><00><00>)Ni<4E>z*QMT did not return a valid order reference)r )r!<00>_argss r"r0z)FailedOrderClient.passorder_latest_tagged(s<00><00><16>s<EFBFBD>H<>I<>I<>Ir$N)r1r2r3r0r4r$r"r?r?'s(<00><00><00><00><00><00>J<01>J<01>J<01>J<01>Jr$r?c<01>P<00>eZdZd<01>Zd<02>Zd<03>Zd<04>Zd<05>Zd<06>Zd<07>Z d<08>Z
2026-08-30 14:46:34 +08:00
d <09>Z d
2026-09-01 14:28:49 +08:00
<EFBFBD>Z d <0B>Z d S) <0A>
2026-08-31 15:33:39 +08:00
TrendTestsc<01><><00>td<01><00>}|<00>|<01>dd<03><00>jtj<00><00>|<00>|<01>dd<04><00>jtj<00><00>|<00>|<01>dd<05><00>jtj<00><00>|<00>|<01>dd<05><00>jtj<00><00>|<01>g<00><00>|<00>|<01>dd<05><00>jtj<00><00>dS)N<>zA:codeg<65><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@g333333@zB:code) r <00> assertEqual<61>observe<76>stater
2026-09-01 14:28:49 +08:00
<00>ARMED<45>RAISED<45>RETREAT<41>retain)r!<00>trackers r"<00>&test_grid_states_and_account_isolationz1TrendTests.test_grid_states_and_account_isolation-s<><00><00>%<25>a<EFBFBD>(<28>(<28><07> <0C><18><18><17><1F><1F><18>3<EFBFBD>7<>7<>=<3D>y<EFBFBD><EFBFBD>O<>O<>O<> <0C><18><18><17><1F><1F><18>3<EFBFBD>7<>7<>=<3D>y<EFBFBD>?O<>P<>P<>P<> <0C><18><18><17><1F><1F><18>3<EFBFBD>7<>7<>=<3D>y<EFBFBD>?P<>Q<>Q<>Q<> <0C><18><18><17><1F><1F><18>3<EFBFBD>7<>7<>=<3D>y<EFBFBD><EFBFBD>O<>O<>O<><0F><0E><0E>r<EFBFBD><1A><1A><1A> <0C><18><18><17><1F><1F><18>3<EFBFBD>7<>7<>=<3D>y<EFBFBD><EFBFBD>O<>O<>O<>O<>Or$c<01><00>t<00><00>}t<00><00>}t|ddddd<05><00>}|<00>|<02>|<03><00><00><00>|<00>|<02>dd<06><00><00><00>dS)N<><00> 000001.SZ<53>d<00>local<61>morning<6E>BUY)rrr<00>
assertTrue<EFBFBD>place<63>busy)r!<00>client<6E>book<6F>requests r"<00>%test_order_book_locks_duplicate_orderz0TrendTests.test_order_book_locks_duplicate_order6so<00><00><1B><1C><1C><06><18>{<7B>{<7B><04>#<23>F<EFBFBD>B<EFBFBD> <0B>S<EFBFBD>'<27>9<EFBFBD>U<>U<><07> <0C><0F><0F><04>
2026-08-28 22:56:35 +08:00
<EFBFBD>
2026-09-01 14:28:49 +08:00
<EFBFBD>7<EFBFBD>+<2B>+<2B>,<2C>,<2C>,<2C> <0C><0F><0F><04> <09> <09>+<2B>u<EFBFBD>5<>5<>6<>6<>6<>6<>6r$c<01><><00>t<00><00>}tt<00><00>ddddd<05><00>}|<00>d<06><07><00>5}|<00>|<01>|<02><00><00><00>ddd<00><00>n #1swxYwYd<08>|j<00><00>}|<00>d |<04><00>|<00>d
|<04><00>dS) NrPrQrRrSrT<00>ERROR<4F><01>level<65>
uHTTP状态=502<30> Traceback) rrr?<00>
assertLogs<EFBFBD> assertFalserW<00>join<69>output<75>assertIn)r!rZr[<00>capturedrfs r"<00>1test_order_api_error_returns_false_with_tracebackz<TrendTests.test_order_api_error_returns_false_with_traceback=s<><00><00><18>{<7B>{<7B><04>#<23>$5<>$7<>$7<><12>[<5B>#<23>w<EFBFBD>Xa<58>b<>b<><07> <11>_<EFBFBD>_<EFBFBD>7<EFBFBD>_<EFBFBD> +<2B> +<2B> 2<>x<EFBFBD> <10> <1C> <1C>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><07>0<>0<> 1<> 1<> 1<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<> 2<><32><EFBFBD><EFBFBD> 2<> 2<> 2<> 2<><16><19><19>8<EFBFBD>?<3F>+<2B>+<2B><06> <0C> <0A> <0A>&<26><06>/<2F>/<2F>/<2F> <0C> <0A> <0A>k<EFBFBD>6<EFBFBD>*<2A>*<2A>*<2A>*<2A>*s<00>)A:<03>:A><07>A>c <01><><00>tj<00><00>td<01><02><00>z
2026-08-30 14:46:34 +08:00
}tddddd|d<08><00>td d
2026-09-01 14:28:49 +08:00
d dd |d<08><00>td dddd|d<08><00>tddddd|d<08><00>g}t |<02><00>}t d<13><14><00>}|<04>|<03><00>|<00>d<15>|jD<00><00>d h<01><00>|<00>|j dg<01><00>dS)N<>)<01>seconds<64>active<76>ArU<00><00>49rR<00> completed<65>B<>SELL<4C>56r8<00>C<>54<35>failed<65>D<>57<35>
2026-08-30 15:29:21 +08:00
)<01>cancel_timeout_secc<01><00>h|] }|j<00><02>
2026-09-01 14:28:49 +08:00
Sr4)<01>id)<02>.0<EFBFBD>items r"<00> <setcomp>zZTrendTests.test_refresh_tracks_active_and_completed_and_cancels_expired.<locals>.<setcomp>Us<00><00>8<>8<>8<>d<EFBFBD>$<24>'<27>8<>8<>8r$)
r<00>nowrrr6r<00>refreshrF<00>datar8)r!<00>oldr rYrZs r"<00><test_refresh_tracks_active_and_completed_and_cancels_expiredzGTrendTests.test_refresh_tracks_active_and_completed_and_cancels_expiredHs<><00><00><16>l<EFBFBD>n<EFBFBD>n<EFBFBD>y<EFBFBD><12>4<>4<>4<>4<><03> <15>h<EFBFBD><03>U<EFBFBD>B<EFBFBD><04>c<EFBFBD>3<EFBFBD> ?<3F> ?<3F> <15>k<EFBFBD>3<EFBFBD><06><02>D<EFBFBD>#<23>s<EFBFBD> C<> C<> <15>j<EFBFBD>#<23>u<EFBFBD>b<EFBFBD>$<24><03>S<EFBFBD> A<> A<> <15>h<EFBFBD><03>U<EFBFBD>B<EFBFBD><04>c<EFBFBD>3<EFBFBD> ?<3F> ?<3F> 
<EFBFBD><06> !<21><16>(<28>(<28><06><18>B<EFBFBD>/<2F>/<2F>/<2F><04> <0C> <0C> <0C>V<EFBFBD><1C><1C><1C> <0C><18><18>8<>8<>d<EFBFBD>i<EFBFBD>8<>8<>8<>;<3B>-<2D>H<>H<>H<> <0C><18><18><16><1F>8<EFBFBD>*<2A>5<>5<>5<>5<>5r$c<01><><00>t<00><00>5}tj|dd<02><00>}tddddd<06><07><00>}|<02>|g<01><00>t t <00><00>|t<00><00>t d<08><00> <09><00>t d
<EFBFBD>d <0B><00> <0C><00>td <0A><00>t dgd ddd<01><10><00><00><11><00>}t|dtd<12><13><00>i|gdd<0F><00>ddd<00><00>dS#1swxYwYdS)N<>trendrnrQrRrz<00><>)<05>
stock_coder-<00>can_use_volume<6D>
open_price<EFBFBD> market_valuec<01><00>dSrr4<00><01>_codes r"<00><lambda>zQTrendTests.test_position_dataclasses_execute_without_type_error.<locals>.<lambda>bs<00><00><04>r$<00><01>forgetc<01><00>dS<00>NFr4<00>rAs r"r<>zQTrendTests.test_position_dataclasses_execute_without_type_error.<locals>.<lambda>c<00><00><00>5<EFBFBD>r$c<01><00>dSrr4r<>s r"r<>zQTrendTests.test_position_dataclasses_execute_without_type_error.<locals>.<lambda>cs<00><00>_c<5F>r$)<02> triggeredr<64>rEF<><46><00><06>
account_id<EFBFBD>excluded_codes<65> grid_step_pct<63>enable_loss_add_position<6F> buy_value<75>strategy)rYrHr <00>
open_watch<EFBFBD> add_watch<63>profit_tracker<65> account_cfg<66>333333$@<40><01>
last_priceT) rr<00> for_strategyr<00>sync_positionsrrrr rr)r!<00> directoryrH<00>position<6F>runtimes r"<00>4test_position_dataclasses_execute_without_type_errorz?TrendTests.test_position_dataclasses_execute_without_type_errorXss<00><00> <1F> !<21> !<21> d<01>Y<EFBFBD><19>&<26>y<EFBFBD>'<27>3<EFBFBD>?<3F>?<3F>E<EFBFBD>#<23>&<26>s<EFBFBD>3<EFBFBD><1D>D<EFBFBD><0E><0E><0E>H<EFBFBD> <12> <20> <20>(<28><1A> ,<2C> ,<2C> ,<2C>%<25>!<21>|<7C>|<7C>5<EFBFBD><19><1B><1B>*<2A>2D<32>2D<32>E<>E<>E<>)<29>4H<34>4H<34>Qc<51>Qc<51>d<>d<>d<>2<>1<EFBFBD>5<>5<>+<2B>"<22>2<EFBFBD>Q<EFBFBD>-2<>d<EFBFBD>$<24><12><12><12>
2026-08-28 22:56:35 +08:00
<0E>
<0E>
2026-09-01 14:28:49 +08:00
<0E>G<EFBFBD> <1D>W<EFBFBD>{<7B>D<EFBFBD>D<EFBFBD>4I<34>4I<34>4I<34>&J<>X<EFBFBD>J<EFBFBD>X\<5C>^b<> c<> c<> c<>% d<01> d<01> d<01> d<01> d<01> d<01> d<01> d<01> d<01> d<01> d<01> d<01><><EFBFBD><EFBFBD> d<01> d<01> d<01> d<01> d<01> ds<00>CC/<03>/C3<07>6C3c<01><00>t<00><00>5}tj|dd<02><00>}tdddddd<07><08><00>}|<02>|g<01><00>t t <00><00>|t<00><00>t d <09><00>
<EFBFBD><00>td <0B><00>t dgd d d d<01><0E><00><00><0F><00>}|<00> d<10><11><00>5}t|dtd<12><13><00>i|gdd <0A><00>ddd<00><00>n #1swxYwYd<15> |j <00><00>}|<00>d|<06><00>|<00>d|<06><00>|<00>d|<06><00>|<00>d|<06><00>ddd<00><00>dS#1swxYwYdS)Nr<4E>rnrQu 平安银行rRrzr<>)r<><00>
stock_namer-r<>r<>r<>c<01><00>dSr<>r4r<>s r"r<>zYTrendTests.test_position_log_contains_code_name_profit_and_loss_actions.<locals>.<lambda>wr<>r$<00>r<>rEFr<46>r<>)rYrHr r<>r<>r<><00>INFOr_r<>r<>Trau代码=000001.SZu名称=平安银行u止盈=未触发u补仓=未启用)rrr<>rr<>rrrr rcrrrerfrg)r!r<>rHr<>r<>rhrfs r"<00><test_position_log_contains_code_name_profit_and_loss_actionszGTrendTests.test_position_log_contains_code_name_profit_and_loss_actionsms"<00><00> <1F> !<21> !<21> 6<>Y<EFBFBD><19>&<26>y<EFBFBD>'<27>3<EFBFBD>?<3F>?<3F>E<EFBFBD>#<23>&<26>><3E>#<23>"<22>r<EFBFBD><04><0E><0E><0E>H<EFBFBD> <12> <20> <20>(<28><1A> ,<2C> ,<2C> ,<2C>%<25>!<21>|<7C>|<7C>5<EFBFBD><19><1B><1B>)<29>4H<34>4H<34>I<>I<>I<>2<>1<EFBFBD>5<>5<>+<2B>"<22>2<EFBFBD>Q<EFBFBD>-2<>d<EFBFBD>$<24><12><12><12> <0E> <0E> <0E>G<EFBFBD><16><1F><1F>v<EFBFBD><1F>.<2E>.<2E> <12>(<28> <20><1B> <20>$<24>$<24>"7<>"7<>"7<>8<><1D>J<EFBFBD><18><18> <12><12><12> <12> <12> <12> <12> <12> <12> <12> <12> <12> <12> <12><><EFBFBD><EFBFBD> <12> <12> <12> <12><1A>Y<EFBFBD>Y<EFBFBD>x<EFBFBD><EFBFBD>/<2F>/<2F>F<EFBFBD> <10>M<EFBFBD>M<EFBFBD>,<2C>f<EFBFBD> 5<> 5<> 5<> <10>M<EFBFBD>M<EFBFBD>/<2F><16> 8<> 8<> 8<> <10>M<EFBFBD>M<EFBFBD>,<2C>f<EFBFBD> 5<> 5<> 5<> <10>M<EFBFBD>M<EFBFBD>,<2C>f<EFBFBD> 5<> 5<> 5<>? 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<> 6<><36><EFBFBD><EFBFBD> 6<> 6<> 6<> 6<> 6<> 6s7<00>B4E><03>%C4<05>( E><03>4C8 <09>8E><03>;C8 <09><A5E><03>>F<07>Fc <01><><00>|<00>tt<00><00>d<01><00>t<00><00>5}t j|dd<03><00>}t dddd<06><07><00>}|<02>|g<01><00>|<02>d<03><00>}tt<00><00>|_ |<02>
2026-08-28 22:56:35 +08:00
|<04><00>t|tdd<02> <09><00>td
2026-09-01 14:28:49 +08:00
<EFBFBD><00> <0B><00>t<00><00>t<00><00><00> <0C><00>}t||td <0A><0E><00>dd<08><00>}|<00>|j<00><00>ddd<00><00>dS#1swxYwYdS)N<>r<>rnrRrzr<><00>r<>r-r<>r<>r<><00>r<>r<>c<01><00>dS)NTr4r<>s r"r<>zFTrendTests.test_loss_tier_boundary_does_not_overflow.<locals>.<lambda><3E><00><00><00>4<EFBFBD>r$r<><00>rHr<>r<>r rY<00>r<>i<><69><EFBFBD><EFBFBD>)rFr*rrrr<>rr<><00>get<65> added_num<75>setrrrrrrd<00> submitted)r!r<>rHr<>rr<><00>decisions r"<00>)test_loss_tier_boundary_does_not_overflowz4TrendTests.test_loss_tier_boundary_does_not_overflow<6F>sy<00><00> <0C><18><18><13>Z<EFBFBD><1F><1F>!<21>,<2C>,<2C>,<2C> <1F> !<21> !<21> 1<>Y<EFBFBD><19>&<26>y<EFBFBD>'<27>3<EFBFBD>?<3F>?<3F>E<EFBFBD>#<23>s<EFBFBD>3<EFBFBD>2<EFBFBD>\`<60>a<>a<>a<>H<EFBFBD> <11> <20> <20>(<28><1A> ,<2C> ,<2C> ,<2C><18>9<EFBFBD>9<EFBFBD>S<EFBFBD>><3E>><3E>D<EFBFBD> <20><1A>_<EFBFBD>_<EFBFBD>D<EFBFBD>N<EFBFBD> <11>I<EFBFBD>I<EFBFBD>d<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>%<25><1B><1F>4<EFBFBD>RY<52>)Z<>)Z<>)Z<>)<29>4G<34>4G<34>H<>H<>H<>QZ<51>Q\<5C>Q\<5C>!<21>|<7C>|<7C><0E><0E><0E>G<EFBFBD>
2026-08-29 00:44:41 +08:00
#<23>7<EFBFBD>H<EFBFBD>d<EFBFBD>a<EFBFBD>6H<36>6H<36>6H<36>#<23>t<EFBFBD>T<>T<>H<EFBFBD> <10> <1C> <1C>X<EFBFBD>/<2F> 0<> 0<> 0<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<> 1<><31><EFBFBD><EFBFBD> 1<> 1<> 1<> 1<> 1<> 1s<00>DE <03> E<07>Ec <01>0<00>t<00><00>5}tj|dd<02><00>}tdddd<05><06><00>}|<02>|g<01><00>t |t dd<01><08><00>t d <09><00>
<EFBFBD><00>t <00><00>t<00><00><00> <0B><00>}t||td <0C> <0A><00>dd<07><00>}|<00>
d|j <00><00>|<02> d<02><00>}d|_ |<02>|<06><00>t||td<11> <0A><00>dd<07><00>}|<00>|j d<13><00>t||td<14> <0A><00>dd<07><00>}|<00>
2026-09-01 14:28:49 +08:00
d|j <00><00>ddd<00><00>dS#1swxYwYdS)Nr<4E>rnrRrzr<>r<>r<>r<>c<01><00>dSr<>r4r<>s r"r<>z9TrendTests.test_loss_tiers_zero_and_one.<locals>.<lambda><3E>r<>r$r<>r<><00>r<>i<><69><EFBFBD><EFBFBD>u等待rE<00>i<><69><EFBFBD><EFBFBD>ror<>i<><69><EFBFBD><EFBFBD>)rrr<>rr<>rrrrrrg<00>messager<65>r<>r<>rF) r!r<>rHr<>r<><00>firstr<00>before_second_tier<65>seconds r"<00>test_loss_tiers_zero_and_onez'TrendTests.test_loss_tiers_zero_and_one<6E>s<><00><00> <1F> !<21> !<21> 4<>Y<EFBFBD><19>&<26>y<EFBFBD>'<27>3<EFBFBD>?<3F>?<3F>E<EFBFBD>#<23>s<EFBFBD>3<EFBFBD>2<EFBFBD>\`<60>a<>a<>a<>H<EFBFBD> <11> <20> <20>(<28><1A> ,<2C> ,<2C> ,<2C>%<25><1B><1F>4<EFBFBD>RY<52>)Z<>)Z<>)Z<>)<29>4H<34>4H<34>I<>I<>I<> <20>{<7B>{<7B>:<3A><<3C><<3C><0E><0E><0E>G<EFBFBD>
2026-08-30 15:29:21 +08:00
 <20><07><18>4<EFBFBD>1<EFBFBD>3E<33>3E<33>3E<33>s<EFBFBD>D<EFBFBD>Q<>Q<>E<EFBFBD> <10>M<EFBFBD>M<EFBFBD>(<28>E<EFBFBD>M<EFBFBD> 2<> 2<> 2<><18>9<EFBFBD>9<EFBFBD>S<EFBFBD>><3E>><3E>D<EFBFBD><1E>D<EFBFBD>N<EFBFBD> <11>I<EFBFBD>I<EFBFBD>d<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>!,<2C>W<EFBFBD>h<EFBFBD><04>PQ<50>@R<>@R<>@R<>TW<54>Y]<5D>!^<5E>!^<5E> <1E> <10> <1C> <1C>/<2F>7<><12> <<3C> <<3C> <<3C> <20><17>(<28>D<EFBFBD>A<EFBFBD>4F<34>4F<34>4F<34><03>T<EFBFBD>R<>R<>F<EFBFBD> <10>M<EFBFBD>M<EFBFBD>(<28>F<EFBFBD>N<EFBFBD> 3<> 3<> 3<># 4<> 4<> 4<> 4<> 4<> 4<> 4<> 4<> 4<> 4<> 4<> 4<><34><EFBFBD><EFBFBD> 4<> 4<> 4<> 4<> 4<> 4s<00>E/F <03> F<07>Fc<01><><00>t<00><00>5}tj|dd<02><00>}tddd<04><05><00>}|<02>t ddd<07><08><00><00><00>t d dd
d d dd d<06><00>}t ddd
d ddd d<06><00>}|<02>|g||g<02><00>|<00>|<02> d<02><00>j
d<07><00>|<02>|g|t ddd
d d dd d<06><00>g<02><00>|<00>|<02> d<02><00>j
2026-09-01 14:28:49 +08:00
t<00><00>ddd<00><00>dS#1swxYwYdS)Nr<4E>rnrRrz<00>r<>r-r<>zlocal-1<>ING)<02> base_order_id<69> base_status<75>1rUrort<00>2<00>2<>50) rrr<>rr<>rr<00> reconcilerFr<>r<>r)r!r<>rHr<>rq<00>
processings r"<00>@test_reconcile_split_orders_complete_only_when_all_are_status_56zKTrendTests.test_reconcile_split_orders_complete_only_when_all_are_status_56<35>s<><00><00> <1F> !<21> !<21> D<01>Y<EFBFBD><19>&<26>y<EFBFBD>'<27>3<EFBFBD>?<3F>?<3F>E<EFBFBD>#<23>s<EFBFBD>3<EFBFBD>2<EFBFBD>N<>N<>N<>H<EFBFBD> <11>I<EFBFBD>I<EFBFBD>i<EFBFBD><03>9<EFBFBD>%<25>P<>P<>P<> Q<> Q<> Q<>!<21>#<23>s<EFBFBD>E<EFBFBD>2<EFBFBD>t<EFBFBD>T<EFBFBD>2<EFBFBD>y<EFBFBD>Q<>Q<>I<EFBFBD>"<22>3<EFBFBD><03>U<EFBFBD>B<EFBFBD><04>d<EFBFBD>B<EFBFBD> <09>R<>R<>J<EFBFBD> <11>O<EFBFBD>O<EFBFBD>X<EFBFBD>J<EFBFBD><19>J<EFBFBD>(?<3F> @<40> @<40> @<40> <10> <1C> <1C>U<EFBFBD>Y<EFBFBD>Y<EFBFBD>s<EFBFBD>^<5E>^<5E>7<><15> ?<3F> ?<3F> ?<3F> <11>O<EFBFBD>O<EFBFBD><19>
2026-08-31 15:33:39 +08:00
<EFBFBD><1A>I<EFBFBD>c<EFBFBD>3<EFBFBD><05>r<EFBFBD>4<EFBFBD><14>r<EFBFBD>9<EFBFBD>U<>U<>V<> <0E> <0E> <0E> <11> <1C> <1C>U<EFBFBD>Y<EFBFBD>Y<EFBFBD>s<EFBFBD>^<5E>^<5E>7<><19> C<> C<> C<> D<01> D<01> D<01> D<01> D<01> D<01> D<01> D<01> D<01> D<01> D<01> D<01><><EFBFBD><EFBFBD> D<01> D<01> D<01> D<01> D<01> Ds<00>D!D=<03>=E<07>Ec <01><><00>td<01>d<02>d<03>d<04>d<05><00><06><00>}td<07><08><00>5}t|td <09>
2026-09-01 14:28:49 +08:00
<EFBFBD><00>td <0B> <0C><00>td <0A>g<00><0E><00>tdgd<10><00><11><00>|<02><12><00>}tdd<14><15><00>5tdd<14><15><00>5td<17><00>5}td<18><00>5}t|g<00><00>ddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwY|<04><00><00>|<05><00><00>dS)Nc<01>$<00>tdd<02><03><00>S)N<>'rz<00><02>total<61> available<6C>r r4r$r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00>6<EFBFBD><05><12><<3C><<3C><<3C>r$c<01>.<00>dgtddd<03><04><00>gfS)NrnrRrzr<>)rr4r$r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s <00><00><03>u<EFBFBD>|<7C>s<EFBFBD>3<EFBFBD>[]<5D>'^<5E>'^<5E>'^<5E>&_<>`<60>r$c<01><00>gSrr4<00>r:s r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00><02>r$c<01><00>gSrr4r4r$r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00>"<22>r$c<01>&<00>dtd<02><03><00>iS)Nrn<00> r<><00>r<00><01>_codess r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00>c<EFBFBD>4<EFBFBD>2<EFBFBD>+><3E>+><3E>+><3E>%?<3F>r$<00><05>assets<74> positionsr;<00>deals<6C> full_tickr<6B><00><01> max_workers皙<73><E79A99><EFBFBD><EFBFBD><EFBFBD>?<3F><01>min_cash_ratio<69>http://example<6C><01>api_hostc<01><00>dSrr4)<01>_clients r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00>t<EFBFBD>r$)r<>r<>rnc<01><00>dSrr4r<>s r"r<>zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00>T<EFBFBD>r$)<02>codesr<73>)rYr<><00>
global_cfgr rH<00>executor<6F> strategy.trend.boot.trading_timeT<65><01> return_value<75>%strategy.trend.boot.market_allow_open<65>strategy.trend.boot.open_signal<61>$strategy.trend.boot.manage_positions)rrr r<00>assert_not_called<65>assert_called_once)r!rYr<>r<><00> open_mock<63> manage_mocks r"<00>,test_low_cash_still_runs_position_managementz7TrendTests.test_low_cash_still_runs_position_management<6E>s<><00><00> <20><<3C><<3C>`<60>`<60>2<>2<><1C>*<2A>?<3F>?<3F> 
2026-08-30 14:46:34 +08:00
<EFBFBD>
<EFBFBD>
2026-08-31 15:33:39 +08:00
<EFBFBD><06> <20>A<EFBFBD> .<2E> .<2E> .<2E> %<25>(<28>%<25><1D>+<2B>3<EFBFBD>?<3F>?<3F>?<3F>*<2A>4D<34>E<>E<>E<>&<26>/C<>/C<>"<22>M<>M<>M<>%<25><1E>%<25>1<>1<><12><12><12>"<22>
<0E>
<0E>
<0E>G<EFBFBD><16>8<>t<EFBFBD>L<>L<>L<> %<25> %<25><15>=<3D>D<EFBFBD>Q<>Q<>Q<> %<25> %<25><16>7<>8<>8<> %<25>=F<01><15><<3C>=<3D>=<3D>  %<25>BM<01><17><07><12>$<24>$<24>$<24>  %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25><><EFBFBD><EFBFBD> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25><><EFBFBD><EFBFBD> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25><><EFBFBD><EFBFBD> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25><><EFBFBD><EFBFBD> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25> %<25><><EFBFBD><EFBFBD> %<25> %<25> %<25> %<25>& <12>#<23>#<23>%<25>%<25>%<25><13>&<26>&<26>(<28>(<28>(<28>(<28>(s<><00>A$D9<03>D"<05> D <07>0C4 <09>C <0B> C4 <09>C!<0F>!C4 <09>$C!<0F>%C4 <09>( D <07>4C8 <0A>8D <07>;C8 <0A><D <07>? D"<05> D <0B>D"<05>D <0B>D"<05> D9<03>"D& <09>&D9<03>)D& <09>*D9<03>9D=<07>D=c <01><00>t<00><00>5}tj|dd<02><00>}|<02>t dddt
2026-08-30 14:46:34 +08:00
<00><05><00><00><00>|<02><00><00>td<06>d<07>d<08>d <09>d
2026-09-01 14:28:49 +08:00
<EFBFBD><00> <0B><00>}tdd <0C> <0A><00>}td<0E><0F><00>5}t|td<10><11><00>td<12><13><00>t<00><00>|td<14><00><15><00>td<16><00><15><00>|<05><17><00>}tdd<19><1A><00>5tdd<19><1A><00>5td<1C><00>5}td<1D><00>5t||g<01><00>ddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwY|<07> <00><00>|<00> |jg<00><00>ddd<00><00>dS#1swxYwYdS)Nr<4E>rnz missing-orderrR)r<><00>base_qtyr<79>c<01>$<00>tdd<02><03><00>S)Nr<4E>r<>r<>r<>r4r$r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>s<00><00>v<EFBFBD>E<EFBFBD>T<EFBFBD>B<>B<>B<>r$c<01>
<00>ggfSrr4r4r$r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>s
<00><00>2<EFBFBD>r<EFBFBD>(<28>r$c<01><00>gSrr4r<>s r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>s<00><00>B<EFBFBD>r$c<01><00>gSrr4r4r$r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>s<00><00>b<EFBFBD>r$c<01>&<00>dtd<02><03><00>iS)Nrnrzr<>r<>r<>s r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>s<00><00>#<23>t<EFBFBD>r<EFBFBD>/B<>/B<>/B<>)C<>r$r<>rT)r,<00>
signal_keyr<EFBFBD>r<>r<>r<>r<>r<>c<01><00>dSrr4r<>s r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>s<00><00>D<EFBFBD>r$r<>c<01><00>dSrr4r<>s r"r<>zJTrendTests.test_state_without_broker_order_allows_reopen.<locals>.<lambda><3E>r<>r$)rYr<>r<>r rHr<>r<>r<>r<>Tr<54>r<>r<>r<>)rrr<>r<>rr<00>saverrrr rrrFr<>)r!r<>rHrY<00>signalr<6C>r<>rs r"<00>-test_state_without_broker_order_allows_reopenz8TrendTests.test_state_without_broker_order_allows_reopen<65>s<><00><00> <1F> !<21> !<21>% .<2E>Y<EFBFBD><19>&<26>y<EFBFBD>'<27>3<EFBFBD>?<3F>?<3F>E<EFBFBD> <11>I<EFBFBD>I<EFBFBD>i<EFBFBD><13>-<2D><1C>*<2A> <0E><0E><0E> <0F> <0F> <0F> <12>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>L<EFBFBD>$<24>B<>B<>*<2A>*<2A>"6<>"6<> <20>j<EFBFBD>C<>C<> <0E><0E><0E>F<EFBFBD>%<25>#<23>)<29>D<>D<>D<>F<EFBFBD>#<23><01>2<>2<>2<> /<2F>h<EFBFBD>)<29>!<21> /<2F>s<EFBFBD> C<> C<> C<>.<2E>8H<38>I<>I<>I<>$<24>;<3B>;<3B><1F>.<2E>6H<36>6H<36>I<>I<>I<>-<2D>5G<35>5G<35>H<>H<>H<>%<25> <12> <12> <12><07><1A><<3C>4<EFBFBD>P<>P<>P<>/<2F>/<2F><19>A<>PT<50>U<>U<>U<>/<2F>/<2F><1A>;<3B><<3C><<3C>/<2F>AJ<01><19>@<40>A<>A<> /<2F>/<2F> <1C>G<EFBFBD>f<EFBFBD>X<EFBFBD>.<2E>.<2E>.<2E> /<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><><EFBFBD><EFBFBD>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><><EFBFBD><EFBFBD>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><><EFBFBD><EFBFBD>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><><EFBFBD><EFBFBD>/<2F>/<2F>/<2F>/<2F> /<2F> /<2F> /<2F> /<2F> /<2F> /<2F> /<2F> /<2F> /<2F> /<2F> /<2F><><EFBFBD><EFBFBD> /<2F> /<2F> /<2F> /<2F>& <16> (<28> (<28> *<2A> *<2A> *<2A> <10> <1C> <1C>U<EFBFBD>[<5B>"<22> -<2D> -<2D> -<2D>K% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E><><EFBFBD><EFBFBD>% .<2E>% .<2E>% .<2E>% .<2E>% .<2E>% .s<><00>BH<03>A/F:<05>F#<07> F <09>0E5 <0B>E <0A> E5 <0B>E"<11>"E5 <0B>%E"<11>&E5 <0B>) F <09>5E9<0F>9F <09><E9<0F>=F <09> F#<07> F <0A>F#<07>F <0A>F#<07> F:<05>#F' <0B>'F:<05>*F' <0B>+F:<05>. H<03>:F> <09>>H<03>F> <09>2H<03>H<07>HN)r1r2r3rNr\rir<>r<>r<>r<>r<>r<>rrr4r$r"rCrC,s<><00><00><00><00><00><00>P<01>P<01>P<01>7<>7<>7<> +<2B> +<2B> +<2B>6<>6<>6<> d<01>d<01>d<01>* 6<> 6<> 6<>D1<>1<>1<>"4<>4<>4<>(D<01>D<01>D<01>")<29>)<29>)<29><&.<2E>&.<2E>&.<2E>&.<2E>&.r$rC<00>__main__)+<2B>
2026-08-31 15:33:39 +08:00
__future__r<00>unittest<73>concurrent.futuresrrr<00>tempfiler<00>typesr<00> unittest.mockr <00>libs.grid_take_profitr
2026-09-01 14:28:49 +08:00
r <00>sdkr r rrr<00>strategy.trend.orderrr<00>strategy.trend.positionsrrr<00>strategy.trend.bootr<00>strategy.trend.staterrrrrr6r?<00>TestCaserCr1<00>mainr4r$r"<00><module>r!s<00><01>"<22>"<22>"<22>"<22>"<22>"<22><0F><0F><0F><0F>1<>1<>1<>1<>1<>1<>(<28>(<28>(<28>(<28>(<28>(<28>(<28>(<28>'<27>'<27>'<27>'<27>'<27>'<27>!<21>!<21>!<21>!<21>!<21>!<21><1F><1F><1F><1F><1F><1F>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>?<3F>=<3D>=<3D>=<3D>=<3D>=<3D>=<3D>=<3D>=<3D>N<>N<>N<>N<>N<>N<>N<>N<>N<>N<>'<27>'<27>'<27>'<27>'<27>'<27>L<>L<>L<>L<>L<>L<>L<>L<>L<>L<>L<>L<>P<01>P<01>P<01>P<01>P<01>P<01>P<01>P<01> '<27> '<27> '<27> '<27> '<27> '<27> '<27> '<27>J<01>J<01>J<01>J<01>J<01>J<01>J<01>J<01>
].<2E>].<2E>].<2E>].<2E>].<2E><18>"<22>].<2E>].<2E>].<2E>@ <0C>z<EFBFBD><19><19><11>H<EFBFBD>M<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD><1A>r$