#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