otp.Tick#

class Tick(offset, offset_part, time, timezone_for_time, symbol, db, start, end, date, tick_type, bucket_units, num_ticks_per_timestamp, kwargs, bucket_interval=0, bucket_time='millisecond')#

Bases: onetick.py.core.source.Source

Generate single tick object

Parameters
  • offset (int, datetime offset, default=0) – tick timestamp offset from query start time in offset_part

  • offset_part (one of [nanosecond, millisecond, second, minute, hour, day, dayofyear, weekday, week, month, quarter, year], default=millisecond #noqa) – unit of time to calculate offset from. Could be omitted if datetime offset object set as offset.

  • time (otp.datetime) – fixed time to set to all ticks. Note that this time should be inside time interval set by start and end parameters or by query time range.

  • timezone_for_time (str) – timezone of the time

  • symbol (str, list of str, Source, query, eval query) – Symbol(s) from which data should be taken.

  • db (str) – Database to use for tick generation

  • start (otp.datetime) – start time for tick generation. By default the start time of the query will be used.

  • end (otp.datetime) – end time for tick generation. By default the end time of the query will be used.

  • date (otp.datetime – allows to specify a whole day) – instead of passing explicitly start and end parameters. If it is set along with the start and end parameters then last two are ignored.

  • tick_type (str) – Special tick_type TICK_GENERATOR will be used by default. You can use onetick.py.adaptive for the value if you want to use sink node tick type instead of defining your own.

  • bucket_units ('seconds', 'days' or 'months') – Unit for value in bucket_interval. Default is ‘seconds’.

  • num_ticks_per_timestamp (int) – The number of ticks to generate for every value of timestamp.

  • kwargs – dictionary of columns names with their values.

  • bucket_interval (Union[int, onetick.py.core.column_operations.base.Operation], default=0) –

    Determines the length of each bucket (units depends on bucket_units).

    If Operation passed, acts as bucket_end_condition.

  • bucket_time (Literal['start', 'end'], default=end) –

    Control output timestamp.

    • start

      the timestamp assigned to the bucket is the start time of the bucket.

    • end

      the timestamp assigned to the bucket is the end time of the bucket.

Examples

Simple usage, generate single tick:

>>> t = otp.Tick(A=1, B='string', C=3.14, D=otp.dt(2000, 1, 1, 1, 1, 1, 1))
>>> otp.run(t)
        Time  A       B     C                          D
0 2003-12-01  1  string  3.14 2000-01-01 01:01:01.000001

Generate single tick with offset:

>>> t = otp.Tick(A=1, offset=otp.Minute(10))
>>> otp.run(t)
        Time           A
0 2003-12-01 00:10:00  1

Generate one tick for each day in a week:

>>> t = otp.Tick(A=1, start=otp.dt(2023, 1, 1), end=otp.dt(2023, 1, 8), bucket_interval=24 * 60 * 60)
>>> otp.run(t)
        Time  A
0 2023-01-01  1
1 2023-01-02  1
2 2023-01-03  1
3 2023-01-04  1
4 2023-01-05  1
5 2023-01-06  1
6 2023-01-07  1

Generate tick every hour and add 1 minute offset to ticks’ timestamps:

>>> t = otp.Tick(A=1, offset=1, offset_part='minute', bucket_interval=60 * 60)
>>> t.head(5)
                  Time  A
0  2003-12-01 00:01:00  1
1  2003-12-01 01:01:00  1
2  2003-12-01 02:01:00  1
3  2003-12-01 03:01:00  1
4  2003-12-01 04:01:00  1

Generate tick every hour and set fixed time:

>>> t = otp.Tick(A=1, time=otp.dt(2023, 1, 2, 3, 4, 5, 6), bucket_interval=60 * 60,
...              start=otp.dt(2023, 1, 1), end=otp.dt(2023, 1, 8))
>>> t.head(5)
                        Time  A
0 2023-01-02 03:04:05.000006  1
1 2023-01-02 03:04:05.000006  1
2 2023-01-02 03:04:05.000006  1
3 2023-01-02 03:04:05.000006  1
4 2023-01-02 03:04:05.000006  1

See also

TICK_GENERATOR OneTick event processor