complete XCATBEA and all of it's requirements, such as:

- Expert Class;
- Class Based EA;
- Signaller(s);
- Multi Symbol;
- Multi Session;
- ...
This commit is contained in:
2025-05-31 06:51:39 +03:30
parent 16c58af75c
commit a5891ee2c6
10 changed files with 6236 additions and 264 deletions
+41 -1
View File
@@ -24,7 +24,6 @@
// Imports ...
#include "../../Classes/x-saherelm.x-bar.analyser.class.mq5"
#include "../../Classes/x-saherelm.x-poi.drawer.class.mq5"
#include "../Libraries/xcatbea.lib.mq5"
//
// Definiions ...
@@ -194,6 +193,7 @@ struct XTriggerBlockFilters
{
//
// Props ...
bool filterBasedOnKI; // Filter Based On KI Flats ...
bool filterBasedOnPV; // Filter Based On PV ...
bool filterBasedOnSar; // Filter Based On SAR ...
bool filterBasedOnRSI; // Filter Based On RSI ...
@@ -203,6 +203,7 @@ struct XTriggerBlockFilters
bool filterBasedOnDelta; // Filter Based On Delta ...
bool filterBasedOnVolume; // Filter Based On Volume ...
bool filterBasedOnSignalBar; // Filter Based on Signal Bar ...
bool filterBasedOnRoundPrice; // Filter Based On Round Prices ...
bool filterBasedOnHKSignalBar; // Filter Based On HK Signal Bar ...
//
@@ -251,6 +252,7 @@ struct XTriggerBlockFilters
void Clean()
{
//
filterBasedOnKI = false;
filterBasedOnPV = false;
filterBasedOnSar = false;
filterBasedOnRSI = false;
@@ -260,6 +262,7 @@ struct XTriggerBlockFilters
filterBasedOnDelta = false;
filterBasedOnVolume = false;
filterBasedOnSignalBar = false;
filterBasedOnRoundPrice = false;
filterBasedOnHKSignalBar = false;
//
@@ -1158,6 +1161,34 @@ bool FilterTriggerBlock(
//
// Checking Conditions ...
//
// Filter Based KI ...
if (result &&
filters.filterBasedOnKI)
{
//
int count = 0;
toIDX = triggerBlock.ob.ToIndex();
fromIDX = triggerBlock.ob.FromIndex();
double lKI = conditions.kiBuffer[zIDX];
for (int i = toIDX; i < fromIDX; i++)
{
//
double iKI = helper.GetKI(i);
if (iKI == lKI)
{
count++;
}
else
{
break;
}
}
//
result = count >= 3;
}
//
// Filter Based On PV ...
if (result &&
@@ -2230,6 +2261,15 @@ bool FilterTriggerBlock(
}
}
//
// Filter Based Round Price ...
if (result &&
filters.filterBasedOnRoundPrice)
{
//
// TODO: Implement this ...
}
//
if (!result)
{