コード例 #1
0
 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, [])
コード例 #2
0
    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, {})
コード例 #3
0
    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, [])
コード例 #4
0
    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)
コード例 #5
0
    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")