Пример #1
0
        def open_interest_is_valid(ticker):
            ticker = self.ib.reqMktData(ticker.contract, genericTickList="101")

            def open_interest_is_not_ready():
                if right.startswith("P"):
                    return util.isNan(ticker.putOpenInterest)
                if right.startswith("C"):
                    return util.isNan(ticker.callOpenInterest)

            try:
                while_n_times(
                    open_interest_is_not_ready,
                    lambda: self.ib.waitOnUpdate(timeout=5),
                    25,
                )
            except:
                return False

            self.ib.cancelMktData(ticker.contract)

            # The open interest value is never present when using historical
            # data, so just ignore it when the value is None
            if right.startswith("P"):
                return (ticker.putOpenInterest >=
                        self.config["target"]["minimum_open_interest"])
            if right.startswith("C"):
                return (ticker.callOpenInterest >=
                        self.config["target"]["minimum_open_interest"])
Пример #2
0
 def wait_for_market_price(self, ticker):
     try:
         while_n_times(
             lambda: util.isNan(ticker.marketPrice()),
             lambda: self.ib.waitOnUpdate(timeout=5),
             25,
         )
     except:
         return False
     return True
Пример #3
0
 def wait_for_trade_submitted(self, trade):
     while_n_times(
         lambda: trade.orderStatus.status not in [
             "Submitted",
             "Filled",
             "ApiCancelled",
             "Cancelled",
         ],
         lambda: self.ib.waitOnUpdate(timeout=5),
         25,
     )
     return trade
Пример #4
0
 def wait_for_market_price(self, ticker):
     while_n_times(
         lambda: util.isNan(ticker.marketPrice()),
         lambda: self.ib.waitOnUpdate(timeout=2),
         10,
     )
Пример #5
0
 def wait_for_midpoint_price(self, ticker):
     while_n_times(
         lambda: util.isNan(ticker.midpoint()),
         lambda: self.ib.waitOnUpdate(timeout=3),
         10,
     )