Пример #1
0
 def test_real_time_clock_schedule_relative(self):
     start = self.realtime_clock.now()
     print start
     print DateUtils.unixtimemillis_to_datetime(start)
     self.realtime_clock.schedule_relative(datetime.timedelta(seconds=1), self.realtime_action)
     self.assertEquals([], self.endtime)
     time.sleep(1.1)
     self.assertEquals(1, len(self.endtime))
     self.assertAlmostEqual(1000, self.endtime[0] - start, -2)
Пример #2
0
 def test_real_time_clock_schedule_relative(self):
     start = self.realtime_clock.now()
     print start
     print DateUtils.unixtimemillis_to_datetime(start)
     self.realtime_clock.schedule_relative(datetime.timedelta(seconds=1),
                                           self.realtime_action)
     self.assertEquals([], self.endtime)
     time.sleep(1.1)
     self.assertEquals(1, len(self.endtime))
     self.assertAlmostEqual(1000, self.endtime[0] - start, -2)
Пример #3
0
    def test_timestamp_conversion(self):
        dt = datetime.datetime(year=2000, month=1, day=1, hour=7, minute=30, second=30)
        ts = DateUtils.datetime_to_unixtimemillis(dt)
        self.assertEqual(946683030000, ts)

        dt2 = DateUtils.unixtimemillis_to_datetime(ts)
        self.assertEquals(dt, dt2)

        dt3 = datetime.datetime.fromtimestamp(0)

        ts2 = DateUtils.datetime_to_unixtimemillis(dt3)
        dt4 = DateUtils.unixtimemillis_to_datetime(ts2)
        self.assertEquals(0, ts2)
        self.assertEquals(dt3, dt4)
Пример #4
0
    def on_bar(self, bar):
        reval_date = DateUtils.unixtimemillis_to_datetime(bar.timestamp)
        futures_expiry_dict = VIXFuture.future_expirydays_calculator(reval_date, self.instruments)

        active_futures = {k: v for k, v in futures_expiry_dict.iteritems()
                                if v > self.exp_date_lb and v < self.exp_date_ub}

        active_futures_sorted = OrderedDict(sorted(active_futures.items(), key=lambda y: y[1]))

        if bar.inst_id in active_futures_sorted:
            logger.debug("id is in active futures" % bar.inst_id)
            roll = VIXFuture.daily_roll(bar.adj_close, self.vix_index.now("value"), active_futures_sorted[bar.inst_id])
            logger.debug("roll = %s" % roll)
            if not self.portfolio.has_position(self.stg_id, bar.inst_id):
                threshold = self.get_stg_config_value("short_entry_threshold", 0.02)
                if roll > threshold:
                    logger.debug("Roll > threshold %s" % threshold)
                    logger.debug("Now send a short order")
                    self.market_order(inst_id=bar.inst_id, action=OrdAction.SELL, qty=self.qty)

            else:
                threshold = self.get_stg_config_value("short_exit_threshold", -0.01)
                if roll < threshold:
                    logger.debug("Roll < threshold %s" % threshold)
                    logger.debug("Now exit")
                    self.market_order(inst_id=bar.inst_id, action=OrdAction.BUY, qty=self.qty)
Пример #5
0
    def test_real_time_clock_now(self):
        s1 = gevent.core.time()
        s2 = datetime.datetime.fromtimestamp(s1)
        print s1, s2
        s3 = self.realtime_clock.now()
        s4 = DateUtils.unixtimemillis_to_datetime(s3)
        print s3, s4

        self.assertAlmostEqual(s1 * 1000, s3, -2)
Пример #6
0
 def test_real_time_clock_schedule_absolute(self):
     start = self.realtime_clock.now()
     dt = DateUtils.unixtimemillis_to_datetime(start)
     abs_time = dt + datetime.timedelta(seconds=1)
     self.realtime_clock.schedule_absolute(abs_time, self.realtime_action)
     self.assertEquals([], self.endtime)
     time.sleep(1.1)
     self.assertEquals(1, len(self.endtime))
     self.assertAlmostEqual(1000, self.endtime[0] - start, -2)
Пример #7
0
    def test_real_time_clock_now(self):
        s1 = gevent.core.time()
        s2 = datetime.datetime.fromtimestamp(s1)
        print s1, s2
        s3 = self.realtime_clock.now()
        s4 = DateUtils.unixtimemillis_to_datetime(s3)
        print s3, s4

        self.assertAlmostEqual(s1 * 1000, s3, -2)
Пример #8
0
 def test_real_time_clock_schedule_absolute(self):
     start = self.realtime_clock.now()
     dt = DateUtils.unixtimemillis_to_datetime(start)
     abs_time = dt + datetime.timedelta(seconds=1)
     self.realtime_clock.schedule_absolute(abs_time, self.realtime_action)
     self.assertEquals([], self.endtime)
     time.sleep(1.1)
     self.assertEquals(1, len(self.endtime))
     self.assertAlmostEqual(1000, self.endtime[0] - start, -2)
Пример #9
0
    def test_timestamp_conversion(self):
        dt = datetime.datetime(year=2000,
                               month=1,
                               day=1,
                               hour=7,
                               minute=30,
                               second=30)
        ts = DateUtils.datetime_to_unixtimemillis(dt)
        self.assertEqual(946683030000, ts)

        dt2 = DateUtils.unixtimemillis_to_datetime(ts)
        self.assertEquals(dt, dt2)

        dt3 = datetime.datetime.fromtimestamp(0)

        ts2 = DateUtils.datetime_to_unixtimemillis(dt3)
        dt4 = DateUtils.unixtimemillis_to_datetime(ts2)
        self.assertEquals(0, ts2)
        self.assertEquals(dt3, dt4)
