add input validation to ea ...

This commit is contained in:
2024-08-10 17:08:42 +03:30
parent b76565f0b9
commit c66cf90444
+158 -10
View File
@@ -125,9 +125,6 @@ input bool eaAlertNewHours = false; // Alert New Hours
//
// Variables ...
//
// int mNumberOfSLs = 0;
//
// Bar Style nad Time Instances ...
XSCXCTHelper *mCTHelper;
@@ -262,12 +259,6 @@ void OnTimer()
// HandleTradeState();
// HandleTimeReport();
// HandleStrategiesOnTick();
// //
// if (eaTimeTracker.IsNewDay())
// {
// mNumberOfSLs = 0;
// }
}
//
@@ -281,7 +272,164 @@ bool ValidateInputs()
bool result = false;
//
result = true;
string errMessage = "";
//
bool isCommonValid = (
//
eaSlippage > 0 &&
eaMagicNumber > 0
//
);
if (!isCommonValid)
{
//
errMessage += "common configurations error;" + "\n";
}
//
bool isSymbolsValid = (
//
eaMultiSymbol
? IsValid(eaSymbols)
: true
//
);
if (!isSymbolsValid)
{
//
errMessage += "symbols configurations error;" + "\n";
}
//
bool isRiskRewardValid = (
//
(eaUseFixedTPSLPoints
? eaTPPoint > 0 ||
eaSLPoint > 0
: eaR2R > 0) &&
!(eaIgnoreTP &&
eaIgnoreSL)
//
);
if (!isRiskRewardValid)
{
//
errMessage += "risk/reward configurations error;" + "\n";
}
//
bool isVolumeValid = (
//
eaUseDynamicVolume
? eaDynamicVolumeStep >= 0.01 &&
eaDynamicVolumeBalanceFactor > 0
: eaVolume >= 0.01
//
);
if (!isVolumeValid)
{
//
errMessage += "volume configurations error;" + "\n";
}
//
bool isTradeManagementValid = (
//
!(!eaAllowLong && !eaAllowShort) &&
eaMaxAllowedLongs >= 0 &&
eaMaxAllowedShorts >= 0
//
);
if (!isTradeManagementValid)
{
//
errMessage += "trade management configurations error;" + "\n";
}
//
bool isHedgingValid = (
//
eaAllowHedging
? eaMinTradesForHedge >= 1 &&
eaHedgeVolumeFactor >= 0.01 &&
eaMinimumProfitPerVolumeForHedging >= 0
: true
//
);
if (!isHedgingValid)
{
//
errMessage += "hedging configurations error;" + "\n";
}
//
bool isTraillingValid = (
//
eaAllowTrailStop
? eaStartTrailInPoint > 0 &&
eaTrailStepInPoint > 0
: true
//
);
if (!isTraillingValid)
{
//
errMessage += "trailling configurations error;" + "\n";
}
//
bool isRecoveryValid = (
//
eaAllowRecovery
? eaRecoveryTPPoint > 0 &&
eaRecoverySLPoint > 0 &&
eaMaxAllowedRecoveryTrades >= 0 &&
eaRecoveryVolumeMultiplier > 0 &&
eaMaxAllowedRecoveryTradesVolume >= 0
: true
//
);
if (!isRecoveryValid)
{
//
errMessage += "recovery configurations error;" + "\n";
}
//
result =
//
// Common ...
isCommonValid &&
//
// Symbols ...
isSymbolsValid &&
//
// Risk/Reward ...
isRiskRewardValid &&
//
// Volume ...
isVolumeValid &&
//
// Trade Management ...
isTradeManagementValid &&
//
// Hedging ...
isHedgingValid &&
//
// Trailling ...
isTraillingValid &&
//
// Recovery ...
isRecoveryValid
//
;
//
if (!result)
{
Print("Errors: \n", errMessage);
}
//
return result;