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

64 lines
20 KiB
Plaintext
Raw Normal View History

2026-08-28 22:56:35 +08:00
<EFBFBD>
2026-08-30 15:29:21 +08:00
<00>ғj<D293>%<00><01>F<00>ddlmZddlZddlmZmZddlmZddlmZddl m
2026-08-28 22:56:35 +08:00
Z
2026-08-30 14:46:34 +08:00
ddl m Z m Z ddlmZmZmZmZdd lmZmZdd
lmZmZmZdd lmZdd lmZmZmZm Z Gd <0A>d<0E><00>Z!Gd<0F>d<10><00>Z"Gd<11>dej#<00><00>Z$e%dkrej&<00><00>dSdS)<14>)<01> annotationsN)<02>datetime<6D> timedelta)<01>TemporaryDirectory)<01>SimpleNamespace)<01>patch)<02> GridState<74>GridTrailingTracker)<04>Assets<74> OrderItem<65> PositionItem<65>Tick)<02> OrderBook<6F>PlaceOrderRequest)<03>
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>
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!r.<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)rrs 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_datas
<00><00><13>{<7B>r"c<01>:<00>|j<00>|<01><00>dSr)r6r')rr-s r <00> cancel_by_idzFakeOrderClient.cancel_by_id"s<00><00> <0C> <0A><1C><1C>X<EFBFBD>&<26>&<26>&<26>&<26>&r"N)r/r0r1r!r9r;r2r"r r4r4sA<00><00><00><00><00><00><1B><1B><1B><1B><1B><1B>'<27>'<27>'<27>'<27>'r"r4c<01>D<00>eZdZd<01>Zd<02>Zd<03>Zd<04>Zd<05>Zd<06>Zd<07>Z d<08>Z
d <09>Z d
S) <0B>
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 <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_order0so<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-08-30 15:29:21 +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>tj<00><00>td<01><02><00>z
2026-08-30 14:46:34 +08:00
}tddddd|d<08><00>td d
2026-08-30 15:29:21 +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>ArO<00><00>49rL<00> completed<65>B<>SELL<4C>56r6<00>C<>54<35>failed<65>D<>57<35>
)<01>cancel_timeout_secc<01><00>h|] }|j<00><02>
Sr2)<01>id)<02>.0<EFBFBD>items r <00> <setcomp>zZTrendTests.test_refresh_tracks_active_and_completed_and_cancels_expired.<locals>.<setcomp>Ds<00><00>8<>8<>8<>d<EFBFBD>$<24>'<27>8<>8<>8r")
r<00>nowrr r4r<00>refreshr@<00>datar6)r<00>oldrrSrTs r <00><test_refresh_tracks_active_and_completed_and_cancels_expiredzGTrendTests.test_refresh_tracks_active_and_completed_and_cancels_expired7s<><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
2026-08-30 14:46:34 +08:00
<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<>trendr[rKrLrg<00><>)<05>
stock_coder+<00>can_use_volume<6D>
2026-08-30 15:29:21 +08:00
open_price<EFBFBD> market_valuec<01><00>dSrr2<00><01>_codes r <00><lambda>zQTrendTests.test_position_dataclasses_execute_without_type_error.<locals>.<lambda>Q<00><00><00><04>r"<00><01>forgetc<01><00>dS<00>NFr2<00><01>_argss r r}zQTrendTests.test_position_dataclasses_execute_without_type_error.<locals>.<lambda>R<00><00><00>5<EFBFBD>r"c<01><00>dSrr2r{s r r}zQTrendTests.test_position_dataclasses_execute_without_type_error.<locals>.<lambda>Rs<00><00>_c<5F>r")<02> triggeredr<64>r?F<><46>)<06>
2026-08-30 14:46:34 +08:00
account_id<EFBFBD>excluded_codes<65> grid_step_pct<63>enable_loss_add_position<6F> buy_value<75>strategy)rSrBr<00>
2026-08-28 22:56:35 +08:00
open_watch<EFBFBD> add_watch<63>profit_tracker<65> account_cfgg333333$@<40><01>
2026-08-30 14:46:34 +08:00
last_priceT) rr<00> for_strategyr <00>sync_positionsrrrr
rr)r<00> directoryrB<00>position<6F>runtimes r <00>4test_position_dataclasses_execute_without_type_errorz?TrendTests.test_position_dataclasses_execute_without_type_errorGss<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>
<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>|<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>
|<04><00>t|tdd<02> <09><00>td
2026-08-30 15:29:21 +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<>rtr[rLrgru<00>rvr+rxryr<><00>r<>r<>c<01><00>dS)NTr2r<>s r r}zFTrendTests.test_loss_tier_boundary_does_not_overflow.<locals>.<lambda>gs<00><00>4<EFBFBD>r"<00>r<><00>rBr<>r<>rrS<00>r<>i<><69><EFBFBD><EFBFBD>)r@r(rrrr<>r r<><00>get<65> added_num<75>setrrrrr<00> assertFalse<73> submitted)rr<>rBr<>rlr<><00>decisions r <00>)test_loss_tier_boundary_does_not_overflowz4TrendTests.test_loss_tier_boundary_does_not_overflow\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-08-30 15:29:21 +08:00
d|j <00><00>ddd<00><00>dS#1swxYwYdS)Nrtr[rLrgrur<>r<>r<>c<01><00>dSr<>r2r<>s r r}z9TrendTests.test_loss_tiers_zero_and_one.<locals>.<lambda>tr<>r"r<>r<><00>r<>i<><69><EFBFBD><EFBFBD>u等待r?<00>i<><69><EFBFBD><EFBFBD>r\r<>i<><69><EFBFBD><EFBFBD>)rrr<>r r<>rrrrr<00>assertIn<49>messager<65>r<>r<>r@) rr<>rBr<>r<><00>firstrl<00>before_second_tier<65>seconds r <00>test_loss_tiers_zero_and_onez'TrendTests.test_loss_tiers_zero_and_onems<><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>
 <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
