Files
mt5-quant-lib/CustomMax.mqh
T

91 lines
2.6 KiB
Plaintext
Raw Normal View History

2024-10-25 12:08:52 +02:00
#property library
#include <Trade/Trade.mqh>
enum CUSTOM_MAX_TYPE{
CM_WIN_LOSS_RATIO,
CM_WIN_PERCENT,
2024-11-10 15:18:39 +01:00
CM_WIN_PERCENT_200T,
CM_WIN_PERCENT_300T,
CM_WIN_PERCENT_400T,
CM_WIN_PERCENT_500T,
CM_WIN_PERCENT_600T,
CM_WIN_PERCENT_700T,
CM_WIN_PERCENT_800T,
CM_WIN_PERCENT_900T,
CM_WIN_PERCENT_1000T,
2024-10-25 12:08:52 +02:00
};
class CustomMax : public CObject{
protected:
double custom_criteria;
double CustomMax::win_loss_ratio();
double CustomMax::win_percent();
2024-11-10 15:18:39 +01:00
double CustomMax::win_percent_min_trades(int min_resuired_trades);
2024-10-25 12:08:52 +02:00
public:
double CustomMax::calculate_custom_criteria(CUSTOM_MAX_TYPE cm_type);
};
// CM_WIN_LOSS_RATIO,
// CM_WIN_PERCENT
double CustomMax::calculate_custom_criteria(CUSTOM_MAX_TYPE cm_type){
if(cm_type==CM_WIN_LOSS_RATIO){
custom_criteria = win_loss_ratio();
}
if(cm_type==CM_WIN_PERCENT){
2024-12-21 12:27:11 +01:00
custom_criteria = win_percent_min_trades(0);
2024-10-25 12:08:52 +02:00
}
if(cm_type==CM_WIN_PERCENT_200T){
2024-11-10 15:18:39 +01:00
custom_criteria = win_percent_min_trades(200);
2024-10-25 12:08:52 +02:00
}
2024-11-10 15:18:39 +01:00
if(cm_type==CM_WIN_PERCENT_300T){
custom_criteria = win_percent_min_trades(300);
}
if(cm_type==CM_WIN_PERCENT_400T){
custom_criteria = win_percent_min_trades(400);
}
if(cm_type==CM_WIN_PERCENT_500T){
custom_criteria = win_percent_min_trades(500);
}
if(cm_type==CM_WIN_PERCENT_600T){
custom_criteria = win_percent_min_trades(600);
}
if(cm_type==CM_WIN_PERCENT_700T){
custom_criteria = win_percent_min_trades(700);
}
if(cm_type==CM_WIN_PERCENT_800T){
custom_criteria = win_percent_min_trades(800);
}
if(cm_type==CM_WIN_PERCENT_900T){
custom_criteria = win_percent_min_trades(900);
}
if(cm_type==CM_WIN_PERCENT_1000T){
custom_criteria = win_percent_min_trades(1000);
}
2024-10-25 12:08:52 +02:00
return custom_criteria;
}
double CustomMax::win_loss_ratio(){
double wins = TesterStatistics(STAT_PROFIT_TRADES);
double losses = TesterStatistics(STAT_LOSS_TRADES);
return wins/losses;
}
2024-11-10 15:18:39 +01:00
double CustomMax::win_percent_min_trades(int min_resuired_trades){
2024-10-25 12:08:52 +02:00
double wins = TesterStatistics(STAT_PROFIT_TRADES);
double total_trades = TesterStatistics(STAT_TRADES);
2024-12-21 12:27:11 +01:00
double result = wins / total_trades * 100;
2024-10-25 12:08:52 +02:00
2024-12-21 12:27:11 +01:00
if(!MathIsValidNumber(result) || total_trades<min_resuired_trades){
2024-10-25 12:08:52 +02:00
return 0;
}
2024-12-21 12:27:11 +01:00
else{
return result;
2024-10-25 12:08:52 +02:00
}
2024-12-21 12:27:11 +01:00
}