def run(): if Utils.isTodayHoliday(): logging.info("Cannot start TradeManager as Today is Trading Holiday.") return if Utils.isMarketClosedForTheDay(): logging.info("Cannot start TradeManager as Market is closed for the day.") return Utils.waitTillMarketOpens("TradeManager") # check and create trades directory for today`s date serverConfig = getServerConfig() tradesDir = os.path.join(serverConfig['deployDir'], 'trades') TradeManager.intradayTradesDir = os.path.join(tradesDir, Utils.getTodayDateStr()) if os.path.exists(TradeManager.intradayTradesDir) == False: logging.info('TradeManager: Intraday Trades Directory %s does not exist. Hence going to create.', TradeManager.intradayTradesDir) os.mkdirs(TradeManager.intradayTradesDir) # start ticker service brokerName = Controller.getBrokerName() if brokerName == "zerodha": TradeManager.ticker = ZerodhaTicker() #elif brokerName == "fyers" # not implemented # ticker = FyersTicker() TradeManager.ticker.startTicker() TradeManager.ticker.registerListener(TradeManager.tickerListener) # sleep for 2 seconds for ticker connection establishment time.sleep(2) # Load all trades from json files to app memory TradeManager.loadAllTradesFromFile() # track and update trades in a loop while True: if Utils.isMarketClosedForTheDay(): logging.info('TradeManager: Stopping TradeManager as market closed.') break try: # Fetch all order details from broker and update orders in each trade TradeManager.fetchAndUpdateAllTradeOrders() # track each trade and take necessary action TradeManager.trackAndUpdateAllTrades() except Exception as e: logging.exception("Exception in TradeManager Main thread") # save updated data to json file TradeManager.saveAllTradesToFile() # sleep for 30 seconds and then continue time.sleep(30) logging.info('TradeManager: Main thread woke up..')
def run(): if Utils.isTodayHoliday(): logging.info( "Cannot start TradeManager as Today is Trading Holiday.") return if Utils.isMarketClosedForTheDay(): logging.info( "Cannot start TradeManager as Market is closed for the day.") return Utils.waitTillMarketOpens("TradeManager") # start ticker service brokerName = Controller.getBrokerName() if brokerName == "zerodha": TradeManager.ticker = ZerodhaTicker() #elif brokerName == "fyers" # not implemented # ticker = FyersTicker() TradeManager.ticker.startTicker() TradeManager.ticker.registerListener(TradeManager.tickerListener) # track and update trades in a loop while True: if Utils.isMarketClosedForTheDay(): logging.info( 'TradeManager: Stopping TradeManager as market closed.') break # Fetch all order details from broker and update orders in each trade TradeManager.fetchAndUpdateAllTradeOrders() # track each trade and take necessary action TradeManager.trackAndUpdateAllTrades() time.sleep(60 * 1000) # sleep for 60 seconds