t<00><00>ddd<00><00>dS#1swxYwYdS)Nrtr[rLrg<00>rvr+rxzlocal-1<>ING)<02> base_order_id<69> base_status<75>1rOr\ra<00>2<00>2<>50) rrr<>r r<>rr <00> reconciler@r<>r<>r)rr<>rBr<>r^<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>
<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>}t|td<07><08><00>td <09>
<EFBFBD><00>td <0B><00> <0C><00>td ggd<0E><00><0F><00><00><10><00>}tdd<12><13><00>5tdd<12><13><00>5td<15><00>5}td<16><00>5}t|g<00><00>ddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwY|<03><00><00>|<04><00><00>dS)Nc<01>$<00>tdd<02><03><00>S)N<>'rg<00><02>total<61> available<6C>r r2r"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)Nr[rLrgr<>)r r2r"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>gSrr2<00>r8s r r}zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00><02>r"c<01><00>gSrr2r2r"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)Nr[<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> positionsr9<00>deals<6C> full_tick皙<6B><E79A99><EFBFBD><EFBFBD><EFBFBD>?<3F><01>min_cash_ratio<69>http://example<6C><01>api_hostc<01><00>dSrr2)<01>_clients r r}zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00>4<EFBFBD>r")ror[c<01><00>dSrr2r<>s r r}zITrendTests.test_low_cash_still_runs_position_management.<locals>.<lambda><3E>s<00><00><14>r")<03>codes<65>unresolved_codesr<73>)rSr<><00>
global_cfgrrB<00> 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<00>assert_not_called<65>assert_called_once)rrSr<><00> open_mock<63> manage_mocks r <00>,test_low_cash_still_runs_position_managementz7TrendTests.test_low_cash_still_runs_position_management<6E>sw<00><00> <20><<3C><<3C>`<60>`<60>2<>2<><1C>*<2A>?<3F>?<3F> 
2026-08-30 14:46:34 +08:00
<EFBFBD>
<EFBFBD>
<EFBFBD><06>"<22><19>'<27>s<EFBFBD>;<3B>;<3B>;<3B>&<26>0@<40>A<>A<>A<>"<22>+?<3F>+?<3F>@<40>@<40>@<40>!<21><1A>e<EFBFBD>!#<23>-<2D>-<2D><0E><0E><0E>

<EFBFBD>

<EFBFBD>

