ibapi.common
Copyright (C) 2025 Interactive Brokers LLC. All rights reserved. This code is subject to the terms and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable.
1""" 2Copyright (C) 2025 Interactive Brokers LLC. All rights reserved. This code is subject to the terms 3 and conditions of the IB API Non-Commercial License or the IB API Commercial License, as applicable. 4""" 5 6 7from ibapi.const import UNSET_INTEGER, UNSET_DECIMAL 8from ibapi.enum_implem import Enum 9from ibapi.object_implem import Object 10from ibapi.utils import floatMaxString, decimalMaxString, intMaxString 11from ibapi.message import OUT 12from ibapi.server_versions import ( 13 MIN_SERVER_VER_PROTOBUF, 14 MIN_SERVER_VER_PROTOBUF_PLACE_ORDER, 15 MIN_SERVER_VER_PROTOBUF_COMPLETED_ORDER, 16 MIN_SERVER_VER_PROTOBUF_CONTRACT_DATA, 17 MIN_SERVER_VER_PROTOBUF_MARKET_DATA, 18 MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 19 MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 20 MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 21 MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 22 MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 23 MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 24 MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3 25) 26 27TickerId = int 28OrderId = int 29TagValueList = list 30 31FaDataType = int 32FaDataTypeEnum = Enum("N/A", "GROUPS", "N/A", "ALIASES") 33 34MarketDataType = int 35MarketDataTypeEnum = Enum("N/A", "REALTIME", "FROZEN", "DELAYED", "DELAYED_FROZEN") 36 37Liquidities = int 38LiquiditiesEnum = Enum("None", "Added", "Remove", "RoudedOut") 39 40SetOfString = set 41SetOfFloat = set 42ListOfOrder = list 43ListOfFamilyCode = list 44ListOfContractDescription = list 45ListOfDepthExchanges = list 46ListOfNewsProviders = list 47SmartComponentMap = dict 48HistogramDataList = list 49ListOfPriceIncrements = list 50ListOfHistoricalTick = list 51ListOfHistoricalTickBidAsk = list 52ListOfHistoricalTickLast = list 53ListOfHistoricalSessions = list 54 55PROTOBUF_MSG_ID = 200 56PROTOBUF_MSG_IDS = { 57 OUT.REQ_EXECUTIONS : MIN_SERVER_VER_PROTOBUF, 58 OUT.PLACE_ORDER : MIN_SERVER_VER_PROTOBUF_PLACE_ORDER, 59 OUT.CANCEL_ORDER : MIN_SERVER_VER_PROTOBUF_PLACE_ORDER, 60 OUT.REQ_GLOBAL_CANCEL : MIN_SERVER_VER_PROTOBUF_PLACE_ORDER, 61 OUT.REQ_ALL_OPEN_ORDERS : MIN_SERVER_VER_PROTOBUF_COMPLETED_ORDER, 62 OUT.REQ_AUTO_OPEN_ORDERS : MIN_SERVER_VER_PROTOBUF_COMPLETED_ORDER, 63 OUT.REQ_OPEN_ORDERS : MIN_SERVER_VER_PROTOBUF_COMPLETED_ORDER, 64 OUT.REQ_COMPLETED_ORDERS : MIN_SERVER_VER_PROTOBUF_COMPLETED_ORDER, 65 OUT.REQ_CONTRACT_DATA : MIN_SERVER_VER_PROTOBUF_CONTRACT_DATA, 66 OUT.REQ_MKT_DATA : MIN_SERVER_VER_PROTOBUF_MARKET_DATA, 67 OUT.CANCEL_MKT_DATA : MIN_SERVER_VER_PROTOBUF_MARKET_DATA, 68 OUT.REQ_MKT_DEPTH : MIN_SERVER_VER_PROTOBUF_MARKET_DATA, 69 OUT.CANCEL_MKT_DEPTH : MIN_SERVER_VER_PROTOBUF_MARKET_DATA, 70 OUT.REQ_MARKET_DATA_TYPE : MIN_SERVER_VER_PROTOBUF_MARKET_DATA, 71 OUT.REQ_ACCT_DATA : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 72 OUT.REQ_MANAGED_ACCTS : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 73 OUT.REQ_POSITIONS : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 74 OUT.CANCEL_POSITIONS : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 75 OUT.REQ_ACCOUNT_SUMMARY : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 76 OUT.CANCEL_ACCOUNT_SUMMARY : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 77 OUT.REQ_POSITIONS_MULTI : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 78 OUT.CANCEL_POSITIONS_MULTI : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 79 OUT.REQ_ACCOUNT_UPDATES_MULTI : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 80 OUT.CANCEL_ACCOUNT_UPDATES_MULTI : MIN_SERVER_VER_PROTOBUF_ACCOUNTS_POSITIONS, 81 OUT.REQ_HISTORICAL_DATA : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 82 OUT.CANCEL_HISTORICAL_DATA : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 83 OUT.REQ_REAL_TIME_BARS : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 84 OUT.CANCEL_REAL_TIME_BARS : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 85 OUT.REQ_HEAD_TIMESTAMP : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 86 OUT.CANCEL_HEAD_TIMESTAMP : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 87 OUT.REQ_HISTOGRAM_DATA : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 88 OUT.CANCEL_HISTOGRAM_DATA : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 89 OUT.REQ_HISTORICAL_TICKS : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 90 OUT.REQ_TICK_BY_TICK_DATA : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 91 OUT.CANCEL_TICK_BY_TICK_DATA : MIN_SERVER_VER_PROTOBUF_HISTORICAL_DATA, 92 OUT.REQ_NEWS_BULLETINS: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 93 OUT.CANCEL_NEWS_BULLETINS: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 94 OUT.REQ_NEWS_ARTICLE: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 95 OUT.REQ_NEWS_PROVIDERS: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 96 OUT.REQ_HISTORICAL_NEWS: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 97 OUT.REQ_WSH_META_DATA: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 98 OUT.CANCEL_WSH_META_DATA: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 99 OUT.REQ_WSH_EVENT_DATA: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 100 OUT.CANCEL_WSH_EVENT_DATA: MIN_SERVER_VER_PROTOBUF_NEWS_DATA, 101 OUT.REQ_SCANNER_PARAMETERS: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 102 OUT.REQ_SCANNER_SUBSCRIPTION: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 103 OUT.CANCEL_SCANNER_SUBSCRIPTION: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 104 OUT.REQ_FUNDAMENTAL_DATA: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 105 OUT.CANCEL_FUNDAMENTAL_DATA: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 106 OUT.REQ_PNL: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 107 OUT.CANCEL_PNL: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 108 OUT.REQ_PNL_SINGLE: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 109 OUT.CANCEL_PNL_SINGLE: MIN_SERVER_VER_PROTOBUF_SCAN_DATA, 110 OUT.REQ_FA: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 111 OUT.REPLACE_FA: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 112 OUT.EXERCISE_OPTIONS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 113 OUT.REQ_CALC_IMPLIED_VOLAT: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 114 OUT.CANCEL_CALC_IMPLIED_VOLAT: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 115 OUT.REQ_CALC_OPTION_PRICE: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 116 OUT.CANCEL_CALC_OPTION_PRICE: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_1, 117 OUT.REQ_SEC_DEF_OPT_PARAMS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 118 OUT.REQ_SOFT_DOLLAR_TIERS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 119 OUT.REQ_FAMILY_CODES: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 120 OUT.REQ_MATCHING_SYMBOLS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 121 OUT.REQ_SMART_COMPONENTS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 122 OUT.REQ_MARKET_RULE: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 123 OUT.REQ_USER_INFO: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_2, 124 OUT.REQ_IDS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 125 OUT.REQ_CURRENT_TIME: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 126 OUT.REQ_CURRENT_TIME_IN_MILLIS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 127 OUT.START_API: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 128 OUT.SET_SERVER_LOGLEVEL: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 129 OUT.VERIFY_REQUEST: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 130 OUT.VERIFY_MESSAGE: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 131 OUT.QUERY_DISPLAY_GROUPS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 132 OUT.SUBSCRIBE_TO_GROUP_EVENTS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 133 OUT.UPDATE_DISPLAY_GROUP: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 134 OUT.UNSUBSCRIBE_FROM_GROUP_EVENTS: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3, 135 OUT.REQ_MKT_DEPTH_EXCHANGES: MIN_SERVER_VER_PROTOBUF_REST_MESSAGES_3 136} 137 138class BarData(Object): 139 def __init__(self): 140 self.date = "" 141 self.open = 0.0 142 self.high = 0.0 143 self.low = 0.0 144 self.close = 0.0 145 self.volume = UNSET_DECIMAL 146 self.wap = UNSET_DECIMAL 147 self.barCount = 0 148 149 def __str__(self): 150 return ( 151 f"Date: {self.date}, " 152 f"Open: {floatMaxString(self.open)}, " 153 f"High: {floatMaxString(self.high)}, " 154 f"Low: {floatMaxString(self.low)}, " 155 f"Close: {floatMaxString(self.close)}, " 156 f"Volume: {decimalMaxString(self.volume)}, " 157 f"WAP: {decimalMaxString(self.wap)}, " 158 f"BarCount: {intMaxString(self.barCount)}" 159 ) 160 161 162class RealTimeBar(Object): 163 def __init__( 164 self, 165 time=0, 166 endTime=-1, 167 open_=0.0, 168 high=0.0, 169 low=0.0, 170 close=0.0, 171 volume=UNSET_DECIMAL, 172 wap=UNSET_DECIMAL, 173 count=0, 174 ): 175 self.time = time 176 self.endTime = endTime 177 self.open_ = open_ 178 self.high = high 179 self.low = low 180 self.close = close 181 self.volume = volume 182 self.wap = wap 183 self.count = count 184 185 def __str__(self): 186 return ( 187 "Time: %s, Open: %s, High: %s, Low: %s, Close: %s, Volume: %s, WAP: %s, Count: %s" 188 % ( 189 intMaxString(self.time), 190 floatMaxString(self.open_), 191 floatMaxString(self.high), 192 floatMaxString(self.low), 193 floatMaxString(self.close), 194 decimalMaxString(self.volume), 195 decimalMaxString(self.wap), 196 intMaxString(self.count), 197 ) 198 ) 199 200 201class HistogramData(Object): 202 def __init__(self): 203 self.price = 0.0 204 self.size = UNSET_DECIMAL 205 206 def __str__(self): 207 return "Price: %s, Size: %s" % ( 208 floatMaxString(self.price), 209 decimalMaxString(self.size), 210 ) 211 212 213class NewsProvider(Object): 214 def __init__(self): 215 self.code = "" 216 self.name = "" 217 218 def __str__(self): 219 return f"Code: {self.code}, Name: {self.name}" 220 221 222class DepthMktDataDescription(Object): 223 def __init__(self): 224 self.exchange = "" 225 self.secType = "" 226 self.listingExch = "" 227 self.serviceDataType = "" 228 self.aggGroup = UNSET_INTEGER 229 230 def __str__(self): 231 if self.aggGroup != UNSET_INTEGER: 232 aggGroup = self.aggGroup 233 else: 234 aggGroup = "" 235 return ( 236 "Exchange: %s, SecType: %s, ListingExchange: %s, ServiceDataType: %s, AggGroup: %s, " 237 % ( 238 self.exchange, 239 self.secType, 240 self.listingExch, 241 self.serviceDataType, 242 intMaxString(aggGroup), 243 ) 244 ) 245 246 247class SmartComponent(Object): 248 def __init__(self): 249 self.bitNumber = 0 250 self.exchange = "" 251 self.exchangeLetter = "" 252 253 def __str__(self): 254 return "BitNumber: %d, Exchange: %s, ExchangeLetter: %s" % ( 255 self.bitNumber, 256 self.exchange, 257 self.exchangeLetter, 258 ) 259 260 261class TickAttrib(Object): 262 def __init__(self): 263 self.canAutoExecute = False 264 self.pastLimit = False 265 self.preOpen = False 266 267 def __str__(self): 268 return "CanAutoExecute: %d, PastLimit: %d, PreOpen: %d" % ( 269 self.canAutoExecute, 270 self.pastLimit, 271 self.preOpen, 272 ) 273 274 275class TickAttribBidAsk(Object): 276 def __init__(self): 277 self.bidPastLow = False 278 self.askPastHigh = False 279 280 def __str__(self): 281 return "BidPastLow: %d, AskPastHigh: %d" % (self.bidPastLow, self.askPastHigh) 282 283 284class TickAttribLast(Object): 285 def __init__(self): 286 self.pastLimit = False 287 self.unreported = False 288 289 def __str__(self): 290 return "PastLimit: %d, Unreported: %d" % (self.pastLimit, self.unreported) 291 292 293class FamilyCode(Object): 294 def __init__(self): 295 self.accountID = "" 296 self.familyCodeStr = "" 297 298 def __str__(self): 299 return f"AccountId: {self.accountID}, FamilyCodeStr: {self.familyCodeStr}" 300 301 302class PriceIncrement(Object): 303 def __init__(self): 304 self.lowEdge = 0.0 305 self.increment = 0.0 306 307 def __str__(self): 308 return "LowEdge: %s, Increment: %s" % ( 309 floatMaxString(self.lowEdge), 310 floatMaxString(self.increment), 311 ) 312 313 314class HistoricalTick(Object): 315 def __init__(self): 316 self.time = 0 317 self.price = 0.0 318 self.size = UNSET_DECIMAL 319 320 def __str__(self): 321 return "Time: %s, Price: %s, Size: %s" % ( 322 intMaxString(self.time), 323 floatMaxString(self.price), 324 decimalMaxString(self.size), 325 ) 326 327 328class HistoricalTickBidAsk(Object): 329 def __init__(self): 330 self.time = 0 331 self.tickAttribBidAsk = TickAttribBidAsk() 332 self.priceBid = 0.0 333 self.priceAsk = 0.0 334 self.sizeBid = UNSET_DECIMAL 335 self.sizeAsk = UNSET_DECIMAL 336 337 def __str__(self): 338 return ( 339 f"Time: {intMaxString(self.time)}, " 340 f"TickAttriBidAsk: {self.tickAttribBidAsk}, " 341 f"PriceBid: {floatMaxString(self.priceBid)}, " 342 f"PriceAsk: {floatMaxString(self.priceAsk)}, " 343 f"SizeBid: {decimalMaxString(self.sizeBid)}, " 344 f"SizeAsk: {decimalMaxString(self.sizeAsk)}" 345 ) 346 347 348class HistoricalTickLast(Object): 349 def __init__(self): 350 self.time = 0 351 self.tickAttribLast = TickAttribLast() 352 self.price = 0.0 353 self.size = UNSET_DECIMAL 354 self.exchange = "" 355 self.specialConditions = "" 356 357 def __str__(self): 358 return ( 359 f"Time: {intMaxString(self.time)}, " 360 f"TickAttribLast: {self.tickAttribLast}, " 361 f"Price: {floatMaxString(self.price)}, " 362 f"Size: {decimalMaxString(self.size)}, " 363 f"Exchange: {self.exchange}, " 364 f"SpecialConditions: {self.specialConditions}" 365 ) 366 367 368class HistoricalSession(Object): 369 def __init__(self): 370 self.startDateTime = "" 371 self.endDateTime = "" 372 self.refDate = "" 373 374 def __str__(self): 375 return "Start: %s, End: %s, Ref Date: %s" % ( 376 self.startDateTime, 377 self.endDateTime, 378 self.refDate, 379 ) 380 381 382class WshEventData(Object): 383 def __init__(self): 384 self.conId = UNSET_INTEGER 385 self.filter = "" 386 self.fillWatchlist = False 387 self.fillPortfolio = False 388 self.fillCompetitors = False 389 self.startDate = "" 390 self.endDate = "" 391 self.totalLimit = UNSET_INTEGER 392 393 def __str__(self): 394 return ( 395 f"WshEventData. ConId: {intMaxString(self.conId)}, " 396 f"Filter: {self.filter}, " 397 f"Fill Watchlist: {self.fillWatchlist:d}, " 398 f"Fill Portfolio: {self.fillPortfolio:d}, " 399 f"Fill Competitors: {self.fillCompetitors:d}" 400 )
TickerId =
<class 'int'>
OrderId =
<class 'int'>
TagValueList =
<class 'list'>
FaDataType =
<class 'int'>
FaDataTypeEnum =
<ibapi.enum_implem.Enum object>
MarketDataType =
<class 'int'>
MarketDataTypeEnum =
<ibapi.enum_implem.Enum object>
Liquidities =
<class 'int'>
LiquiditiesEnum =
<ibapi.enum_implem.Enum object>
SetOfString =
<class 'set'>
SetOfFloat =
<class 'set'>
ListOfOrder =
<class 'list'>
ListOfFamilyCode =
<class 'list'>
ListOfContractDescription =
<class 'list'>
ListOfDepthExchanges =
<class 'list'>
ListOfNewsProviders =
<class 'list'>
SmartComponentMap =
<class 'dict'>
HistogramDataList =
<class 'list'>
ListOfPriceIncrements =
<class 'list'>
ListOfHistoricalTick =
<class 'list'>
ListOfHistoricalTickBidAsk =
<class 'list'>
ListOfHistoricalTickLast =
<class 'list'>
ListOfHistoricalSessions =
<class 'list'>
PROTOBUF_MSG_ID =
200
PROTOBUF_MSG_IDS =
{7: 201, 3: 203, 4: 203, 58: 203, 16: 204, 15: 204, 5: 204, 99: 204, 9: 205, 1: 206, 2: 206, 10: 206, 11: 206, 59: 206, 6: 207, 17: 207, 61: 207, 64: 207, 62: 207, 63: 207, 74: 207, 75: 207, 76: 207, 77: 207, 20: 208, 25: 208, 50: 208, 51: 208, 87: 208, 90: 208, 88: 208, 89: 208, 96: 208, 97: 208, 98: 208, 12: 209, 13: 209, 84: 209, 85: 209, 86: 209, 100: 209, 101: 209, 102: 209, 103: 209, 24: 210, 22: 210, 23: 210, 52: 210, 53: 210, 92: 210, 93: 210, 94: 210, 95: 210, 18: 211, 19: 211, 21: 211, 54: 211, 56: 211, 55: 211, 57: 211, 78: 212, 79: 212, 80: 212, 81: 212, 83: 212, 91: 212, 104: 212, 8: 213, 49: 213, 105: 213, 71: 213, 14: 213, 65: 213, 66: 213, 67: 213, 68: 213, 69: 213, 70: 213, 82: 213}
139class BarData(Object): 140 def __init__(self): 141 self.date = "" 142 self.open = 0.0 143 self.high = 0.0 144 self.low = 0.0 145 self.close = 0.0 146 self.volume = UNSET_DECIMAL 147 self.wap = UNSET_DECIMAL 148 self.barCount = 0 149 150 def __str__(self): 151 return ( 152 f"Date: {self.date}, " 153 f"Open: {floatMaxString(self.open)}, " 154 f"High: {floatMaxString(self.high)}, " 155 f"Low: {floatMaxString(self.low)}, " 156 f"Close: {floatMaxString(self.close)}, " 157 f"Volume: {decimalMaxString(self.volume)}, " 158 f"WAP: {decimalMaxString(self.wap)}, " 159 f"BarCount: {intMaxString(self.barCount)}" 160 )
163class RealTimeBar(Object): 164 def __init__( 165 self, 166 time=0, 167 endTime=-1, 168 open_=0.0, 169 high=0.0, 170 low=0.0, 171 close=0.0, 172 volume=UNSET_DECIMAL, 173 wap=UNSET_DECIMAL, 174 count=0, 175 ): 176 self.time = time 177 self.endTime = endTime 178 self.open_ = open_ 179 self.high = high 180 self.low = low 181 self.close = close 182 self.volume = volume 183 self.wap = wap 184 self.count = count 185 186 def __str__(self): 187 return ( 188 "Time: %s, Open: %s, High: %s, Low: %s, Close: %s, Volume: %s, WAP: %s, Count: %s" 189 % ( 190 intMaxString(self.time), 191 floatMaxString(self.open_), 192 floatMaxString(self.high), 193 floatMaxString(self.low), 194 floatMaxString(self.close), 195 decimalMaxString(self.volume), 196 decimalMaxString(self.wap), 197 intMaxString(self.count), 198 ) 199 )
RealTimeBar( time=0, endTime=-1, open_=0.0, high=0.0, low=0.0, close=0.0, volume=Decimal('170141183460469231731687303715884105727'), wap=Decimal('170141183460469231731687303715884105727'), count=0)
164 def __init__( 165 self, 166 time=0, 167 endTime=-1, 168 open_=0.0, 169 high=0.0, 170 low=0.0, 171 close=0.0, 172 volume=UNSET_DECIMAL, 173 wap=UNSET_DECIMAL, 174 count=0, 175 ): 176 self.time = time 177 self.endTime = endTime 178 self.open_ = open_ 179 self.high = high 180 self.low = low 181 self.close = close 182 self.volume = volume 183 self.wap = wap 184 self.count = count
223class DepthMktDataDescription(Object): 224 def __init__(self): 225 self.exchange = "" 226 self.secType = "" 227 self.listingExch = "" 228 self.serviceDataType = "" 229 self.aggGroup = UNSET_INTEGER 230 231 def __str__(self): 232 if self.aggGroup != UNSET_INTEGER: 233 aggGroup = self.aggGroup 234 else: 235 aggGroup = "" 236 return ( 237 "Exchange: %s, SecType: %s, ListingExchange: %s, ServiceDataType: %s, AggGroup: %s, " 238 % ( 239 self.exchange, 240 self.secType, 241 self.listingExch, 242 self.serviceDataType, 243 intMaxString(aggGroup), 244 ) 245 )
329class HistoricalTickBidAsk(Object): 330 def __init__(self): 331 self.time = 0 332 self.tickAttribBidAsk = TickAttribBidAsk() 333 self.priceBid = 0.0 334 self.priceAsk = 0.0 335 self.sizeBid = UNSET_DECIMAL 336 self.sizeAsk = UNSET_DECIMAL 337 338 def __str__(self): 339 return ( 340 f"Time: {intMaxString(self.time)}, " 341 f"TickAttriBidAsk: {self.tickAttribBidAsk}, " 342 f"PriceBid: {floatMaxString(self.priceBid)}, " 343 f"PriceAsk: {floatMaxString(self.priceAsk)}, " 344 f"SizeBid: {decimalMaxString(self.sizeBid)}, " 345 f"SizeAsk: {decimalMaxString(self.sizeAsk)}" 346 )
349class HistoricalTickLast(Object): 350 def __init__(self): 351 self.time = 0 352 self.tickAttribLast = TickAttribLast() 353 self.price = 0.0 354 self.size = UNSET_DECIMAL 355 self.exchange = "" 356 self.specialConditions = "" 357 358 def __str__(self): 359 return ( 360 f"Time: {intMaxString(self.time)}, " 361 f"TickAttribLast: {self.tickAttribLast}, " 362 f"Price: {floatMaxString(self.price)}, " 363 f"Size: {decimalMaxString(self.size)}, " 364 f"Exchange: {self.exchange}, " 365 f"SpecialConditions: {self.specialConditions}" 366 )
383class WshEventData(Object): 384 def __init__(self): 385 self.conId = UNSET_INTEGER 386 self.filter = "" 387 self.fillWatchlist = False 388 self.fillPortfolio = False 389 self.fillCompetitors = False 390 self.startDate = "" 391 self.endDate = "" 392 self.totalLimit = UNSET_INTEGER 393 394 def __str__(self): 395 return ( 396 f"WshEventData. ConId: {intMaxString(self.conId)}, " 397 f"Filter: {self.filter}, " 398 f"Fill Watchlist: {self.fillWatchlist:d}, " 399 f"Fill Portfolio: {self.fillPortfolio:d}, " 400 f"Fill Competitors: {self.fillCompetitors:d}" 401 )