11using Core . Enums ;
22using Core . Models ;
33using IBApi ;
4- using IBApi . Messages ;
5- using System . Collections . Generic ;
64using System . Linq ;
75
86namespace InteractiveBrokers . Mappers
@@ -15,21 +13,18 @@ public class Upstream
1513 /// <param name="orderId"></param>
1614 /// <param name="orderModel"></param>
1715 /// <param name="account"></param>
18- public static IList < OpenOrderMessage > MapOrder ( int orderId , Core . Models . Order orderModel , Account account )
16+ public static ( IBApi . Order , double ? , double ? ) MapOrder ( int orderId , Core . Models . Order orderModel , Account account )
1917 {
20- var order = new IBApi . Order ( ) ;
21- var action = orderModel . Operation ;
22- var instrument = action . Instrument ;
23- var contract = MapContract ( action . Instrument ) ;
24- var response = new List < OpenOrderMessage > ( ) ;
25-
26- order . OrderId = orderId ;
27- order . Action = MapSide ( orderModel . Side ) ;
28- order . Tif = MapTimeSpan ( orderModel . TimeSpan ) ;
29- order . OrderType = MapOrderType ( orderModel . Type ) ;
30- order . TotalQuantity = ( decimal ) orderModel . Amount ;
31- order . ExtOperator = orderModel . Descriptor ;
32- order . Account = account . Name ;
18+ var order = new IBApi . Order
19+ {
20+ OrderId = orderId ,
21+ Action = MapSide ( orderModel . Side ) ,
22+ Tif = MapTimeSpan ( orderModel . TimeSpan ) ,
23+ OrderType = MapOrderType ( orderModel . Type ) ,
24+ TotalQuantity = ( decimal ) orderModel . Amount ,
25+ ExtOperator = orderModel . Descriptor ,
26+ Account = account . Name
27+ } ;
3328
3429 switch ( orderModel . Type )
3530 {
@@ -44,64 +39,7 @@ public static IList<OpenOrderMessage> MapOrder(int orderId, Core.Models.Order or
4439 var TP = MapBracePrice ( orderModel , orderModel . Side is OrderSideEnum . Long ? 1 : - 1 ) ;
4540 var SL = MapBracePrice ( orderModel , orderModel . Side is OrderSideEnum . Long ? - 1 : 1 ) ;
4641
47- response = [ .. MapBrace ( order , SL , TP ) . Select ( o => new OpenOrderMessage ( orderId , contract , order , null )
48- {
49- Order = o ,
50- Contract = contract
51- } ) ] ;
52-
53- return response ;
54- }
55-
56- /// <summary>
57- /// Bracket template
58- /// </summary>
59- /// <param name="order"></param>
60- /// <param name="stopPrice"></param>
61- /// <param name="takePrice"></param>
62- public static IList < IBApi . Order > MapBrace ( IBApi . Order order , double ? stopPrice , double ? takePrice )
63- {
64- var orders = new List < IBApi . Order > { order } ;
65-
66- if ( takePrice is not null )
67- {
68- order . Transmit = false ;
69-
70- var TP = new IBApi . Order
71- {
72- OrderType = "LMT" ,
73- OrderId = order . OrderId + 1 ,
74- Action = order . Action . Equals ( "BUY" ) ? "SELL" : "BUY" ,
75- TotalQuantity = order . TotalQuantity ,
76- LmtPrice = takePrice . Value ,
77- ParentId = order . OrderId ,
78- Transmit = false
79- } ;
80-
81- orders . Add ( TP ) ;
82- }
83-
84- if ( stopPrice is not null )
85- {
86- order . Transmit = false ;
87-
88- var SL = new IBApi . Order
89- {
90- OrderType = "STP" ,
91- OrderId = order . OrderId + 2 ,
92- Action = order . Action . Equals ( "BUY" ) ? "SELL" : "BUY" ,
93- TotalQuantity = order . TotalQuantity ,
94- AuxPrice = stopPrice . Value ,
95- ParentId = order . OrderId ,
96- Transmit = false
97- } ;
98-
99- orders . Add ( SL ) ;
100- }
101-
102- orders . Last ( ) . Transmit = true ;
103-
104- return orders ;
42+ return ( order , TP , SL ) ;
10543 }
10644
10745 /// <summary>
0 commit comments