15 #ifndef TSA_RECORDSTREAMS__INCLUDED 16 #define TSA_RECORDSTREAMS__INCLUDED 20 #include "TSASeriesTemplate.h" 21 #include "TSASeriesProxy.h" 22 #include "TSAComponent.h" 23 #include "TSADataDef.h" 30 class instrument_price_bar;
58 bool m_bOpenExists =
false;
60 bool m_bHighExists =
false;
62 bool m_bLowExists =
false;
64 bool m_bCloseExists =
false;
66 bool m_bVolumeExists =
false;
68 bool m_bOpenInterestExists =
false;
69 size_t m_nOpenInterestIdx;
70 bool m_bBidExists =
false;
72 bool m_bAskExists =
false;
74 bool m_bBidSizeExists =
false;
76 bool m_bAskSizeExists =
false;
78 bool m_bLastExists =
false;
80 bool m_bPriceExists =
false;
82 bool m_bValueExists =
false;
86 bool m_bIsConnected =
false;
87 bool m_bIsStrategyScheduler =
false;
90 enum price_bar_fields_availability {
97 price_bar_fields_availability m_price_bar_field_availability = not_analyzed;
98 bool determine_price_bar_field_availability(
void);
99 void update_price_bar(instrument_price_bar& price_bar);
128 void current_value(
const variant& value);
135 void set_connected(
bool is_connected_flag =
true);
141 bool is_connected(
void)
const;
143 void InitFieldIndices(
void);
150 size_t open_field_position(
void)
const;
156 size_t high_field_position(
void)
const;
162 size_t low_field_position(
void)
const;
168 size_t close_field_position(
void)
const;
171 void on_open__prepare_auto_series(
void);
172 virtual bool isa__get_ohlc_fields_exist(
void);
179 virtual void isa__set_forward_shift(
size_t);
182 virtual void isa__set_position(
const date_time&) = 0;
185 virtual bool isa__field_exists(
const std::string&) = 0;
188 virtual type_t isa__field_type(
size_t) = 0;
191 virtual size_t isa__field_index(
const std::string&) = 0;
194 virtual size_t isa__field_count() = 0;
197 virtual const std::string& isa__field_name(
size_t) = 0;
204 virtual date_time isa__get_record_timestamp(
void) = 0;
213 virtual size_t isa__size(
void) = 0;
216 virtual void isa__on_open(
void) = 0;
219 virtual variant isa__get_variant(
size_t idx) = 0;
222 virtual double isa__get_double(
size_t idx) = 0;
225 virtual void isa__update_value_at_position(
size_t idx) = 0;
237 virtual void isa__get_price_bar(
const date_time&
date_time, instrument_price_bar& priceBar) = 0;
256 virtual bool isa__get_time_of_next_bar(date_time& nextDateTime,
257 const date_time& currentDateTime) = 0;
264 virtual std::string isa__stream_name(
void)
const = 0;
270 virtual bool isa__implements_scheduling(
void)
const = 0;
282 return m_bIsStrategyScheduler;
284 void set_is_strategy_scheduler(
bool _b) {
285 m_bIsStrategyScheduler = _b;
288 size_t m_nOpenIdx_PMS, m_nHighIdx_PMS, m_nLowIdx_PMS, m_nCloseIdx_PMS;
294 virtual void cmp__evaluate_bar(
const date_time&)
override;
295 virtual void cmp__master_evaluate_bar(
const date_time&)
override;
299 std::vector<series_core> m_auto_series;
301 const series_core& open(
void)
const ;
302 const series_core& high(
void)
const;
303 const series_core& low(
void)
const;
304 const series_core& close(
void)
const;
305 const series_core& volume(
void)
const;
306 const series_core& bid(
void)
const;
307 const series_core& ask(
void)
const;
308 const series_core& bidsize(
void)
const;
309 const series_core& asksize(
void)
const;
310 const series_core& last(
void)
const;
311 const series_core& price(
void)
const;
312 const series_core& value(
void)
const;
313 const series_core& open_interest(
void)
const;
314 const series_core& at(
size_t)
const;
337 tsa_declare_testable;
359 bool Connected(
void)
const;
362 bool is_init(
void)
const;
365 void verify_is_init(
void)
const;
384 void set_forward_shift(
size_t shift_);
392 void init_auto_series(
void);
395 bool field_exists(
const std::string& field_name)
const;
398 size_t field_index(
const std::string& field_name)
const;
401 size_t field_count(
void)
const;
441 void set_default_stream_(
void);
444 void as_time_master(
void);
452 const series_core& operator()(
size_t index)
const;
459 const series_core& operator()(
const std::string& field_name_)
const;
570 virtual void osa__append(
const date_time& time_stamp,
571 std::vector<variant>&
record) = 0;
579 virtual void osa__prepare_stream(
const std::string& stream_name,
614 bool m_owns_adaptor_ptr;
618 bool m_bFirstRecordCompletedAndSchemaReset;
619 bool m_bPrevValueWasFieldName;
622 size_t m_nCurrInputPos;
623 size_t m_nNumNamedFields;
626 std::vector<type_t> m_Types;
627 std::vector<bool> m_IsValue;
628 std::vector<std::string> m_FieldName;
629 std::vector<variant> m_RecordSink_Values;
651 out_stream& operator<< (
const char* char_string);
686 void ProcessFirstLineValue(
const variant& var);
687 void ProcessValue(
const variant&);
689 void ResetCounters(
void);
690 bool FirstRecordCompletedAndSchemaReset(
void)
const;
692 virtual void cmp__post_evaluate_bar(
const date_time&)
override;
705 class dll_export in_stream_adaptor_platform
712 in_stream_adaptor_platform(
void);
713 virtual ~in_stream_adaptor_platform(
void);
716 void set_prices(
double _o,
double _h,
double _l,
double _c,
double _v);
717 void SetData(
const date_time& _ts,
double _o,
double _h,
double _l,
double _c,
double _v);
720 instrument_price_bar& priceBar)
override;
721 virtual bool isa__get_time_of_next_bar(date_time& nextDateTime,
722 const date_time& currentDateTime)
override;
723 virtual std::string isa__stream_name(
void)
const override;
724 virtual bool isa__implements_scheduling(
void)
const override;
727 virtual void isa__set_position(
const date_time&)
override;
728 virtual bool isa__field_exists(
const std::string&)
override;
729 virtual type_t isa__field_type(
size_t)
override;
730 virtual const std::string& isa__field_name(
size_t)
override;
731 virtual size_t isa__field_index(
const std::string&)
override;
732 virtual size_t isa__field_count(
void)
override;
733 virtual date_time isa__get_record_timestamp(
void)
override;
734 virtual date_time isa__begin(
void)
override;
735 virtual date_time isa__end(
void)
override;
736 virtual size_t isa__size(
void)
override;
737 virtual void isa__on_open(
void)
override {
741 virtual variant isa__get_variant(
size_t idx)
override;
742 virtual double isa__get_double(
size_t idx)
override;
743 virtual void isa__update_value_at_position(
size_t idx)
override;
Raise error if target already exists.
Definition: TSAStreams.h:534
Namespace for the 'Trading System API' library.
Definition: original1.TSA3Core.cpp:20
series< double > high
Built in series object corresponding to stream field 'high'.
Definition: TSAStreams.h:501
Class for managing native timeseries database files. Extremely high speed data access.
Definition: TSADatabase.h:118
series< double > bidsize
Built in series object corresponding to stream field 'bidsize'.
Definition: TSAStreams.h:513
bool get_is_strategy_scheduler(void) const
Returns true.
Definition: TSAStreams.h:281
Defines the columnar structure of a table. Each column has a name, data type and field size...
Definition: TSADataDef.h:88
virtual void cmp__finalize(void) override
Definition: TSAStreams.h:291
virtual ~out_stream_adaptor(void)
Destructor.
Definition: TSAStreams.h:559
Parent class for 'in-stream adaptors'. in_stream object rely on adaptors for access to underlying dat...
Definition: TSAStreams.h:52
Abstract base class for delegates of class out_stream.
Definition: TSAStreams.h:553
variant objects can represent values of different types.
Definition: TSAVariant.h:140
Represents a duration - the difference between two date_time values.
Definition: TSATime.h:945
Replace existing target if it already exists.
Definition: TSAStreams.h:533
_value_types_type
Data type enumeration used throughout the library. Intended to be used via type_t.
Definition: TSATypeDef.h:166
series< double > openint
Built in series object corresponding to stream field 'openint'.
Definition: TSAStreams.h:523
series< double > close
Built in series object corresponding to stream field 'close'.
Definition: TSAStreams.h:505
series< double > ask
Built in series object corresponding to stream field 'ask'.
Definition: TSAStreams.h:511
Parent class for many library classes.
Definition: TSATypeDef.h:462
A date of the Gregorian calendar.
Definition: TSATime.h:119
series< double > low
Built in series object corresponding to stream field 'low'.
Definition: TSAStreams.h:503
series< double > last
Built in series object corresponding to stream field 'last'.
Definition: TSAStreams.h:517
series< double > open
Built in series object corresponding to stream field 'open'.
Definition: TSAStreams.h:499
Class representing a database record.
Definition: TSADBRecord.h:52
series< double > volume
Built in series object corresponding to stream field 'volume'.
Definition: TSAStreams.h:507
virtual void cmp__finalize(void) override
Override this member in any derived class. It will be invoked when the strategy is finalized...
Definition: TSAStreams.h:587
static duration days(uint64_t)
Returns a duration equivalent to a given number of days.
Definition: TSATime.cpp:1402
Record stream class. Represents a standardised interface to all data sources. Instances rely on deleg...
Definition: TSAStreams.h:336
Class out_stream is used to write strategy output to various targets such as files, charts and series_base tables.
Definition: TSAStreams.h:611
Class strategy represents a trading or investment strategy.
Definition: TSAStrategy.h:108
series< double > bid
Built in series object corresponding to stream field 'bid'.
Definition: TSAStreams.h:509
series< double > value
Built in series object corresponding to stream field 'value'.
Definition: TSAStreams.h:521
Class representing a gregorian-date and time-of-day combination. The time component has microsecond r...
Definition: TSATime.h:428
series< double > asksize
Built in series object corresponding to stream field 'asksize'.
Definition: TSAStreams.h:515
rec_stream_open_flag
flag for opening output streams
Definition: TSAStreams.h:532
Base class for components such as series_base adaptors.
Definition: TSAComponent.h:34
Class instrument represents a tradeable security such as a stock, option, futures contract...
Definition: TSAInstrument.h:64
series< double > price
Built in series object corresponding to stream field 'price'.
Definition: TSAStreams.h:519