NAME
Quant::Framework::Spot::DatabaseAPI
DESCRIPTION
The API class which we can query feed database.
This class acts as a facade to the functions available in the DB. That is to say that that actual API is expressed by the functions in the DB.
Each function available here has a function with same name inside the db.
If any of the functions fail due to any reason it will cause an exception thrown straight from DBI layer.
default_prefix
The prefix used to create name of the table `feed.tick` which will contain spot, timestamp and underlying columns.
dbh
Return database handle. If db_handle is a normal reference, it will be used directly. If it is a code-ref, it will be invoked to get the database handle.
underlying
The underlying symbol for which this API will fetch data
invert_values
If this argument is set, all tick and OHLC data will have their value inverted. This is useful when we have EURUSD feeds information but want to have data for USDEUR underlying.
use_official_ohlc
In case there are official and non-official OHLC values for an underlying, this flag specifies which type of data we want
tick_at_for_interval
Returns ticks in the given interval.
METHODS
ticks_start_end
get ticks from feed db filtered by - start_time, end_time - All ticks between <start_time> and <end_time>
Returns ArrayRef[Quant::Framework::Spot::Tick]
get_first_tick
Find the first tick which breaches a barrier
ticks_start_limit
get ticks from feed db filtered by - start_time, limit - <limit> number of ticks starting from <start_time>
Returns ArrayRef[Quant::Framework::Spot::Tick]
ticks_end_limit
get ticks from feed db filtered by - end_time, limit - <limit> number ticks before <end_time>
Returns ArrayRef[Quant::Framework::Spot::Tick]
tick_at
get a valid tick at time given or not a valid tick before a given time. Accept argument - end_time - Time at which we want the tick - allow_inconsistent - if this is passed then we get the last available tick, we do not care if its a valid ick or not.
Returns Quant::Framework::Spot::Tick
tick_after
get tick from feed db after the time given. - start_time - the first tick after <start_time>
Returns ArrayRef[Quant::Framework::Spot::Tick]
ticks_start_end_with_limit_for_charting
get ticks from feed db filtered by - start_time, end_time, limit - all ticks between <start_time> and <end_time> and limit to <limit> entries. This method is appropriate for charting applications where a limited number of prices are going to be displayed.
Returns ArrayRef[Quant::Framework::Spot::Tick]
$self->ohlc_start_end(\%args)
This method returns reference to the list of OHLC for the specified period. Accepts following arguments:
- start_time
-
Compute OHLC starting from the specified time. Note, that if start_time is not at the beginning of the unit used by the source table (minutes, hour, or days depending on aggregation_period) it will be aligned to the start of the next unit. But timestamp of the returned OHLC may be pointing to earlier moment of time, e.g. for weekly and monthly OHLC it will point to the start of week or month, even though actual OHLC value may be computed from the middle of week or month.
- end_time
-
Compute OHLC till specified time. Note, that it will be aligned so timestamp would be multiple of aggregation_period.
- aggregation_period
-
Compute OHLCs for periods of the specified duration.
if period is less than a minute, then feed.tick table is used a the source
if period is from one minute and less than an hour, then feed.ohlc_minutely is used as source. Using period that is not multiple of a minute is not wise as returned data may not make much sense.
if period is one hour or more, but less than a day, then feed.ohlc_hourly is used as source of data. Don't use intervals that not multiple of an hour.
if period is a day or more, then ohlc_daily is used as the source of data. Don't use intervals that are not multiple of a day. If number of days is 7 then end_time will be aligned to the end of the week, and all intevals will start at the start of the week (first interval may not actually start at the start of the week, although timestamp in OHLC will indicate that it is). If number of days is 30 then end_time will be aligned to the end of the month and all intervals will start at the start of the month (except maybe the first one).
If interval is multiple of a day, than method will use official daily OHLC if underlying has daily OHLC. It will never set official property or returned OHLC objects though.
Method returns reference to a list of Quant::Framework::Spot::OHLC
$self->ohlc_daily_list(\%args)
This method returns reference to list of daily OHLC for the specified period. First and last OHLC maybe computed for the part of the day using ticks in feed.tick table and not precomputed daily OHLC, so these two are non-official OHLC. The rest of OHLCs may be official, but official attribute won't be set on them. Method accepts the following parameters:
- start_time
-
Compute OHLCs starting from the specified time
- end_time
-
Compute OHLCs till the specified moment of time
Method returns reference to a list of Quant::Framework::Spot::OHLC objects
ohlc_start_end_with_limit_for_charting
Returns OHLC in the given start/end period
ohlc_daily_until_now_for_charting
Returns daily OHLC values for the period starting from given date till today.