def tick_data_req_parameter(self, args_symbol, args_date, args_ip="127.0.0.1", args_cid=1, args_port=4002, args_sectype='STK', args_expiry=None, args_strike=None, args_right=None): try: # app = TickHistory() self.SYMBOL = args_symbol self.HDATE = args_date self.IP = args_ip self.PORT = args_port self.SECTYPE = args_sectype print("\n## Started ##") print("\nUsing args", args_symbol, args_date, args_ip, args_port, args_sectype, args_expiry, args_strike, args_right) self.connect(self.IP, self.PORT, args_cid) print("\nIB Gateway Time:%s connectionTime:%s" % (self.serverVersion(), self.twsConnectionTime())) print("\n~~ Recorded HRHD for "+self.SYMBOL+", DATE : "+str(self.HDATE)) self.contract.symbol = self.SYMBOL self.contract.currency = "INR" self.contract.exchange = "NSE" if self.SECTYPE == "STK": self.contract.secType = self.SECTYPE elif self.SECTYPE == "FUT": self.EXPIRY = args_expiry self.contract.secType = self.SECTYPE self.contract.lastTradeDateOrContractMonth = self.EXPIRY elif self.SECTYPE == "OPT": self.STRIKE = args_strike self.RIGHT = args_right self.EXPIRY = args_expiry self.contract.secType = self.SECTYPE self.contract.lastTradeDateOrContractMonth = self.EXPIRY self.contract.strike = self.STRIKE self.contract.right = self.RIGHT if not os.path.exists(hrhdObj.get_with_base_path('common', 'tick_bank')+"/"+str(self.HDATE)+"/"): os.makedirs(hrhdObj.get_with_base_path('common', 'tick_bank')+"/"+str(self.HDATE)+"/") tickbank_path = hrhdObj.get_with_base_path('common', 'tick_bank')+"/"+str(self.HDATE)+"/" with open(tickbank_path+self.SYMBOL + "_" + self.SECTYPE + ".csv", 'w') as csvfile: filewriter = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) filewriter.writerow(["TIME", "PRICE", "SIZE"]) self.reqHistoricalTicks(random.randint(1,100), self.contract, str(self.HDATE) + " 09:10:00", "", 1000, "TRADES", 1, True, []) self.run() except Exception: logging.error(traceback.format_exc()) print("\n") print("\n~~~~~~~~~~~~~~~~~~~~~~~~ Error ~~~~~~~~~~~~~~~~~~~~~~~") print("\nError : " + traceback.format_exc()) print("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") finally: self.dumpTestCoverageSituation() self.dumpReqAnsErrSituation() print("\n## Completed ##")
def __init__(self): try: logger.info("Initiating connection to fire base") FireBaseUtils.cred = credentials.Certificate( hrdObj.get_with_base_path("firebase", "firebase_key")) firebase_admin.initialize_app(FireBaseUtils.cred, { 'storageBucket': hrdObj.get_value('firebase', 'firebase_app_name') }) logger.info("Connected to firebase bucket") FireBaseUtils.bucket = storage.bucket() except Exception as ex: logger.error(ex)
def ohlc_data_req_parameter(self, args_symbol, args_date, args_ip="127.0.0.1", args_cid=1, args_port=4002, args_sectype='STK', args_expiry=None, args_strike=None, args_right=None, args_durationString=None, args_endDateTime=None): try: # app = TickHistory() self.SYMBOL = args_symbol self.HDATE = args_date self.IP = args_ip self.PORT = args_port self.SECTYPE = args_sectype print("\n## Started ##") print("\nUsing args", args_symbol, args_date, args_ip, args_port, args_sectype, args_expiry, args_strike, args_right) self.connect(self.IP, self.PORT, args_cid) print("\nIB Gateway Time:%s connectionTime:%s" % (self.serverVersion(), self.twsConnectionTime())) print("\n~~ Recorded HRHD for "+self.SYMBOL+", DATE : "+str(self.HDATE)) self.contract.symbol = self.SYMBOL self.contract.currency = "INR" self.contract.exchange = "NSE" if self.SECTYPE == "STK": self.contract.secType = self.SECTYPE elif self.SECTYPE == "FUT": self.EXPIRY = args_expiry self.contract.secType = self.SECTYPE self.contract.lastTradeDateOrContractMonth = self.EXPIRY elif self.SECTYPE == "OPT": self.STRIKE = args_strike self.RIGHT = args_right self.EXPIRY = args_expiry self.contract.secType = self.SECTYPE self.contract.lastTradeDateOrContractMonth = self.EXPIRY self.contract.strike = self.STRIKE self.contract.right = self.RIGHT if not os.path.exists(hrhdObj.get_with_base_path('common', 'tick_bank')+"/"+str(self.HDATE)+"/"): os.makedirs(hrhdObj.get_with_base_path('common', 'tick_bank')+"/"+str(self.HDATE)+"/") tickbank_path = hrhdObj.get_with_base_path('common', 'tick_bank')+"/"+str(self.HDATE)+"/" self.reqHistoricalData(random.randint(4000,5000), self.contract, str(self.HDATE) + " 15:20:00", args_endDateTime, args_durationString, "TRADES", 1, 1, False, []) self.run() except Exception: logging.error(traceback.format_exc()) print("\n") print("\n~~~~~~~~~~~~~~~~~~~~~~~~ Error ~~~~~~~~~~~~~~~~~~~~~~~") print("\nError : " + traceback.format_exc()) print("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") finally: self.dumpTestCoverageSituation() self.dumpReqAnsErrSituation() print("\n## Completed ##")
def fulldaydata(self, ticks): try: tickbank_path = hrhdObj.get_with_base_path('common', 'tick_bank') + "/" + str(self.HDATE) + "/" with open(tickbank_path+self.SYMBOL + "_" + self.SECTYPE + ".csv", 'a', newline='') as csvfile: filewriter = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL) if len(ticks) >= 1000: i = 0 for tick in ticks: print(str(time.strftime("%D %H:%M:%S", time.localtime(int(tick.time)))) + "," + str( tick.price) + "," + str(tick.size)) filewriter.writerow( [tick.time, str(tick.price), str(tick.size)]) i = i + 1 if i == 1000: self.reqHistoricalTicks(randint(100, 200), self.contract, str(self.HDATE) + " " + str( time.strftime("%H:%M:%S", time.localtime(int(tick.time)))), "", 1000, "TRADES", 1, True, []) else: for tick in ticks: print(str(time.strftime("%D %H:%M:%S", time.localtime(int(tick.time))))+","+str(tick.price)+","+str(tick.size)) filewriter.writerow( [tick.time, str(tick.price), str(tick.size)]) except Exception as e: logging.error(traceback.format_exc()) print(traceback.format_exc()) finally: self.dumpTestCoverageSituation() self.dumpReqAnsErrSituation()
def nifty_list(list_config_name): try: with open(hrhdObj.get_with_base_path("common", list_config_name), 'r') as json_file: nse_dict = json.load(json_file) return nse_dict except Exception as ex: logger.error(traceback.format_exc())
def historicalDataEnd(self, reqId: int, start: str, end: str): super().historicalDataEnd(reqId, start, end) tickbank_path = hrhdObj.get_with_base_path('common', 'tick_bank') + "/" + str(self.HDATE) + "/" keys = self.full_day_ohlc[0].keys() with open(tickbank_path + self.SYMBOL + "_" + self.SECTYPE + ".csv", 'w', newline='') as csvfile: filewriter = csv.DictWriter(csvfile,keys) filewriter.writeheader() filewriter.writerows(self.full_day_ohlc) print("HistoricalDataEnd. ReqId:", reqId, "Completed Bar Request and genrated csv") print("OHLC Date retrival completed for :" + self.SYMBOL)
def get_ib_symbol_from_map(nse_symbol): try: map_json = json.loads( open(str(hrhdObj.get_with_base_path('common', 'ib_nse_map'))).read()) for sym in map_json: if sym['NSE_Symbol'] == nse_symbol: return sym['IB_Symbol'] return nse_symbol except Exception as ex: logger.error("No mapping value found for NSE Symbol:%s" % nse_symbol) logger.error(traceback.format_exc())
def main_tick_data(): cmdLineParser = argparse.ArgumentParser("Vuk History Data Bot :") cmdLineParser.add_argument("-ip", "--ip", action="store", type=str, dest="ip", default=hrhdObj.get_value( "common", "gateway_ip"), help="The IP to get IB Gateway connection") cmdLineParser.add_argument("-d", "--date", action="store", type=str, dest="date", default=hrhdObj.get_value( "common", "hrhd_date"), help="Date (yyyymmdd) For eg: 20190131") cmdLineParser.add_argument("-cid", "--cid", action="store", type=int, dest="cid", default=random.randint(1, 10), help="Unique client id do request") cmdLineParser.add_argument("-list", "--list", action="store", type=str, dest="list", default='nifty50', help="nifty list 50 or 200") args = cmdLineParser.parse_args() hrhd_obj = Hrhd() logger.info("**HRHD Worker Initiated") if args.list is not None: if args.list == "nifty50": nse_dict_list = hrhd_obj.nifty_list('nifty50_list') elif args.list == "nifty200": nse_dict_list = hrhd_obj.nifty_list('nifty200_list') else: nse_dict_list = hrhd_obj.nifty_list('nifty_custom_list') else: nse_dict_list = hrhd_obj.nifty_list('nifty_custom_list') logger.info("Read Nifty instruments") i = 1 # print(len(args.)) if args.ip is not None: gateway_ip = args.ip hdate = args.date cid = args.cid else: gateway_ip = hrhdObj.get_value('common', 'gateway_ip') hdate = hrhdObj.get_value('common', 'hrhd_date') cid = 1 for ins in nse_dict_list: logger.info(str(i) + " Of Nifty list " + "(" + ins['Symbol'] + ")") hrhd_obj.worker_as_process_ohlc_data( gateway_ip, hrhd_obj.get_ib_symbol_from_map(ins['Symbol']), hdate, random.randint(1, 3)) i = i + 1 fbuObj = FireBaseUtils() tick_bank_path = hrhdObj.get_with_base_path( 'common', 'tick_bank') + "/" + str(hdate) + "/" fbuObj.upload_all_file_in_dir_to_firebaseStorage(tick_bank_path, str(hdate))