def getPortfolio(self): ''' Returns list of triplets of current (contract, position in number of shares/contracts, market value of position) ''' portfolioList = [] # setup call back variables self.callback.accountEnd = False #self.callback.portfolioContract = None #self.callback.portfolioPosition = None #self.callback.portfolioSecMarketValue = None self.tws.reqAccountUpdates(1, self.accountNumber) while (not self.callback.accountEnd): self.callback.portfolioContract = None self.callback.portfolioPosition = None self.callback.portfolioSecMarketValue = None max_wait = datetime.timedelta(seconds=60) + datetime.datetime.now() while (self.callback.portfolioPosition is None or self.callback.portfolioContract is None or self.callback.portfolioSecMarketValue is None): if datetime.datetime.now() > max_wait: break if self.callback.portfolioPosition is not None and self.callback.portfolioContract is not None and self.callback.portfolioSecMarketValue is not None: myContract = Contract() myContract.exchange = "SMART" myContract.currency = "USD" myContract.symbol = self.callback.portfolioContractSymbol myContract.conId = self.callback.portfolioContractConId myContract.secType = self.callback.portfolioContractSecType myContract.strike = self.callback.portfolioContractStrike myContract.expiry = self.callback.portfolioContractExpiry myContract.right = self.callback.portfolioContractRight myPosition = self.callback.portfolioPosition mySecMarketValue = self.callback.portfolioSecMarketValue portfolioList.append( (myContract, myPosition, mySecMarketValue)) self.tws.reqAccountUpdates(0, self.accountNumber) return portfolioList
def getPortfolio(self): ''' Returns list of triplets of current (contract, position in number of shares/contracts, market value of position) ''' portfolioList = [] # setup call back variables self.callback.accountEnd = False #self.callback.portfolioContract = None #self.callback.portfolioPosition = None #self.callback.portfolioSecMarketValue = None self.tws.reqAccountUpdates(1, self.accountNumber) while (not self.callback.accountEnd): self.callback.portfolioContract = None self.callback.portfolioPosition = None self.callback.portfolioSecMarketValue = None max_wait = datetime.timedelta(seconds=60) + datetime.datetime.now() while (self.callback.portfolioPosition is None or self.callback.portfolioContract is None or self.callback.portfolioSecMarketValue is None): if datetime.datetime.now() > max_wait: break if self.callback.portfolioPosition is not None and self.callback.portfolioContract is not None and self.callback.portfolioSecMarketValue is not None: myContract = Contract() myContract.exchange = "SMART" myContract.currency = "USD" myContract.symbol = self.callback.portfolioContractSymbol myContract.conId = self.callback.portfolioContractConId myContract.secType = self.callback.portfolioContractSecType myContract.strike = self.callback.portfolioContractStrike myContract.expiry = self.callback.portfolioContractExpiry myContract.right = self.callback.portfolioContractRight myPosition = self.callback.portfolioPosition mySecMarketValue = self.callback.portfolioSecMarketValue portfolioList.append((myContract, myPosition, mySecMarketValue)) self.tws.reqAccountUpdates(0, self.accountNumber) return portfolioList
level=logging.DEBUG, format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%j-%H:%M:%S') else: logging.basicConfig(handlers=[logging.StreamHandler()], level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%j-%H:%M:%S') logging.debug(args) if args.sym: contract.symbol = args.sym if args.exc: contract.exchange = args.exc if args.st: contract.secType = args.st if args.cur: contract.currency = args.cur if args.id: contract.conId = args.id if args.exp: contract.expiry = args.exp if args.pex: contract.primaryExchange = args.pex if args.str: contract.strike = args.str if args.rt: contract.right = args.rt if args.mult: contract.multiplier = args.mult barsize = args.p datatype = args.t rth_only = args.rth pacing = args.pacing num_requests = args.n zerobased = args.z if barsize == "1 day" or barsize == "1W" or barsize == "1M": dt_format = "%Y%m%d"
con_group.add_argument("-mult", help="multiplier of the contract") args = parser.parse_args() if args.v: logging.basicConfig(handlers=[logging.StreamHandler()], level=logging.DEBUG, format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%j-%H:%M:%S') else: logging.basicConfig(handlers=[logging.StreamHandler()], level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s', datefmt='%j-%H:%M:%S') logging.debug(args) if args.sym: contract.symbol = args.sym if args.exc: contract.exchange = args.exc if args.st: contract.secType = args.st if args.cur: contract.currency = args.cur if args.id: contract.conId = args.id if args.exp: contract.expiry = args.exp if args.pex: contract.primaryExchange = args.pex if args.str: contract.strike = args.str if args.rt: contract.right = args.rt if args.mult: contract.multiplier = args.mult barsize = args.p datatype = args.t rth_only = args.rth pacing = args.pacing num_requests = args.n zerobased = args.z if barsize == "1 day" or barsize == "1W" or barsize == "1M": dt_format = "%Y%m%d"