NAME
Finance::FITF - Fast Intraday Transaction Format
SYNOPSIS
use Finance::FITF;
my $day = Finance::FITF->new_from_file('XTAF.TX-2010-11-19.fitf');
warn $day->header->{start}[0]; # start of the first session
warn $day->header->{end}[0]; # end of the first session
warn $day->header->{bar_seconds}; # number of seconds per bar
# last bar in the file. you can get open/high/low/close/volume from $bar
my $bar = $day->bar_at($day->header->{end}[0]);
# run the ticks in the last bar with the given callback
$day->run_ticks($bar->{index}, $bar->{index}+$bar->{ticks}-1,
sub { my ($time, $price, $volume) = @_; });
DESCRIPTION
Finance::FITF provides access to the FITF format, an efficient storage format for intraday trading records.
FORMAT
The FITF format consists 3 parts:
- header
-
The header defines the name, date, and sessions of the transactions that the file is describing.
The fields and packing format of FITF header are:
- magic a2
-
magic for FITF files should be
"\x1f\xf1"
. - version n
-
FITF format version
- date a8
-
YYYYMMDD string of the trading day
- time_zone Z31
-
Long time zone name. For example: America/Chicago, Asia/Taipei.
- start N:3
-
start timestamp of each session
- end N:3
-
end timestamp of each session
- records N
-
number of tick records
- bar_seconds n
-
number of seconds per bar
- format N
-
flags for bar and tick sizing and format
- divisor N
-
the number that the all prices in this file should be divided by
- name Z47
-
free form name
- bars
-
The number of bars in the file is determined by the total seconds in the sessions defined in the header, divided by
bar_seconds
defined in the header. The first bar denotes trading transaction between the start of the session, until and excludingbar_seconds
past the start of the session.Each bar contains the
open
,high
,low
, andclose
prices information of the given period, as well asvolume
andticks
.The
index
field points to the start of the tick records of the period of the current bar. - ticks
-
The number of ticks in the file is determined by the
records
field in the header. Each record containsprice
andvolume
for the transaction. The time of the transaction is determined byoffset_min
andoffset_msec
, which are time offset in minutes and milliseconds from the start of the first session, respectively.
METHODS
- Finance::FITF->new_from_file($fname)
-
Returns Finance::FITF object for the given FITF-formatted file at
$fname
. - $self->bar_at($ts)
-
Returns the bar hash located at
$ts
. The bar represents trades within thebar_seconds
before and excluding the epoch timestamp$ts
. - $self->bar_idx($ts)
-
Returns the index of the bar located
$ts
. - $self->run_ticks($start, $end, $cb)
-
Iterate the ticks indexed by
$start
and$end
for the callback$cb
. the callback takes timestamp, price, and volume as argument. - $self->run_bars($start, $end, $cb)
-
Iterate the bars indexed by
$start
and$end
for the callback$cb
. the callback takes the bar hash. - $self->run_bars_as($bar_seconds, $offset, $cb)
-
Aggregate bars into
$bar_seconds
-bars for the callback$cb
. The callback takes timestamp of the bar and the bar hash. - $self->format_timestamp($ts)
-
A faster helper to format timestamp as
"%F %T"
in the$self-
header->{time_zone}>.
ATTRIBUTES
- header
- fh
- nbars
AUTHOR
Chia-liang Kao <clkao@clkao.org>
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.