Files
include/fxsaber/SingleTesterCache/ExpTradeSummaryExt.mqh
T
2025-02-07 19:08:31 +03:30

86 lines
10 KiB
Plaintext

#include "ExpTradeSummarySingle.mqh"
#define UINT uint
#define INT64 datetime
//+------------------------------------------------------------------+
//| Структура для статистики торговли - доп показатели |
//+------------------------------------------------------------------+
struct ExpTradeSummaryExt : public ExpTradeSummarySingle
{
private:
string LengthToString( const datetime Length ) const
{
const int Days = (int)(Length / (24 * 3600));
return(((Days) ? (string)Days + "d ": "") + ::TimeToString(Length, TIME_SECONDS));
}
public:
int Offset2[18];
double ghpr; // среднее геометрическое сделки
double ghprpercent; // среднее геометрическое сделки в процентах
double ahpr; // среднее арифметическое сделки
double ahprpercent; // среднее арифметическое сделки в процентах
double zscore; // серийный тест
double zscorepercent; // серийный тест в процентах
double lrcorr; // коэффициент корреляции линейной регрессии
double lrstderror; // стандартная ошибка отклонения баланса от линейной регрессии
UINT symbols; // количество инструментов участвовавших в торговле
int Offset3;
double corr_prf_mfe; // корреляция между mfe и profit
double corr_prf_mae; // корреляция между mae и profit
double corr_mfe_mae; // корреляция между mae и mfe
double mfe_a; // корреляция между mfe и profit, коэф. для линии линейной регрессии
double mfe_b; // корреляция между mfe и profit, коэф. для линии линейной регрессии
double mae_a; // корреляция между mae и profit, коэф. для линии линейной регрессии
double mae_b; // корреляция между mae и profit, коэф. для линии линейной регрессии
UINT in_per_hours[24]; // распределение входов по часам
UINT in_per_week_days[7]; // распределение входов по дням недели
UINT in_per_months[12]; // распределение входов по месяцам
int Offset4;
double out_per_hours[24][2]; // распределение входов по часам
double out_per_week_days[7][2]; // распределение входов по дням недели
double out_per_months[12][2]; // распределение входов по месяцам
INT64 holding_time_min; // минимальное время удержания позиции
INT64 holding_time_max; // максимальное время удержания позиции
INT64 holding_time_avr; // среднее время удержания позиции
// https://www.mql5.com/ru/forum/444094/page13#comment_46162559
double in_commission;
int reserve[40];
#define TOSTRING(A) #A + " = " + (string)(A) + "\n"
#define TOSTRING2(A) #A + " = " + this.LengthToString(A) + "\n"
string ToString( void ) const
{
return(ExpTradeSummarySingle::ToString() +
TOSTRING(ghpr) + // среднее геометрическое сделки
TOSTRING(ghprpercent) + // среднее геометрическое сделки в процентах
TOSTRING(ahpr) + // среднее арифметическое сделки
TOSTRING(ahprpercent) + // среднее арифметическое сделки в процентах
TOSTRING(zscore) + // серийный тест
TOSTRING(zscorepercent) + // серийный тест в процентах
TOSTRING(lrcorr) + // коэффициент корреляции линейной регрессии
TOSTRING(lrstderror) + // стандартная ошибка отклонения баланса от линейной регрессии
TOSTRING(symbols) + // количество инструментов участвовавших в торговле
TOSTRING(corr_prf_mfe) + // корреляция между mfe и profit
TOSTRING(corr_prf_mae) + // корреляция между mae и profit
TOSTRING(corr_mfe_mae) + // корреляция между mae и mfe
TOSTRING(mfe_a) + // корреляция между mfe и profit, коэф. для линии линейной регрессии
TOSTRING(mfe_b) + // корреляция между mfe и profit, коэф. для линии линейной регрессии
TOSTRING(mae_a) + // корреляция между mae и profit, коэф. для линии линейной регрессии
TOSTRING(mae_b) + // корреляция между mae и profit, коэф. для линии линейной регрессии
TOSTRING2(holding_time_min) + // минимальное время удержания позиции
TOSTRING2(holding_time_max) + // максимальное время удержания позиции
TOSTRING2(holding_time_avr) + // среднее время удержания позиции
TOSTRING(in_commission)); // https://www.mql5.com/ru/forum/444094/page13#comment_46162559
}
#undef TOSTRING2
#undef TOSTRING
};
#undef INT64
#undef UINT