1
1
from syscore .constants import arg_not_supplied
2
2
from sysbrokers .IB .client .ib_client import ibClient
3
- from sysbrokers .IB .ib_positions import from_ib_positions_to_dict , positionsFromIB
3
+ from sysbrokers .IB .ib_positions import (
4
+ from_ib_positions_to_dict ,
5
+ positionsFromIB ,
6
+ IBPositionWithExtendedAttr ,
7
+ )
8
+ from ib_insync .ib import Position
4
9
5
10
6
11
class ibPositionsClient (ibClient ):
@@ -32,7 +37,9 @@ def add_exchange_codes_to_list_of_raw_ib_positions(
32
37
33
38
return raw_positions_with_codes
34
39
35
- def add_exchange_code_to_raw_ib_position (self , raw_ib_position ):
40
+ def add_exchange_code_to_raw_ib_position (
41
+ self , raw_ib_position : Position
42
+ ) -> IBPositionWithExtendedAttr :
36
43
try :
37
44
ib_contract = raw_ib_position .contract
38
45
list_of_contract_details = self .ib .reqContractDetails (ib_contract )
@@ -43,6 +50,8 @@ def add_exchange_code_to_raw_ib_position(self, raw_ib_position):
43
50
except :
44
51
exchange_code = ""
45
52
46
- setattr (raw_ib_position , "exchange" , exchange_code )
53
+ new_ib_position = IBPositionWithExtendedAttr .from_ib_position (
54
+ ib_position = raw_ib_position , exchange = exchange_code
55
+ )
47
56
48
- return raw_ib_position
57
+ return new_ib_position
0 commit comments