def request_market_data(self, requested_data, ticker): next_req_id = self.get_next_req_id() self.calling_info[next_req_id] = core.Struct( ticker=ticker, requested_data=requested_data, method='request_market_data') self.reqMktData(next_req_id, util.get_contract(ticker), "", True, False, [])
def request_market_data(self, req_id, ticker): if self.live_mode: self.reqMktData(req_id, util.get_contract(ticker), "", False, False, []) else: with open(self.input_file, "r") as f: data = json.load(f) for time, price in data: self.current_tick_time[ticker] = time self.current_tick_price[ticker] = price self.tickPrice(self.current_req_id, 4, price, {})
def request_historical_data(self, requested_data, ticker): # Remember queries in this session requested_data_key = f"{requested_data},{ticker}" if requested_data_key in self.session_requested_data: gcnv.messages.append(f"{requested_data_key} already requested") return else: self.session_requested_data.add(requested_data_key) if requested_data == "iv": what_to_show = "OPTION_IMPLIED_VOLATILITY" elif requested_data == "hv": what_to_show = "HISTORICAL_VOLATILITY" elif requested_data == "stock": what_to_show = "ASK" else: raise RuntimeError("Unknown requested_data parameter") # Adjusting max duration_string query variable duration_string = "2 Y" if util.contract_type(ticker) == "FUT": duration_string = "3 M" last = gcnv.data_handler.get_max_stored_date(requested_data, ticker) if last is not None: delta = datetime.today() - last if delta.days <= 0: return elif delta.days >= 365: gcnv.data_handler.delete_ticker(ticker) else: duration_string = f"{delta.days + 1} D" logging.info( f"Last historical query duration string: {duration_string}") # Class level mappings next_req_id = self.get_next_req_id() self.calling_info[next_req_id] = core.Struct( ticker=ticker, requested_data=requested_data) # Query self.reqHistoricalData(next_req_id, util.get_contract(ticker), '', duration_string, "1 day", what_to_show, 1, 1, False, [])
def place_order(self, monitor, action, quantity, price=None, order_id=None, test=False): with self.place_order_lock: order = Order() if price == None: order.orderType = "MKT" else: order.orderType = "LMT" order.lmtPrice = price order.totalQuantity = quantity order.action = action # "BUY"|"SELL" if order_id is None: order_id = self.get_next_order_id() assert monitor not in self.order_id_to_monitor_map.values() self.order_id_to_monitor_map[order_id] = monitor if not self.live_mode or test: self.orderStatus(order_id, "Submitted", 1, self.remaining.get(monitor, 0), 0, 0, 0, 0, 0, "") self.transmit_order(monitor, order) else: self.placeOrder(order_id, util.get_contract(monitor.ticker), order)
def request_historical_data(self, ticker): # Remember queries in this session if ticker in self.session_requested_data: logging.info(f"{ticker} already requested") return else: self.session_requested_data.add(ticker) # Setting query variables duration_string = "1800 S" bar_size = "1 secs" # "1 secs" # "1 min" # "1 hour" what_to_show = "MIDPOINT" # Class level mappings next_req_id = self.get_next_req_id() self.req_id_to_stock_ticker_map[next_req_id] = ticker # Query self.reqHistoricalData(next_req_id, util.get_contract(ticker), '', duration_string, bar_size, what_to_show, 1, 2, []) print("Requesting historical data")