Пример #10
0
    def on_bar(self, bar):
        reval_date = DateUtils.unixtimemillis_to_datetime(bar.timestamp)
        futures_expiry_dict = VIXFuture.future_expirydays_calculator(
            reval_date, self.instruments)

        active_futures = {
            k: v
            for k, v in futures_expiry_dict.iteritems()
            if v > self.exp_date_lb and v < self.exp_date_ub
        }

        active_futures_sorted = OrderedDict(
            sorted(active_futures.items(), key=lambda y: y[1]))

        if bar.inst_id in active_futures_sorted:
            logger.debug("id is in active futures" % bar.inst_id)
            roll = VIXFuture.daily_roll(bar.adj_close,
                                        self.vix_index.now("value"),
                                        active_futures_sorted[bar.inst_id])
            logger.debug("roll = %s" % roll)
            if not self.portfolio.has_position(self.stg_id, bar.inst_id):
                threshold = self.get_stg_config_value("short_entry_threshold",
                                                      0.02)
                if roll > threshold:
                    logger.debug("Roll > threshold %s" % threshold)
                    logger.debug("Now send a short order")
                    self.market_order(inst_id=bar.inst_id,
                                      action=OrdAction.SELL,
                                      qty=self.qty)

            else:
                threshold = self.get_stg_config_value("short_exit_threshold",
                                                      -0.01)
                if roll < threshold:
                    logger.debug("Roll < threshold %s" % threshold)
                    logger.debug("Now exit")
                    self.market_order(inst_id=bar.inst_id,
                                      action=OrdAction.BUY,
                                      qty=self.qty)
Пример #11
0
        dt = DateUtils.unixtimemillis_to_datetime(start)
        abs_time = dt + datetime.timedelta(seconds=1)
        self.realtime_clock.schedule_absolute(abs_time, self.realtime_action)
        self.assertEquals([], self.endtime)
        time.sleep(1.1)
        self.assertEquals(1, len(self.endtime))
        self.assertAlmostEqual(1000, self.endtime[0] - start, -2)

    def test_real_time_clock_schedule_relative(self):
        start = self.realtime_clock.now()
        print start
        print DateUtils.unixtimemillis_to_datetime(start)
        self.realtime_clock.schedule_relative(datetime.timedelta(seconds=1), self.realtime_action)
        self.assertEquals([], self.endtime)
        time.sleep(1.1)
        self.assertEquals(1, len(self.endtime))
        self.assertAlmostEqual(1000, self.endtime[0] - start, -2)

    def test_real_time_clock_now(self):
        s1 = gevent.core.time()
        s2 = datetime.datetime.fromtimestamp(s1)
        print s1, s2
        s3 = self.realtime_clock.now()
        s4 = DateUtils.unixtimemillis_to_datetime(s3)
        print s3, s4

        self.assertAlmostEqual(s1 * 1000, s3, -2)


print DateUtils.unixtimemillis_to_datetime(946683030000)
print DateUtils.unixtimemillis_to_datetime(946711830000)
Пример #12
0
        abs_time = dt + datetime.timedelta(seconds=1)
        self.realtime_clock.schedule_absolute(abs_time, self.realtime_action)
        self.assertEquals([], self.endtime)
        time.sleep(1.1)
        self.assertEquals(1, len(self.endtime))
        self.assertAlmostEqual(1000, self.endtime[0] - start, -2)

    def test_real_time_clock_schedule_relative(self):
        start = self.realtime_clock.now()
        print start
        print DateUtils.unixtimemillis_to_datetime(start)
        self.realtime_clock.schedule_relative(datetime.timedelta(seconds=1),
                                              self.realtime_action)
        self.assertEquals([], self.endtime)
        time.sleep(1.1)
        self.assertEquals(1, len(self.endtime))
        self.assertAlmostEqual(1000, self.endtime[0] - start, -2)

    def test_real_time_clock_now(self):
        s1 = gevent.core.time()
        s2 = datetime.datetime.fromtimestamp(s1)
        print s1, s2
        s3 = self.realtime_clock.now()
        s4 = DateUtils.unixtimemillis_to_datetime(s3)
        print s3, s4

        self.assertAlmostEqual(s1 * 1000, s3, -2)


print DateUtils.unixtimemillis_to_datetime(946683030000)
print DateUtils.unixtimemillis_to_datetime(946711830000)
Пример #13
0
 def schedule_absolute(self, datetime, action, state=None):
     if isinstance(datetime, (long, int)):
         datetime = DateUtils.unixtimemillis_to_datetime(datetime)
     self.scheduler.schedule_absolute(datetime, action, state)
Пример #14
0
 def update_time(self, timestamp):
     self.__current_timestamp_mills = timestamp
     self.scheduler.advance_to(DateUtils.unixtimemillis_to_datetime(timestamp))
Пример #15
0
def action(*arg):
    print DateUtils.unixtimemillis_to_datetime(realtime_clock.now())
Пример #16
0
def action(*arg):
    print DateUtils.unixtimemillis_to_datetime(realtime_clock.now())