@@ -98,61 +98,68 @@ public void ApplySplitWorksAsExpected()
9898 using var backtestingBrokerage = new BacktestingBrokerage ( algorithm ) ;
9999 transactionHandler . Initialize ( algorithm , backtestingBrokerage , new TestResultHandler ( Console . WriteLine ) ) ;
100100
101- algorithm . Transactions . SetOrderProcessor ( transactionHandler ) ;
102- algorithm . AddEquity ( "IBM" ) ;
103- var tickets = new List < OrderTicket > ( ) ;
104- foreach ( var type in orderTypes )
101+ try
105102 {
106- SubmitOrderRequest orderRequest = null ;
107- switch ( type )
103+ algorithm . Transactions . SetOrderProcessor ( transactionHandler ) ;
104+ algorithm . AddEquity ( "IBM" ) ;
105+ var tickets = new List < OrderTicket > ( ) ;
106+ foreach ( var type in orderTypes )
108107 {
109- case OrderType . Limit :
110- orderRequest = new SubmitOrderRequest ( OrderType . Limit , SecurityType . Equity , Symbols . IBM , 100 , 0 , limitPrice : 8 , 0 ,
111- DateTime . UtcNow , "" ) ;
112- break ;
113- case OrderType . StopLimit :
114- orderRequest = new SubmitOrderRequest ( OrderType . StopLimit , SecurityType . Equity , Symbols . IBM , 100 , stopPrice : 10 , 0 , 0 ,
115- DateTime . UtcNow , "" ) ;
116- break ;
117- case OrderType . LimitIfTouched :
118- orderRequest = new SubmitOrderRequest ( OrderType . LimitIfTouched , SecurityType . Equity , Symbols . IBM , 100 , 0 , limitPrice : 14 ,
119- triggerPrice : 12 , DateTime . UtcNow , "" ) ;
120- break ;
121- case OrderType . TrailingStop :
122- orderRequest = new SubmitOrderRequest ( OrderType . TrailingStop , SecurityType . Equity , Symbols . IBM , 100 , stopPrice : 10 , 0 , 0 ,
123- trailingAmount : 0.5m , trailingAsPercentage : false , DateTime . UtcNow , "" ) ;
124- break ;
108+ SubmitOrderRequest orderRequest = null ;
109+ switch ( type )
110+ {
111+ case OrderType . Limit :
112+ orderRequest = new SubmitOrderRequest ( OrderType . Limit , SecurityType . Equity , Symbols . IBM , 100 , 0 , limitPrice : 8 , 0 ,
113+ DateTime . UtcNow , "" ) ;
114+ break ;
115+ case OrderType . StopLimit :
116+ orderRequest = new SubmitOrderRequest ( OrderType . StopLimit , SecurityType . Equity , Symbols . IBM , 100 , stopPrice : 10 , 0 , 0 ,
117+ DateTime . UtcNow , "" ) ;
118+ break ;
119+ case OrderType . LimitIfTouched :
120+ orderRequest = new SubmitOrderRequest ( OrderType . LimitIfTouched , SecurityType . Equity , Symbols . IBM , 100 , 0 , limitPrice : 14 ,
121+ triggerPrice : 12 , DateTime . UtcNow , "" ) ;
122+ break ;
123+ case OrderType . TrailingStop :
124+ orderRequest = new SubmitOrderRequest ( OrderType . TrailingStop , SecurityType . Equity , Symbols . IBM , 100 , stopPrice : 10 , 0 , 0 ,
125+ trailingAmount : 0.5m , trailingAsPercentage : false , DateTime . UtcNow , "" ) ;
126+ break ;
127+ }
128+ algorithm . Transactions . AddOrder ( orderRequest ) ;
129+ var ticket = new OrderTicket ( algorithm . Transactions , orderRequest ) ;
130+ tickets . Add ( ticket ) ;
125131 }
126- algorithm . Transactions . AddOrder ( orderRequest ) ;
127- var ticket = new OrderTicket ( algorithm . Transactions , orderRequest ) ;
128- tickets . Add ( ticket ) ;
129- }
130132
131- var split = new Split ( Symbols . IBM , DateTime . UtcNow , 1 , 0.5m , SplitType . SplitOccurred ) ;
132- _defaultBrokerageModel . ApplySplit ( tickets , split ) ;
133- transactionHandler . ProcessSynchronousEvents ( ) ;
134- foreach ( var order in algorithm . Transactions . GetOrders ( ) )
135- {
136- Assert . AreEqual ( 200 , order . Quantity ) ;
137- var orderType = order . Type ;
138- switch ( orderType )
133+ var split = new Split ( Symbols . IBM , DateTime . UtcNow , 1 , 0.5m , SplitType . SplitOccurred ) ;
134+ _defaultBrokerageModel . ApplySplit ( tickets , split ) ;
135+ transactionHandler . ProcessSynchronousEvents ( ) ;
136+ foreach ( var order in algorithm . Transactions . GetOrders ( ) )
139137 {
140- case OrderType . Limit :
141- Assert . AreEqual ( 4 , order . GetPropertyValue ( "LimitPrice" ) ) ;
142- break ;
143- case OrderType . StopLimit :
144- Assert . AreEqual ( 5 , order . GetPropertyValue ( "StopPrice" ) ) ;
145- break ;
146- case OrderType . LimitIfTouched :
147- Assert . AreEqual ( 6 , order . GetPropertyValue ( "TriggerPrice" ) ) ;
148- Assert . AreEqual ( 7 , order . GetPropertyValue ( "LimitPrice" ) ) ;
149- break ;
150- case OrderType . TrailingStop :
151- Assert . AreEqual ( 5 , order . GetPropertyValue ( "StopPrice" ) ) ;
152- Assert . AreEqual ( 0.25m , order . GetPropertyValue ( "TrailingAmount" ) ) ;
153- break ;
138+ Assert . AreEqual ( 200 , order . Quantity ) ;
139+ var orderType = order . Type ;
140+ switch ( orderType )
141+ {
142+ case OrderType . Limit :
143+ Assert . AreEqual ( 4 , order . GetPropertyValue ( "LimitPrice" ) ) ;
144+ break ;
145+ case OrderType . StopLimit :
146+ Assert . AreEqual ( 5 , order . GetPropertyValue ( "StopPrice" ) ) ;
147+ break ;
148+ case OrderType . LimitIfTouched :
149+ Assert . AreEqual ( 6 , order . GetPropertyValue ( "TriggerPrice" ) ) ;
150+ Assert . AreEqual ( 7 , order . GetPropertyValue ( "LimitPrice" ) ) ;
151+ break ;
152+ case OrderType . TrailingStop :
153+ Assert . AreEqual ( 5 , order . GetPropertyValue ( "StopPrice" ) ) ;
154+ Assert . AreEqual ( 0.25m , order . GetPropertyValue ( "TrailingAmount" ) ) ;
155+ break ;
156+ }
154157 }
155158 }
159+ finally
160+ {
161+ transactionHandler . Exit ( ) ;
162+ }
156163 }
157164
158165
@@ -167,25 +174,32 @@ public void AppliesSplitOnlyWhenTrailingStopOrderTrailingAmountIsNotPercentage([
167174 using var backtestingBrokerage = new BacktestingBrokerage ( algorithm ) ;
168175 transactionHandler . Initialize ( algorithm , backtestingBrokerage , new TestResultHandler ( Console . WriteLine ) ) ;
169176
170- algorithm . Transactions . SetOrderProcessor ( transactionHandler ) ;
171- algorithm . AddEquity ( "IBM" ) ;
177+ try
178+ {
179+ algorithm . Transactions . SetOrderProcessor ( transactionHandler ) ;
180+ algorithm . AddEquity ( "IBM" ) ;
172181
173- var tickets = new List < OrderTicket > ( ) ;
174- var orderTime = new DateTime ( 2023 , 07 , 21 , 12 , 0 , 0 ) ;
175- var orderRequest = new SubmitOrderRequest ( OrderType . TrailingStop , SecurityType . Equity , Symbols . IBM , 100 , stopPrice : 10 , 0 , 0 ,
176- trailingAmount : 0.1m , trailingAsPercentage , orderTime , "" ) ;
177- algorithm . Transactions . AddOrder ( orderRequest ) ;
178- var ticket = new OrderTicket ( algorithm . Transactions , orderRequest ) ;
179- tickets . Add ( ticket ) ;
182+ var tickets = new List < OrderTicket > ( ) ;
183+ var orderTime = new DateTime ( 2023 , 07 , 21 , 12 , 0 , 0 ) ;
184+ var orderRequest = new SubmitOrderRequest ( OrderType . TrailingStop , SecurityType . Equity , Symbols . IBM , 100 , stopPrice : 10 , 0 , 0 ,
185+ trailingAmount : 0.1m , trailingAsPercentage , orderTime , "" ) ;
186+ algorithm . Transactions . AddOrder ( orderRequest ) ;
187+ var ticket = new OrderTicket ( algorithm . Transactions , orderRequest ) ;
188+ tickets . Add ( ticket ) ;
180189
181- var split = new Split ( Symbols . IBM , orderTime , 1 , 0.5m , SplitType . SplitOccurred ) ;
182- _defaultBrokerageModel . ApplySplit ( tickets , split ) ;
183- transactionHandler . ProcessSynchronousEvents ( ) ;
190+ var split = new Split ( Symbols . IBM , orderTime , 1 , 0.5m , SplitType . SplitOccurred ) ;
191+ _defaultBrokerageModel . ApplySplit ( tickets , split ) ;
192+ transactionHandler . ProcessSynchronousEvents ( ) ;
184193
185- var order = algorithm . Transactions . GetOrders ( ) . Single ( ) ;
194+ var order = algorithm . Transactions . GetOrders ( ) . Single ( ) ;
186195
187- Assert . AreEqual ( 5 , order . GetPropertyValue ( "StopPrice" , Flags . Instance | Flags . Public ) ) ;
188- Assert . AreEqual ( trailingAsPercentage ? 0.1m : 0.05m , order . GetPropertyValue ( "TrailingAmount" ) ) ;
196+ Assert . AreEqual ( 5 , order . GetPropertyValue ( "StopPrice" , Flags . Instance | Flags . Public ) ) ;
197+ Assert . AreEqual ( trailingAsPercentage ? 0.1m : 0.05m , order . GetPropertyValue ( "TrailingAmount" ) ) ;
198+ }
199+ finally
200+ {
201+ transactionHandler . Exit ( ) ;
202+ }
189203 }
190204
191205
0 commit comments