This commit is contained in:
2024-09-22 09:04:51 +03:30
parent ea24ea84d9
commit 65385c20ab
2 changed files with 40 additions and 2 deletions
@@ -22,6 +22,7 @@
// //
// Imports ... // Imports ...
#include "../Classes/x-saherelm.xtrade.class.mq5" #include "../Classes/x-saherelm.xtrade.class.mq5"
#include "../Helpers/x-saherelm.xchvwap.helper.mq5"
// //
// Definitions ... // Definitions ...
@@ -1284,6 +1285,25 @@ class X121SCTradeHandler : public XSCBaseAlert
mSupportStartDistance = value; mSupportStartDistance = value;
} }
//
int MaxAllowedSupport()
{
return mMaxAllowedSupport;
}
//
void MaxAllowedSupport(int value)
{
//
if (value < 0)
{
value = 0;
}
//
mMaxAllowedSupport = value;
}
// //
double SupportVolumeMultiplier() double SupportVolumeMultiplier()
{ {
@@ -2640,16 +2660,24 @@ class X121SCTradeHandler : public XSCBaseAlert
// Reading Requirement for Support Positions ... // Reading Requirement for Support Positions ...
bool allowSupport = AllowSupport(); bool allowSupport = AllowSupport();
double supportStartDistance = SupportStartDistance(); double supportStartDistance = SupportStartDistance();
int maxAllowedSupport = MaxAllowedSupport();
int delayBetweenTwoSupport = DelayBetweenTwoSupport(); int delayBetweenTwoSupport = DelayBetweenTwoSupport();
double supportVolumeMultiplier = SupportVolumeMultiplier(); double supportVolumeMultiplier = SupportVolumeMultiplier();
bool multiplySupportLevelOnVolume = MultiplySupportLevelOnVolume(); bool multiplySupportLevelOnVolume = MultiplySupportLevelOnVolume();
bool doSupportOnConditions = DoSupportOnConditions(); bool doSupportOnConditions = DoSupportOnConditions();
bool canSupport = (!isInProfit || bool canSupport = allowSupport &&
(!isInProfit ||
(isInProfit && supportsCount > 0)) && (isInProfit && supportsCount > 0)) &&
maxAllowedSupport >= 0 &&
supportStartDistance >= 0 && supportStartDistance >= 0 &&
supportVolumeMultiplier > 0 && supportVolumeMultiplier > 0 &&
MathAbs(profitInPoint) >= supportStartDistance && MathAbs(profitInPoint) >= supportStartDistance &&
// //
// Check Max Allowed Support ...
(maxAllowedSupport == 0
? true
: supportsCount < maxAllowedSupport) &&
//
// Check Delay ... // Check Delay ...
(!IsValid(mData[iDX].lastSupportedOn) (!IsValid(mData[iDX].lastSupportedOn)
? true ? true
@@ -3226,6 +3254,7 @@ class X121SCTradeHandler : public XSCBaseAlert
// Support ... // Support ...
bool mAllowSupport; // Allow Support bool mAllowSupport; // Allow Support
double mSupportStartDistance; // Specify Start Support Drawdown in Point double mSupportStartDistance; // Specify Start Support Drawdown in Point
int mMaxAllowedSupport; // Max Allowed Number of Support Position
double mSupportVolumeMultiplier; // Specify Support Volume Multiplier double mSupportVolumeMultiplier; // Specify Support Volume Multiplier
bool mMultiplySupportLevelOnVolume; // Multiply Support Level on Volume Multiplier bool mMultiplySupportLevelOnVolume; // Multiply Support Level on Volume Multiplier
bool mDoSupportOnConditions; // Do Support on Conditions bool mDoSupportOnConditions; // Do Support on Conditions
@@ -3452,6 +3481,13 @@ class X121SCTradeHandler : public XSCBaseAlert
mCollector.SaveSignal(item); mCollector.SaveSignal(item);
} }
//
// Install all Helpers and Prepare all
// Configurations for required Indicators ...
void PrepareRequirements()
{
}
// //
}; };
+3 -1
View File
@@ -85,7 +85,7 @@ input double eaMaxDrawdownPercentForOpenTrades = 3; // Max Drawdown Percent for
// //
// Protector ... // Protector ...
input group "Protector"; input group "Protector";
input int eaDelayBarBetweenTwoSameSignal = 5; // Delay Bars Between Two Same Type Signal input int eaDelayBarBetweenTwoSameSignal = 5; // Delay Bars Between Two Same Type Signal
// //
// Protector > Hedging Properties ... // Protector > Hedging Properties ...
@@ -131,6 +131,7 @@ input bool eaDisableTrailWhenFreezedPosition = true; // Disable Trail when has F
input group "Support"; input group "Support";
input bool eaAllowSupport = false; // Allow Support input bool eaAllowSupport = false; // Allow Support
input double eaSupportStartDistance = 0; // Specify Start Support Drawdown in Point input double eaSupportStartDistance = 0; // Specify Start Support Drawdown in Point
input int eaMaxAllowedSupport = 2; // Max Allowed Number of Support Position
input double eaSupportVolumeMultiplier = 1; // Specify Support Volume Multiplier input double eaSupportVolumeMultiplier = 1; // Specify Support Volume Multiplier
input bool eaMultiplySupportLevelOnVolume = false; // Multiply Support Level on Volume Multiplier input bool eaMultiplySupportLevelOnVolume = false; // Multiply Support Level on Volume Multiplier
input bool eaDoSupportOnConditions = true; // Do Support on Conditions input bool eaDoSupportOnConditions = true; // Do Support on Conditions
@@ -541,6 +542,7 @@ bool InitialEA()
// Support ... // Support ...
eaTradeHandler.AllowSupport(eaAllowSupport); eaTradeHandler.AllowSupport(eaAllowSupport);
eaTradeHandler.SupportStartDistance(eaSupportStartDistance); eaTradeHandler.SupportStartDistance(eaSupportStartDistance);
eaTradeHandler.MaxAllowedSupport(eaMaxAllowedSupport);
eaTradeHandler.SupportVolumeMultiplier(eaSupportVolumeMultiplier); eaTradeHandler.SupportVolumeMultiplier(eaSupportVolumeMultiplier);
eaTradeHandler.MultiplySupportLevelOnVolume(eaMultiplySupportLevelOnVolume); eaTradeHandler.MultiplySupportLevelOnVolume(eaMultiplySupportLevelOnVolume);
eaTradeHandler.DoSupportOnConditions(eaDoSupportOnConditions); eaTradeHandler.DoSupportOnConditions(eaDoSupportOnConditions);