last works ...
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
|
||||
//
|
||||
#include "../Classes/x-saherelm.xea.class.mq5"
|
||||
#include "../Classes/x-saherelm.xczone.class.mq5"
|
||||
#include "../Classes/x-saherelm.x121.setup.cycle.class.mq5"
|
||||
|
||||
//
|
||||
@@ -121,6 +122,7 @@ struct XSignalInfo
|
||||
pushers = _pushers;
|
||||
symbol = _signal.symbol;
|
||||
period = _signal.period;
|
||||
volume = _signal.volume;
|
||||
provider = _signal.provider;
|
||||
|
||||
//
|
||||
@@ -750,9 +752,40 @@ public:
|
||||
}
|
||||
|
||||
//
|
||||
bool IsEnable()
|
||||
int CloseOnSpecificTime()
|
||||
{
|
||||
return mAllowLong || mAllowShort;
|
||||
return mCloseOnSpecificTime;
|
||||
}
|
||||
|
||||
//
|
||||
void CloseOnSpecificTime(int value)
|
||||
{
|
||||
//
|
||||
if (value < 0)
|
||||
{
|
||||
value = -1;
|
||||
}
|
||||
|
||||
//
|
||||
if (value > 23)
|
||||
{
|
||||
value = 23;
|
||||
}
|
||||
|
||||
//
|
||||
mCloseOnSpecificTime = value;
|
||||
}
|
||||
|
||||
//
|
||||
bool UseSupport()
|
||||
{
|
||||
return mUseSupport;
|
||||
}
|
||||
|
||||
//
|
||||
void UseSupport(bool value)
|
||||
{
|
||||
mUseSupport = value;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -907,7 +940,10 @@ public:
|
||||
}
|
||||
|
||||
//
|
||||
mVolumeOSC = 0;
|
||||
mBullishSigns = 0;
|
||||
mBullishScore = 0;
|
||||
mBearishSigns = 0;
|
||||
mBearishScore = 0;
|
||||
|
||||
//
|
||||
@@ -921,6 +957,9 @@ public:
|
||||
mBullishScore += bullishScore;
|
||||
mBearishScore += bearishScore;
|
||||
|
||||
//
|
||||
mVolumeOSC += cConditions.vlmConditions.volume[1];
|
||||
|
||||
//
|
||||
// Parse Conditions for Signal ...
|
||||
bool hasSignal = signalGenerator.HasSignal(
|
||||
@@ -928,6 +967,7 @@ public:
|
||||
cSignal,
|
||||
cPusher,
|
||||
cProvider,
|
||||
mUseSupport,
|
||||
mAllowLong,
|
||||
mAllowShort,
|
||||
mVolume,
|
||||
@@ -980,6 +1020,9 @@ public:
|
||||
mBullishScore += bullishScore;
|
||||
mBearishScore += bearishScore;
|
||||
|
||||
//
|
||||
mVolumeOSC += sConditions.vlmConditions.volume[1];
|
||||
|
||||
//
|
||||
// Parse Conditions for Signal ...
|
||||
bool hasSignal = signalGenerator.HasSignal(
|
||||
@@ -1039,6 +1082,9 @@ public:
|
||||
mBullishScore += bullishScore;
|
||||
mBearishScore += bearishScore;
|
||||
|
||||
//
|
||||
mVolumeOSC += mConditions.vlmConditions.volume[1];
|
||||
|
||||
//
|
||||
// Parse Conditions for Signal ...
|
||||
bool hasSignal = signalGenerator.HasSignal(
|
||||
@@ -1046,6 +1092,7 @@ public:
|
||||
mSignal,
|
||||
mPusher,
|
||||
mProvider,
|
||||
mUseSupport,
|
||||
mAllowLong,
|
||||
mAllowShort,
|
||||
mVolume,
|
||||
@@ -1098,6 +1145,9 @@ public:
|
||||
mBullishScore += bullishScore;
|
||||
mBearishScore += bearishScore;
|
||||
|
||||
//
|
||||
mVolumeOSC += lConditions.vlmConditions.volume[1];
|
||||
|
||||
//
|
||||
// Parse Conditions for Signal ...
|
||||
bool hasSignal = signalGenerator.HasSignal(
|
||||
@@ -1105,6 +1155,7 @@ public:
|
||||
lSignal,
|
||||
lPusher,
|
||||
lProvider,
|
||||
mUseSupport,
|
||||
mAllowLong,
|
||||
mAllowShort,
|
||||
mVolume,
|
||||
@@ -1157,6 +1208,9 @@ public:
|
||||
mBullishScore += bullishScore;
|
||||
mBearishScore += bearishScore;
|
||||
|
||||
//
|
||||
mVolumeOSC += hConditions.vlmConditions.volume[1];
|
||||
|
||||
//
|
||||
// Parse Conditions for Signal ...
|
||||
bool hasSignal = signalGenerator.HasSignal(
|
||||
@@ -1164,6 +1218,7 @@ public:
|
||||
hSignal,
|
||||
hPusher,
|
||||
hProvider,
|
||||
mUseSupport,
|
||||
mAllowLong,
|
||||
mAllowShort,
|
||||
mVolume,
|
||||
@@ -1188,113 +1243,276 @@ public:
|
||||
|
||||
//
|
||||
// Current Signals ...
|
||||
if (cPusher >= mReuiredSignalVerifications && cSignal.IsValid())
|
||||
if (cSignal.IsValid())
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
cSignal,
|
||||
signals //
|
||||
);
|
||||
bool isLong = IsLong(cSignal.type);
|
||||
if (isLong)
|
||||
{
|
||||
mBullishSigns += cPusher;
|
||||
}
|
||||
else
|
||||
{
|
||||
mBearishSigns += cPusher;
|
||||
}
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
cPusher,
|
||||
cSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
cConditions //
|
||||
);
|
||||
if (cPusher >= mReuiredSignalVerifications)
|
||||
{
|
||||
//
|
||||
// Check Final Bullish and Bearish Score ...
|
||||
bool isScorePassed =
|
||||
//
|
||||
IsLong(cSignal.type)
|
||||
? mBullishScore > (mBearishScore * 2)
|
||||
: mBearishScore > (mBullishScore * 2)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
if (isScorePassed)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
cSignal,
|
||||
signals //
|
||||
);
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
cPusher,
|
||||
cSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
cConditions //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Short Signals ...
|
||||
if (sPusher >= mReuiredSignalVerifications && sSignal.IsValid())
|
||||
if (sSignal.IsValid())
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
sSignal,
|
||||
signals //
|
||||
);
|
||||
bool isLong = IsLong(sSignal.type);
|
||||
if (isLong)
|
||||
{
|
||||
mBullishSigns += sPusher;
|
||||
}
|
||||
else
|
||||
{
|
||||
mBearishSigns += sPusher;
|
||||
}
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
sPusher,
|
||||
sSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
sConditions //
|
||||
);
|
||||
if (sPusher >= mReuiredSignalVerifications)
|
||||
{
|
||||
//
|
||||
// Check Final Bullish and Bearish Score ...
|
||||
bool isScorePassed =
|
||||
//
|
||||
IsLong(cSignal.type)
|
||||
? mBullishScore > (mBearishScore * 2)
|
||||
: mBearishScore > (mBullishScore * 2)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
if (isScorePassed)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
sSignal,
|
||||
signals //
|
||||
);
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
sPusher,
|
||||
sSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
sConditions //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Medium Signals ...
|
||||
if (mPusher >= mReuiredSignalVerifications && mSignal.IsValid())
|
||||
if (mSignal.IsValid())
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
mSignal,
|
||||
signals //
|
||||
);
|
||||
bool isLong = IsLong(mSignal.type);
|
||||
if (isLong)
|
||||
{
|
||||
mBullishSigns += mPusher;
|
||||
}
|
||||
else
|
||||
{
|
||||
mBearishSigns += mPusher;
|
||||
}
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
mPusher,
|
||||
mSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
mConditions //
|
||||
);
|
||||
if (mPusher >= mReuiredSignalVerifications)
|
||||
{
|
||||
//
|
||||
// Check Final Bullish and Bearish Score ...
|
||||
bool isScorePassed =
|
||||
//
|
||||
IsLong(cSignal.type)
|
||||
? mBullishScore > (mBearishScore * 2)
|
||||
: mBearishScore > (mBullishScore * 2)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
if (isScorePassed)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
mSignal,
|
||||
signals //
|
||||
);
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
mPusher,
|
||||
mSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
mConditions //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Long Signals ...
|
||||
if (lPusher >= mReuiredSignalVerifications && lSignal.IsValid())
|
||||
if (lSignal.IsValid())
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
lSignal,
|
||||
signals //
|
||||
);
|
||||
bool isLong = IsLong(lSignal.type);
|
||||
if (isLong)
|
||||
{
|
||||
mBullishSigns += lPusher;
|
||||
}
|
||||
else
|
||||
{
|
||||
mBearishSigns += lPusher;
|
||||
}
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
lPusher,
|
||||
lSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
lConditions //
|
||||
);
|
||||
if (lPusher >= mReuiredSignalVerifications)
|
||||
{
|
||||
//
|
||||
// Check Final Bullish and Bearish Score ...
|
||||
bool isScorePassed =
|
||||
//
|
||||
IsLong(cSignal.type)
|
||||
? mBullishScore > (mBearishScore * 2)
|
||||
: mBearishScore > (mBullishScore * 2)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
if (isScorePassed)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
lSignal,
|
||||
signals //
|
||||
);
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
lPusher,
|
||||
lSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
lConditions //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Hind Signals ...
|
||||
if (hPusher >= mReuiredSignalVerifications && hSignal.IsValid())
|
||||
if (hSignal.IsValid())
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
hSignal,
|
||||
signals //
|
||||
);
|
||||
bool isLong = IsLong(hSignal.type);
|
||||
if (isLong)
|
||||
{
|
||||
mBullishSigns += hPusher;
|
||||
}
|
||||
else
|
||||
{
|
||||
mBearishSigns += hPusher;
|
||||
}
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
hPusher,
|
||||
hSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
hConditions //
|
||||
);
|
||||
if (hPusher >= mReuiredSignalVerifications)
|
||||
{
|
||||
//
|
||||
// Check Final Bullish and Bearish Score ...
|
||||
bool isScorePassed =
|
||||
//
|
||||
IsLong(cSignal.type)
|
||||
? mBullishScore > (mBearishScore * 2)
|
||||
: mBearishScore > (mBullishScore * 2)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
if (isScorePassed)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
hSignal,
|
||||
signals //
|
||||
);
|
||||
|
||||
//
|
||||
AddNewSignal(
|
||||
hPusher,
|
||||
hSignal,
|
||||
mBullishScore,
|
||||
mBearishScore,
|
||||
hConditions //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (mBullishScore == mBearishScore ||
|
||||
mBullishScore < 10 ||
|
||||
mBullishScore == 0 ||
|
||||
mBullishScore > 200 ||
|
||||
mBearishScore < 10 ||
|
||||
mBearishScore == 0 ||
|
||||
mBearishScore > 200)
|
||||
{
|
||||
//
|
||||
// Print("Custom Scores ...");
|
||||
}
|
||||
|
||||
//
|
||||
// Create Score Summary for Commenting on Chart ...
|
||||
string scoreSummary =
|
||||
//
|
||||
"Scores:" + separator +
|
||||
"----------" + separator +
|
||||
"Bullish: " + ToString(mBullishScore) + separator +
|
||||
"Bearish: " + ToString(mBearishScore) + separator +
|
||||
"Bullish Score: " + ToString(mBullishScore) + separator +
|
||||
"Bullish Signs: " + ToString(mBullishSigns) + separator +
|
||||
"----------" + separator +
|
||||
"Bearish Score: " + ToString(mBearishScore) + separator +
|
||||
"Bearish Signs: " + ToString(mBearishSigns) + separator +
|
||||
"----------" + separator +
|
||||
"Volume: " + ToString(mVolumeOSC) + separator +
|
||||
"DrawDown: " + ToString(GetDrawdownPercent()) + "%" +
|
||||
""
|
||||
//
|
||||
;
|
||||
@@ -1446,6 +1664,10 @@ public:
|
||||
// // Check EQM Orders and Handle Hedging ...
|
||||
// DoEQMHedge();
|
||||
|
||||
//
|
||||
// Handle Close All Positions on Specific Time ...
|
||||
HandleEQMCloseOnSpecificTime();
|
||||
|
||||
//
|
||||
// if Returns true, Signal Execution failed ...
|
||||
return result;
|
||||
@@ -1495,6 +1717,40 @@ protected:
|
||||
//
|
||||
// Tools ...
|
||||
|
||||
//
|
||||
bool IsEnable()
|
||||
{
|
||||
return mAllowLong || mAllowShort;
|
||||
}
|
||||
|
||||
//
|
||||
bool CanCloseOnTime()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = mCloseOnSpecificTime >= 0 && mCloseOnSpecificTime <= 23;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
MqlDateTime timeStruct;
|
||||
result = TimeCurrent(timeStruct);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result = timeStruct.hour == mCloseOnSpecificTime;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Private ...
|
||||
private:
|
||||
@@ -1507,10 +1763,12 @@ private:
|
||||
double mVolume; // Volume
|
||||
double mTPPoint; // TP Point
|
||||
double mSLPoint; // SL Point
|
||||
bool mUseSupport; // Use Support Signals
|
||||
bool mIgnoreTP; // Ignore Calculated TP
|
||||
bool mIgnoreSL; // Ignore Calculated SL
|
||||
int mMaxAllowedTrades; // Max Alloed Positions
|
||||
bool mCloseOnOpposit; // Close all Positions on Opposit
|
||||
int mCloseOnSpecificTime; // Close All Trades in Specific Time
|
||||
int mReuiredSignalVerifications; // Required Verifications for Validate Signals
|
||||
|
||||
//
|
||||
@@ -1755,9 +2013,16 @@ private:
|
||||
}
|
||||
|
||||
//
|
||||
int mBullishSigns;
|
||||
double mBullishScore;
|
||||
|
||||
//
|
||||
int mBearishSigns;
|
||||
double mBearishScore;
|
||||
|
||||
//
|
||||
double mVolumeOSC;
|
||||
|
||||
//
|
||||
XSCX121SetupCycles *mSetups[]; // Number of Setups
|
||||
|
||||
@@ -2041,6 +2306,43 @@ private:
|
||||
Alert(message);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Handle Close Trades on Specific Time ...
|
||||
void HandleEQMCloseOnSpecificTime()
|
||||
{
|
||||
//
|
||||
bool canClose = CanCloseOnTime();
|
||||
if (!canClose)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XPosition positions[];
|
||||
int positionsCount = mTrader.GetPositions(positions);
|
||||
if (!IsValidSize(positionsCount))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
string comment = XEQMSupportToken + " Close On Specific Time ...";
|
||||
|
||||
//
|
||||
int closed = Close(
|
||||
positions,
|
||||
comment //
|
||||
);
|
||||
if (IsValidSize(closed))
|
||||
{
|
||||
//
|
||||
string message = XEQMSupportToken + " Closed " + ToString(closed) + " Positions on Specified Time ...";
|
||||
|
||||
//
|
||||
Alert(message);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user