<EFBFBD><07> <12>4<>4<EFBFBD> H<> H<> H<> !<21> !<21> <11>9<><04> M<> M<> M<> !<21> !<21> <12>3<> 4<> 4<> !<21>9B<01> <11>8<> 9<> 9<>  !<21>>I<01> <13>G<EFBFBD>R<EFBFBD> <20> <20> <20>  !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21><><EFBFBD><EFBFBD> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21><><EFBFBD><EFBFBD> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21><><EFBFBD><EFBFBD> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21> !<21><><EFBFBD><EFBFBD> !<21> !<21> !<21> !<21> <12>#<23>#<23>%<25>%<25>%<25><13>&<26>&<26>(<28>(<28>(<28>(<28>(s~<00><D<03>C9<05>C"<07>.C <09>? C"<07> C <0A>C"<07>C <0A>C"<07> C9<05>"C& <0B>&C9<05>)C& <0B>*C9<05>- D<03>9C= <09>=D<03>C= <09>D<03>D<07>Dc <01><><00>t<00><00>5}tj|dd<02><00>}|<02>t dddt
<00><05><00><00><00>|<02><00><00>td<06>d<07>d<08>d <09>d
2026-08-30 15:29:21 +08:00
<EFBFBD><00> <0B><00>}t|td <0C> <0A><00>td<0E><0F><00>t<00><00>|td<10><00><11><00>td<12><00><11><00><00><13><00>}tdd<14><15><00>}tdd<17><18><00>5tdd<17><18><00>5td<1A><00>5}td<1B><00>5t||g<01><00>ddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwYddd<00><00>n #1swxYwY|<06> <00><00>|<00> |<02> d<02><00><00><00>ddd<00><00>dS#1swxYwYdS)Nrtr[z missing-orderrL)r<><00>base_qtyr<79>c<01>$<00>tdd<02><03><00>S)Nr<4E>r<>r<>r<>r2r"r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>s<00><00>v<EFBFBD>E<EFBFBD>T<EFBFBD>B<>B<>B<>r"c<01>
<00>ggfSrr2r2r"r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>s
<00><00>2<EFBFBD>r<EFBFBD>(<28>r"c<01><00>gSrr2r<>s r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>s<00><00>B<EFBFBD>r"c<01><00>gSrr2r2r"r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>s<00><00>b<EFBFBD>r"c<01>&<00>dtd<02><03><00>iS)Nr[rgr<>r<>r<>s r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>s<00><00>#<23>t<EFBFBD>r<EFBFBD>/B<>/B<>/B<>)C<>r"r<>r<>r<>r<>r<>c<01><00>dSrr2r{s r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>r~r"rc<01><00>dSrr2r{s r r}zNTrendTests.test_unknown_order_without_position_blocks_reopen.<locals>.<lambda><3E>s<00><00>t<EFBFBD>r")rSr<>r<>rrBr<>r<>rN)r*<00>
signal_keyr<EFBFBD>Tr<54>r<>r<>r<>)rrr<>r<>rr<00>saverrrrr<>rP<00>has_unresolved_order)rr<>rBrSr<><00>signalr<6C>s r <00>1test_unknown_order_without_position_blocks_reopenz<TrendTests.test_unknown_order_without_position_blocks_reopen<65>sT<00><00> <1F> !<21> !<21># =<3D>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>&<26><1D>+<2B>3<EFBFBD>?<3F>?<3F>?<3F>*<2A>4D<34>E<>E<>E<> <20>{<7B>{<7B><1B>*<2A>2D<32>2D<32>E<>E<>E<>)<29>1C<31>1C<31>D<>D<>D<><0E><0E><0E>G<EFBFBD>%<25>#<23>)<29>D<>D<>D<>F<EFBFBD><15>8<>t<EFBFBD>L<>L<>L<> +<2B> +<2B><15>=<3D>D<EFBFBD>Q<>Q<>Q<> +<2B> +<2B><16>7<>8<>8<> +<2B>=F<01><15><<3C>=<3D>=<3D>  +<2B> +<2B> <18><07>&<26><18>*<2A>*<2A>*<2A>  +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B><><EFBFBD><EFBFBD> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B><><EFBFBD><EFBFBD> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B><><EFBFBD><EFBFBD> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B> +<2B><><EFBFBD><EFBFBD> +<2B> +<2B> +<2B> +<2B> <16> '<27> '<27> )<29> )<29> )<29> <10>O<EFBFBD>O<EFBFBD>E<EFBFBD>6<>6<>s<EFBFBD>;<3B>;<3B> <<3C> <<3C> <<3C>G# =<3D># =<3D># =<3D># =<3D># =<3D># =<3D># =<3D># =<3D># =<3D># =<3D># =<3D># =<3D><><EFBFBD><EFBFBD># =<3D># =<3D># =<3D># =<3D># =<3D># =s<><00>C-G%<03><F<05>E:<07>E# <09>.E <0B> E# <09> E<0F>E# <09>E<0F>E# <09> E:<07>#E' <0A>'E:<07>*E' <0A>+E:<07>. F<05>:E> <0B>>F<05>E> <0B>F<05> G%<03>F <09>G%<03>F <09>?G%<03>%G)<07>,G)N) r/r0r1rHrVrrr<>r<>r<>r<>r<>r<>r2r"r r=r=&s<><00><00><00><00><00><00>P<01>P<01>P<01>7<>7<>7<>6<>6<>6<> d<01>d<01>d<01>*1<>1<>1<>"4<>4<>4<>(D<01>D<01>D<01>")<29>)<29>)<29>:$=<3D>$=<3D>$=<3D>$=<3D>$=r"r=<00>__main__)'<27>
2026-08-30 14:46:34 +08:00
__future__r<00>unittestrr<00>tempfiler<00>typesr<00> unittest.mockr<00>libs.grid_take_profitr r
2026-08-30 15:29:21 +08:00
<00>sdkr r r r<00>strategy.trend.orderrr<00>strategy.trend.positionsrrr<00>strategy.trend.bootr<00>strategy.trend.staterrrrrr4<00>TestCaser=r/<00>mainr2r"r <00><module>rs<><00><01>"<22>"<22>"<22>"<22>"<22>"<22><0F><0F><0F><0F>(<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>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>5<>=<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>m=<3D>m=<3D>m=<3D>m=<3D>m=<3D><18>"<22>m=<3D>m=<3D>m=<3D>` <0C>z<EFBFBD><19><19><11>H<EFBFBD>M<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD>O<EFBFBD><1A>r"