otp.SqlQuery#

class SqlQuery(sql_statement, merge_all_symbols=False, separate_dbname=False)#

Bases: onetick.query.query.SqlQuery

Constructs SQL query object.

Parameters
  • sql_statement (str) – The SQL statement string.

  • merge_all_symbols (bool) – If set to True, ticks returned by the query for all symbols get merged into a single time series.

  • separate_dbname (bool) – If set to True, and merge_all_symbols is set to True, SYMBOL_NAME field contains a symbol name without the database name, and DB_NAME field contains the database name for a symbol.

Examples

Select two fields from a single tick type and symbol and return first three ticks from a single day:

>>> otp.run(
...     otp.SqlQuery("select PRICE,SIZE from NYSE_TAQ.TRD"
...                  " where symbol_name = 'AAPL'"
...                  " and start_time = '2022-03-01 00:00:00 GMT' and end_time = '2022-03-02 00:00:00 GMT'"
...                  " limit 3")
... )
                     Time  PRICE  SIZE
0 2022-03-01 00:00:00.000    1.3   100
1 2022-03-01 00:00:00.001    1.4    10
2 2022-03-01 00:00:00.002    1.4    50

Join quotes and trades:

>>> otp.run(
...     otp.SqlQuery("select t.PRICE,q.ASK_PRICE,q.BID_PRICE"
...                  " from NYSE_TAQ.TRD t join NYSE_TAQ.QTE q"
...                  " on sametime_as_existing(t.timestamp, q.timestamp, 0) = TRUE"
...                  " where t.symbol_name = 'AAPL' and q.symbol_name = 'AAPL'"
...                  " and start_time = '2022-03-01 00:00:00 GMT' and end_time = '2022-03-02 00:00:00 GMT'"
...                  " limit 2")
... )
                     Time  T.PRICE  Q.ASK_PRICE  Q.BID_PRICE
0 2022-03-01 00:00:00.001      1.4          1.5          1.2
1 2022-03-01 00:00:00.002      1.4          1.4          1.3

Calculate average price of trades across several symbols:

>>> otp.run(
...     otp.SqlQuery("select COUNT(*) as COUNT, AVG(PRICE) as AVG_PRICE"
...                  " from NYSE_TAQ.TRD"
...                  " where symbol_name in ('AAPL', 'AAP')"
...                  " and start_time = '2022-03-01 00:00:00 GMT' and end_time = '2022-03-02 00:00:00 GMT'",
...                  merge_all_symbols=True)
... )
                 Time  COUNT  AVG_PRICE
0 2022-03-01 19:00:00    5.0     18.976

See also

otp.run