Пример #1
0
    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 ##")
Пример #2
0
 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)
Пример #3
0
    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 ##")
Пример #4
0
    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()
Пример #5
0
 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())
Пример #6
0
 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)
Пример #7
0
 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())
Пример #8
0
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))