コード例 #1
0
    def test_week_and_time_composed_rule(self, type):
        week_rule = NthTradingDayOfWeek(0) if type == 'week_start' else \
            NDaysBeforeLastTradingDayOfWeek(4)
        time_rule = AfterOpen(minutes=60)

        week_rule.cal = self.nyse_cal
        time_rule.cal = self.nyse_cal

        composed_rule = week_rule & time_rule

        should_trigger = composed_rule.should_trigger

        week_minutes = self.nyse_cal.trading_minutes_for_days_in_range(
            datetime.date(year=2014, month=1, day=6),
            datetime.date(year=2014, month=1, day=10))

        dt = pd.Timestamp('2014-01-06 14:30:00', tz='UTC')
        trigger_day_offset = 0
        trigger_minute_offset = 60
        n_triggered = 0

        for m in week_minutes:
            if should_trigger(m):
                self.assertEqual(
                    m, dt + timedelta(days=trigger_day_offset) +
                    timedelta(minutes=trigger_minute_offset))
                n_triggered += 1

        self.assertEqual(n_triggered, 1)
コード例 #2
0
    def test_week_and_time_composed_rule(self, rule_type):
        week_rule = NthTradingDayOfWeek(0) if rule_type == 'week_start' else \
            NDaysBeforeLastTradingDayOfWeek(4)
        time_rule = AfterOpen(minutes=60)

        week_rule.cal = self.cal
        time_rule.cal = self.cal

        composed_rule = week_rule & time_rule

        should_trigger = composed_rule.should_trigger

        week_minutes = self.cal.minutes_for_sessions_in_range(
            pd.Timestamp("2014-01-06", tz='UTC'),
            pd.Timestamp("2014-01-10", tz='UTC'))

        dt = pd.Timestamp('2014-01-06 14:30:00', tz='UTC')
        trigger_day_offset = 0
        trigger_minute_offset = 60
        n_triggered = 0

        for m in week_minutes:
            if should_trigger(m):
                self.assertEqual(
                    m, dt + timedelta(days=trigger_day_offset) +
                    timedelta(minutes=trigger_minute_offset))
                n_triggered += 1

        self.assertEqual(n_triggered, 1)
コード例 #3
0
ファイル: test_events_nyse.py プロジェクト: AtwooTM/zipline
    def test_week_and_time_composed_rule(self, type):
        week_rule = NthTradingDayOfWeek(0) if type == 'week_start' else \
            NDaysBeforeLastTradingDayOfWeek(4)
        time_rule = AfterOpen(minutes=60)

        week_rule.cal = self.cal
        time_rule.cal = self.cal

        composed_rule = week_rule & time_rule

        should_trigger = composed_rule.should_trigger

        week_minutes = self.cal.minutes_for_sessions_in_range(
            pd.Timestamp("2014-01-06", tz='UTC'),
            pd.Timestamp("2014-01-10", tz='UTC')
        )

        dt = pd.Timestamp('2014-01-06 14:30:00', tz='UTC')
        trigger_day_offset = 0
        trigger_minute_offset = 60
        n_triggered = 0

        for m in week_minutes:
            if should_trigger(m):
                self.assertEqual(m, dt + timedelta(days=trigger_day_offset) +
                                 timedelta(minutes=trigger_minute_offset))
                n_triggered += 1

        self.assertEqual(n_triggered, 1)
コード例 #4
0
    def test_far_after_open(self):
        minute_groups = minutes_for_days(self.cal, ordered_days=True)
        after_open = AfterOpen(hours=9, minutes=25)
        after_open.cal = self.cal

        for session_minutes in minute_groups:
            for i, minute in enumerate(session_minutes):
                if i != 564:
                    self.assertFalse(after_open.should_trigger(minute))
                else:
                    self.assertTrue(after_open.should_trigger(minute))
コード例 #5
0
ファイル: test_events_cme.py プロジェクト: AtwooTM/zipline
    def test_far_after_open(self):
        minute_groups = minutes_for_days(self.cal, ordered_days=True)
        after_open = AfterOpen(hours=9, minutes=25)
        after_open.cal = self.cal

        for session_minutes in minute_groups:
            for i, minute in enumerate(session_minutes):
                if i != 564:
                    self.assertFalse(after_open.should_trigger(minute))
                else:
                    self.assertTrue(after_open.should_trigger(minute))
