File tree Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -1005,6 +1005,12 @@ def _process_orders(self):
10051005                if  order .sl  or  order .tp :
10061006                    if  is_market_order :
10071007                        reprocess_orders  =  True 
1008+                     # Order.stop and TP hit within the same bar, but SL wasn't. This case 
1009+                     # is not ambiguous, because stop and TP go in the same price direction. 
1010+                     elif  stop_price  and  not  order .limit  and  order .tp  and  (
1011+                             (order .is_long  and  order .tp  <=  high  and  (order .sl  or  - np .inf ) <  low ) or 
1012+                             (order .is_short  and  order .tp  >=  low  and  (order .sl  or  np .inf ) >  high )):
1013+                         reprocess_orders  =  True 
10081014                    elif  (low  <=  (order .sl  or  - np .inf ) <=  high  or 
10091015                          low  <=  (order .tp  or  - np .inf ) <=  high ):
10101016                        warnings .warn (
Original file line number Diff line number Diff line change @@ -1106,3 +1106,14 @@ def next(self):
11061106
11071107        trades  =  Backtest (SHORT_DATA , S ).run ()._trades 
11081108        self .assertEqual (trades ['ExitPrice' ].iloc [0 ], 104.95 )
1109+ 
1110+     def  test_stop_entry_and_tp_in_same_bar (self ):
1111+         class  S (_S ):
1112+             def  next (self ):
1113+                 i  =  len (self .data .index )
1114+                 if  i  ==  3 :
1115+                     self .sell (stop = 108 , tp = 105 , sl = 113 )
1116+ 
1117+         trades  =  Backtest (SHORT_DATA , S ).run ()._trades 
1118+         self .assertEqual (trades ['ExitBar' ].iloc [0 ], 3 )
1119+         self .assertEqual (trades ['ExitPrice' ].iloc [0 ], 105 )
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You canβt perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments