14 #ifndef TSA_STRATEGY__INCLUDED 15 #define TSA_STRATEGY__INCLUDED 19 #include "TSATypeDef.h" 20 #include "TSAVariant.h" 23 #include "TSARandGen.h" 25 #include "TSASeriesManaged.h" 26 #include "TSAMemTable.h" 27 #include "TSAMetrics.h" 28 #include "TSAMetrics2.h" 29 #include "TSAInstrument.h" 31 #include "TSASupport.h" 32 #include "TSAPlatformMsg.h" 44 class strategy_delegate;
73 #define on_bar_close on_next 109 tsa_declare_testable;
111 friend class series_core;
112 friend class function_state;
113 friend class strategy_delegate;
115 friend void order_manager::ON_TRANSACTION(
const transaction&);
116 strategy_delegate* m_strat_delegate_ptr;
117 double m_risk_free_annual_rate_of_return;
118 double m_drawdown_multiplier;
119 size_t m_bars_per_year;
120 size_t m_min_series_freeze_size;
121 size_t m_series_analyze_period_length;
127 void touch_series_states(
size_t _idx);
128 void try_freeze_series_sizes(
size_t min_ser_len);
129 void delete_series_states(
void);
130 std::vector<managed_series*> m_series;
133 const managed_series* const_series_ptr(
long ID)
const;
135 void PrintVectorStateObjects(std::ostream&,
long _ID)
const;
137 size_t series_count(
void)
const;
138 size_t m_managed_series_counter;
139 size_t m_nNumCallsOf_EVALUATE_member;
140 bool m_disallow_new_managed_series;
141 bool m_completed_first_bar_with_no_lookback_exception;
142 bool m_is_operational;
143 size_t m_operational_bar;
144 bool m_all_series_finalized;
145 size_t m_strategy_lookback;
146 bool m_managed_code_ran_clean;
147 size_t m_managed_code_ran_clean_count;
148 size_t m_min_series_length;
149 bool m_has_managed_code;
150 bool m_first_on_next_completed;
151 named_values m_property_map;
154 date_time m_timestamp_of_first_bar_with_no_lookback_exception;
156 mutable std::mutex m_BAR_Mutex;
159 bool all_series_length_frozen(
void)
const;
160 size_t managed_series_count(
void)
const;
161 void socket__strategy_pos(
int pos);
162 size_t socket__strategy_pos(
void)
const;
166 void increment_series_state_counter(
void);
167 size_t GetNumCallsOf_BAR_Member(
void)
const;
168 void invoke_virtual_evaluate_on_all_components(
bool _pre);
169 void _EVALUATE(
void);
171 void raise_series_bounds_error(
void);
174 strategy_delegate& get_strategy_delegate(
void);
178 void operator= (
strategy&) =
delete;
182 void note_platform_destroyed(platform_proxy*);
228 void initialize(series_base*);
260 virtual void on_command(
const tsa::json&);
263 virtual void on_message(
const tsa::json&);
265 virtual void on_signal(
const std::string& signal_string);
273 virtual void on_start(
void);
280 virtual void on_end(
void);
286 strategy_end_type end_type(
void)
const;
295 virtual void on_next(
void);
325 virtual void on_order_status_changed(
order_ref& o_ref);
379 virtual void on_prepare(
void);
384 virtual void on_pre_managed_code(
void);
394 virtual void on_timer(
const std::string& timer_name);
400 virtual void on_live(
void);
406 bool is_live(
void)
const;
414 void assume_functor_ownership(functor::functor_parent_base*);
418 bool is_current(
void);
426 void on_series_bounds_error_terminate(
void);
438 void catch_series_bounds_errors(
bool flag =
true);
440 bool m_terminate_on_series_bounds_error;
442 void make_current(
void);
443 void release_current(
void);
445 mutable date_time m_tmp_metrics_source_end_timestamp;
447 virtual const date_time& metrics_source__begin_timestamp(
void)
const override;
448 virtual const date_time& metrics_source__end_timestamp(
void)
const override;
449 virtual bool is_contract(
void)
const override {
return false; }
450 virtual std::string metric_source_name(
void)
const override {
return name(); }
468 void min_series_length(
size_t min_size);
474 size_t min_series_length(
void)
const;
481 void series_analyze_period(
size_t num_bars);
487 size_t series_analyze_period(
void)
const;
535 const date_time& bar_timestamp(
void)
const;
554 size_t count(
void)
const;
557 size_t bar_count(
void)
const;
559 size_t interval_count(
void)
const;
571 bool first(
void)
const;
580 void require_bar_count(
size_t bar_count);
595 size_t order_count(
void)
const;
602 size_t order_count_inclusive(
void)
const;
643 size_t instrument_count(
void)
const;
654 std::vector<instrument*>& instruments(
void)
const;
664 instrument* instrument_ptr(
size_t position)
const;
671 bool is_operational(
void)
const;
674 size_t operational_bar(
void)
const;
676 const date_time& operational_timestamp(
void)
const;
699 void attach(platform_proxy& p);
706 bool is_platform_driven(
void)
const;
713 platform_proxy* platform_proxy_ptr(
void)
const;
718 void process_message_from_platform(net::message& msg);
721 platform_proxy* m_platform_proxy_ptr =
nullptr;
735 bool is_attached_to(
const std::string& data_base_name);
786 void begin(
const date_time& begin_time_point);
837 void run(
const date_time& start_time_point);
854 bool is_finalized(
void)
const;
863 void verbose(std::ostream& stream,
int verbose_level = 1);
888 bool is_auto_scheduled(
void)
const;
897 bool schedule_was_set(
void)
const;
910 void schedule_with(
const in_stream& instream);
932 void auto_schedule(
const duration& dur);
939 void terminate(
void);
940 bool evaluation_started(
void)
const;
941 bool evaluate_bar(
void);
942 bool evaluate_bar(std::istream& stream);
943 bool GetPostBacktestUpdateWasCompleted(
void)
const;
944 void verify_finalized(
void)
const;
945 void verify_eval_not_started(
void)
const;
946 bool is_scheduled_by_series(
void)
const;
951 void platform__initialize(
void);
952 void platform__run(
void);
953 bool platform__evaluate_bar(
const date_time&);
956 auto_time_point_stream m_scheduler_intra;
969 os::path output_base_path(
void)
const;
995 void output_base_path(
const os::path& base_path,
bool replace_existing_strategy_dir =
false)
const;
1003 void enable_reports(
void);
1011 void auto_open_reports(
bool flag =
true);
1017 bool auto_open_reports_enabled(
void)
const;
1023 void save_performance_report(
const os::path& directory,
1033 void risk_free_annual_rate_of_return(
double rate);
1036 double risk_free_annual_rate_of_return(
void)
const;
1042 double drawdown_multiplier(
void)
const;
1045 size_t num_bars_per_year(
void)
const;
1101 const tsa::metrics2& metrics2(
void)
const;
1111 virtual void daily_cash_flow(
mem_table& mt)
const;
1112 void daily_equity_vector(std::vector<double>& vector)
const;
1113 void num_bars_per_year(
size_t nNumBars);
1115 double simulation_period_in_years(
void)
const;
1116 double simulation_period_in_days(
void)
const;
1118 double annualized_volatility(
double start_account_equity,
size_t bars_per_year)
const;
1119 bool is_in_drawdown(
void)
const;
Utility class to manipulate file system paths. This class is intended to fulfil the requirements of t...
Definition: TSAOS.h:36
Class order is the library's internal order representation. Users are not intended to interact with t...
Definition: TSAOrder.h:49
Namespace for the 'Trading System API' library.
Definition: original1.TSA3Core.cpp:20
identifier_t order_id
The 'id' of the order ID related to this 'reject'.
Definition: TSAStrategy.h:63
Class for managing native timeseries database files. Extremely high speed data access.
Definition: TSADatabase.h:118
Base class for all other database classes such as:
Definition: TSADBBase.h:47
Base class for classes that can produce metrics.
Definition: TSAMetrics.h:44
perf_metric_type
Values that represent performance metric types.
Definition: TSATypeDef.h:216
strategy_state_type
Values that represent strategy state ts.
Definition: TSATypeDef.h:84
structure defining all the metric names. For example, you can pass metric::trade_count as metric_name...
Definition: TSATypeDef.h:297
Strategy performance metrics.
Definition: TSAMetrics.h:367
Definition: TSAVariant.h:656
log_type_t
Log type enumeration. Multiple log types can be combined by using operator|.
Definition: TSATypeDef.h:424
variant objects can represent values of different types.
Definition: TSAVariant.h:140
Represents a reference to an internally managed order object. Working with class order directly is no...
Definition: TSAOrder.h:422
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
Class tsa::exception used by most classes of the Trading System API library. The class inherits from ...
Definition: TSAError.h:37
Parent class for many library classes.
Definition: TSATypeDef.h:462
Represents a transaction that occurred on an exchange or as part of a simulation when an order is fil...
Definition: TSATransaction.h:40
trade_grouping
Trade aggregation types used by reporting functionality.
Definition: TSATypeDef.h:208
Definition: TSATypeDef.h:107
The strategy 'net profit' (after slippage + commission).
All trades.
Definition: TSATypeDef.h:211
Record stream class. Represents a standardised interface to all data sources. Instances rely on deleg...
Definition: TSAStreams.h:336
A class representing JSON objects.
Definition: TSAJSON.h:81
Class strategy represents a trading or investment strategy.
Definition: TSAStrategy.h:108
Definition: TSAPlatformSocket.h:46
Class representing a gregorian-date and time-of-day combination. The time component has microsecond r...
Definition: TSATime.h:428
int64_t identifier_t
type for ID's
Definition: TSATypeDef.h:117
std::string info
The reason for the reject, if available.
Definition: TSAStrategy.h:64
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
Class mem_table represents a memory based table. mem_table objects can be used in strategies both for...
Definition: TSAMemTable.h:48
Parent class to classes generating a strategy scheduling sequences. (see strategy::schedule_with()) ...
Definition: TSAIntraday.h:45
Structure containing informations about rejects.
Definition: TSAStrategy.h:62