Trading System API  3.0
Library for Simulating and Deploying Trading and Investment Strategies
tsa::table Class Reference

Supports 'write', 'update', 'delete', and 'read' operations on series_base tables. More...

Detailed Description

Supports 'write', 'update', 'delete', and 'read' operations on series_base tables.

See Chapter 7 of the TSA User Guide for instructions on how to use this class.

Note that a table can only be opened successfully with a TableWriter if the table is 'writeable'. See Database::TableIsWriteable().

Example - Appending Records
Database db("DEMO_DB", ="c:/db/", CREATE | TRUNCATE); //1
db.CreateSchema("ohlcv", "open:d, high:d, low:d, close:d, volume:L"); //2
db.CreateTable("demo.series.ohlcv.daily", "ohlcv"); //3
TableWriter writer(db, "demo.series.ohlcv.daily"); //4
Date date(2005, JAN ,1); //5
for(size_t r=1; r < 11; r++)
{
writer << r //7 inserting values
<< (r + 1) //8 ... using operator<<
<< Variant(type_t::float64) //9 value with NIL flag set to 'true'
<< (r + 3) //10
<< String::ToString(r + 4); //11 shows how data is internally changed to int8
writer.Append(date++); //12 incrementing data by one day
}
writer.Close(); //13
db.PrintTable("demo.series.ohlcv.daily", file); //14
Example - Reading Records
Database db("DEMO_DB", "c:/db/", NO_CREATE); //1
TableWriter writer(db, "demo.series.ohlcv.daily");//2
writer.SetPosition(0); //3 go to first record (default position)
do{
file << writer.GetTimestamp() << ", " //filestream already exits
<< writer["open"] << ", "
<< writer["high"] << ", "
<< writer[2] << ", "
<< writer[3] << ", "
<< writer[4] << std::endl; //4 writing record to stream
}
while( writer++ ); //5 incrementing internal cursor
file << std::endl; //6
file << "Num Records: " << writer.GetSize() << std::endl;
file << "Num Fields: " << writer.GetFieldCount() << std::endl;
file << "First Field Name: " << writer.GetFieldName(0) << std::endl;
file << "Last Field Name: " << writer.GetFieldName(writer.GetFieldCount() - 1) << std::endl; //10
Example - Updating Records
Database db("DEMO_DB", "c:/db/", NO_CREATE); //1
TableWriter writer(db, "demo.series.ohlcv.daily"); //3
std::vector<Variant> record; //4
writer.SetPosition(0); //5
do{
writer.Read(record); //6 reading the record (sized automatically)
record[0] = (double)record[0] * 10000; //7 changing field values
record[1] = 99999; //8
record[2] = (int)record[1] + 1; //9
record[3] = Variant(); //10
record[4] = Variant(); //11
writer.Update(record); //12 updating the record
}
while(writer++); //13
writer.Close(); //14
db.PrintTable("demo.series.ohlcv.daily", file); //15