コード例 #6
0
ファイル: test_events.py プロジェクト: fangchenli/zipline
    def test_invalid_offset(self):
        with self.assertRaises(ValueError):
            AfterOpen(hours=12, minutes=1)

        with self.assertRaises(ValueError):
            AfterOpen(hours=0, minutes=0)

        with self.assertRaises(ValueError):
            BeforeClose(hours=12, minutes=1)

        with self.assertRaises(ValueError):
            BeforeClose(hours=0, minutes=0)
コード例 #7
0
    def test_offset_too_far(self):
        minute_groups = minutes_for_days(self.cal, ordered_days=True)

        # Neither rule should ever fire, since they are configured to fire
        # 11+ hours after the open or before the close.  a NYSE session is
        # never longer than 6.5 hours.
        after_open_rule = AfterOpen(hours=11, minutes=11)
        after_open_rule.cal = self.cal

        before_close_rule = BeforeClose(hours=11, minutes=5)
        before_close_rule.cal = self.cal

        for session_minutes in minute_groups:
            for minute in session_minutes:
                self.assertFalse(after_open_rule.should_trigger(minute))
                self.assertFalse(before_close_rule.should_trigger(minute))
コード例 #8
0
ファイル: test_events_nyse.py プロジェクト: AtwooTM/zipline
    def test_offset_too_far(self):
        minute_groups = minutes_for_days(self.cal, ordered_days=True)

        # Neither rule should ever fire, since they are configured to fire
        # 11+ hours after the open or before the close.  a NYSE session is
        # never longer than 6.5 hours.
        after_open_rule = AfterOpen(hours=11, minutes=11)
        after_open_rule.cal = self.cal

        before_close_rule = BeforeClose(hours=11, minutes=5)
        before_close_rule.cal = self.cal

        for session_minutes in minute_groups:
            for minute in session_minutes:
                self.assertFalse(after_open_rule.should_trigger(minute))
                self.assertFalse(before_close_rule.should_trigger(minute))
コード例 #9
0
ファイル: test_events.py プロジェクト: MridulS/zipline
 def test_AfterOpen(self):
     should_trigger = AfterOpen(minutes=5, hours=1).should_trigger
     for d in self.trading_days:
         for m in islice(d, 65):
             self.assertFalse(should_trigger(m))
         for m in islice(d, 65, None):
             self.assertTrue(should_trigger(m))
コード例 #10
0
ファイル: events.py プロジェクト: whigg/sharadar_db_bundle
 def live_algo_start(offset=2):
     ny_tz = pytz.timezone('America/New_York')
     now = datetime.now(ny_tz)
     now = "%0d:%0d" % (now.hour, now.minute)
     td = datetime.strptime(now, "%H:%M") - datetime.strptime(
         "09:30", "%H:%M")
     h, r = divmod(td.seconds, 3600)
     m, s = divmod(r, 60)
     m = m + offset
     return AfterOpen(offset=None, hours=h, minutes=m)
コード例 #11
0
ファイル: test_events.py プロジェクト: zhoulingjun/zipline
 def test_AfterOpen(self, ms):
     should_trigger = AfterOpen(minutes=5, hours=1).should_trigger
     for m in islice(ms, 64):
         # Check the first 64 minutes of data.
         # We use 64 because the offset is from market open
         # at 13:30 UTC, meaning the first minute of data has an
         # offset of 1.
         self.assertFalse(should_trigger(m))
     for m in islice(ms, 64, None):
         # Check the rest of the day.
         self.assertTrue(should_trigger(m))
コード例 #12
0
 def setUpClass(cls):
     cls.env = TradingEnvironment()
     # On the AfterOpen and BeforeClose tests, we want ensure that the
     # functions are pure, and that running them with the same input will
     # provide the same output, regardless of whether the function is run 1
     # or N times. (For performance reasons, we cache some internal state
     # in AfterOpen and BeforeClose, but we don't want it to affect
     # purity). Hence, we use the same before_close and after_open across
     # subtests.
     cls.before_close = BeforeClose(hours=1, minutes=5)
     cls.after_open = AfterOpen(hours=1, minutes=5)
     cls.class_ = None  # Mark that this is the base class.
コード例 #13
0
ファイル: events.py プロジェクト: whigg/sharadar_db_bundle
 def market_open(offset=None, hours=None, minutes=None):
     return AfterOpen(offset=offset, hours=hours, minutes=minutes)