add conditions collector and also complete generate summary ...

need to test ...
This commit is contained in:
2024-05-19 14:55:23 +03:30
parent d70845c664
commit fa6387725a
5 changed files with 448 additions and 33 deletions
+327 -4
View File
@@ -255,6 +255,58 @@ public:
}
};
//
// XSC5MarketConditionDataCollector ...
class XSC5MarketConditionDataCollector
{
//
// Public ...
public:
//
// Constructor ...
void XSC5MarketConditionDataCollector()
{
//
XSCDataCollector<X5MarketConditions> mBase;
mBase.Clear();
}
//
// Cleaning Store ...
void Clear()
{
//
XSCDataCollector<X5MarketConditions> mBase;
//
mBase.Clear();
}
//
// Add String Content ...
bool Add(string content)
{
//
bool result = false;
//
XSCDataCollector<X5MarketConditions> mBase;
//
result = mBase.Add(content);
//
return result;
}
//
// Protected ...
protected:
//
// Private ...
private:
};
//
// X5 Provider Market Conditions ...
class X5MarketConditions : public XSCBaseProviderMarketConditions
@@ -700,15 +752,277 @@ public:
// Generate Summary ...
virtual string GenerateSummary(
const double multiplier = 1, // Score Multiplier
const string separator = "\n", // Separator
const bool ignoreFalseConditions = true // Ignore False Conditions
)
{
//
string result = NULL;
//
// Common ...
string commonStr =
//
"Commons: " + separator +
"-----------------------------" +
"Time: " + ToString(TimeCurrent()) + separator +
//
// TODO: Add Scores Later ...
""
//
;
//
// XOBD ...
string obdStr =
//
ToString("isXOBDSwingLow", isXOBDSwingLow, ignoreFalseConditions) +
ToString("isXOBDSwingHigh", isXOBDSwingHigh, ignoreFalseConditions) +
""
//
;
//
// ToString("", , ignoreFalseConditions) +
//
// XFI ...
string fiStr =
//
ToString("isXFIPeak", isXFIPeak, ignoreFalseConditions) +
ToString("isXFIVale", isXFIVale, ignoreFalseConditions) +
ToString("isXFICrossedOverZero", isXFICrossedOverZero, ignoreFalseConditions) +
ToString("isXFIOverZero", isXFIOverZero, ignoreFalseConditions) +
ToString("isXFICrossedUnderZero", isXFICrossedUnderZero, ignoreFalseConditions) +
ToString("isXFIUnderZero", isXFIUnderZero, ignoreFalseConditions) +
""
//
;
//
// XRSI ...
string rsiStr =
//
ToString("isXRSIPeak", isXRSIPeak, ignoreFalseConditions) +
ToString("isXRSIVale", isXRSIVale, ignoreFalseConditions) +
ToString("isXRSICrossedOverLongExit", isXRSICrossedOverLongExit, ignoreFalseConditions) +
ToString("isXRSICrossedOverLongEntry", isXRSICrossedOverLongEntry, ignoreFalseConditions) +
ToString("isXRSICrossedUnderShortExit", isXRSICrossedUnderShortExit, ignoreFalseConditions) +
ToString("isXRSICrossedUnderShortEntry", isXRSICrossedUnderShortEntry, ignoreFalseConditions) +
""
//
;
//
// XTM ...
string tmStr =
//
ToString("isXTMPeak", isXTMPeak, ignoreFalseConditions) +
ToString("isXTMVale", isXTMVale, ignoreFalseConditions) +
ToString("isXTMBullish", isXTMBullish, ignoreFalseConditions) +
ToString("isXTMBearish", isXTMBearish, ignoreFalseConditions) +
ToString("isXTMNeutural", isXTMNeutural, ignoreFalseConditions) +
ToString("isXTMEndBullish", isXTMEndBullish, ignoreFalseConditions) +
ToString("isXTMEndBearish", isXTMEndBearish, ignoreFalseConditions) +
ToString("isXTMStartBullish", isXTMStartBullish, ignoreFalseConditions) +
ToString("isXTMStartBearish", isXTMStartBearish, ignoreFalseConditions) +
ToString("isXTMEndBullishByNeutural", isXTMEndBullishByNeutural, ignoreFalseConditions) +
ToString("isXTMEndBearishByNeutural", isXTMEndBearishByNeutural, ignoreFalseConditions) +
ToString("isXTMStartBullishAfterNeutural", isXTMStartBullishAfterNeutural, ignoreFalseConditions) +
ToString("isXTMStartBearishAfterNeutural", isXTMStartBearishAfterNeutural, ignoreFalseConditions) +
""
//
;
//
// XAMA ...
string amaStr =
//
ToString("isXAMAPeak", isXAMAPeak, ignoreFalseConditions) +
ToString("isXAMAVale", isXAMAVale, ignoreFalseConditions) +
ToString("isXAMABullish", isXAMABullish, ignoreFalseConditions) +
ToString("isXAMABearish", isXAMABearish, ignoreFalseConditions) +
ToString("isXAMANeutural", isXAMANeutural, ignoreFalseConditions) +
ToString("isXAMAEndBullish", isXAMAEndBullish, ignoreFalseConditions) +
ToString("isXAMAEndBearish", isXAMAEndBearish, ignoreFalseConditions) +
ToString("isXAMAStartBullish", isXAMAStartBullish, ignoreFalseConditions) +
ToString("isXAMAStartBearish", isXAMAStartBearish, ignoreFalseConditions) +
ToString("isXAMAEndBullishByNeutural", isXAMAEndBullishByNeutural, ignoreFalseConditions) +
ToString("isXAMAEndBearishByNeutural", isXAMAEndBearishByNeutural, ignoreFalseConditions) +
ToString("isXAMAStartBullishAfterNeutural", isXAMAStartBullishAfterNeutural, ignoreFalseConditions) +
ToString("isXAMAStartBearishAfterNeutural", isXAMAStartBearishAfterNeutural, ignoreFalseConditions) +
""
//
;
//
// XLH ...
string lhStr =
//
ToString("isXLHHHIncreased", isXLHHHIncreased, ignoreFalseConditions) +
ToString("isXLHHHDecreased", isXLHHHDecreased, ignoreFalseConditions) +
ToString("isXLHLLIncreased", isXLHLLIncreased, ignoreFalseConditions) +
ToString("isXLHLLDecreased", isXLHLLDecreased, ignoreFalseConditions) +
ToString("isXLHLowAttachedLL", isXLHLowAttachedLL, ignoreFalseConditions) +
ToString("isXLHHighAttachedHH", isXLHHighAttachedHH, ignoreFalseConditions) +
ToString("isXLHHHSameInLength", isXLHHHSameInLength, ignoreFalseConditions) +
ToString("isXLHLLSameInLength", isXLHLLSameInLength, ignoreFalseConditions) +
ToString("isXLHPriceOverSignal", isXLHPriceOverSignal, ignoreFalseConditions) +
ToString("isXLHPriceUnderSignal", isXLHPriceUnderSignal, ignoreFalseConditions) +
ToString("isXLHPriceInSignalRange", isXLHPriceInSignalRange, ignoreFalseConditions) +
ToString("isXLHPriceCrossedOverSignal", isXLHPriceCrossedOverSignal, ignoreFalseConditions) +
ToString("isXLHPriceCrossedUnderSignal", isXLHPriceCrossedUnderSignal, ignoreFalseConditions) +
""
//
;
//
// XTD ...
string tdStr =
//
ToString("isXTDSignalPeak", isXTDSignalPeak, ignoreFalseConditions) +
ToString("isXTDSignalVale", isXTDSignalVale, ignoreFalseConditions) +
ToString("isXTDBullishPeak", isXTDBullishPeak, ignoreFalseConditions) +
ToString("isXTDBullishVale", isXTDBullishVale, ignoreFalseConditions) +
ToString("isXTDBearishPeak", isXTDBearishPeak, ignoreFalseConditions) +
ToString("isXTDBearishVale", isXTDBearishVale, ignoreFalseConditions) +
ToString("isXTDBullOverBear", isXTDBullOverBear, ignoreFalseConditions) +
ToString("isXTDBullUnderBear", isXTDBullUnderBear, ignoreFalseConditions) +
ToString("isXTDSignalOverBear", isXTDSignalOverBear, ignoreFalseConditions) +
ToString("isXTDSignalUnderBear", isXTDSignalUnderBear, ignoreFalseConditions) +
ToString("isXTDBullCrossedOverBear", isXTDBullCrossedOverBear, ignoreFalseConditions) +
ToString("isXTDBullCrossedUnderBear", isXTDBullCrossedUnderBear, ignoreFalseConditions) +
ToString("isXTDSignalCrossedOverBear", isXTDSignalCrossedOverBear, ignoreFalseConditions) +
ToString("isXTDSignalCrossedUnderBear", isXTDSignalCrossedUnderBear, ignoreFalseConditions) +
""
//
;
//
// XTS ...
string tsStr =
//
ToString("isXTSAllSame", isXTSAllSame, ignoreFalseConditions) +
ToString("isXTSCurrentMin", isXTSCurrentMin, ignoreFalseConditions) +
ToString("isXTSCurrentMax", isXTSCurrentMax, ignoreFalseConditions) +
ToString("isXTSCurrentOverFarest", isXTSCurrentOverFarest, ignoreFalseConditions) +
ToString("isXTSCurrentOverNearest", isXTSCurrentOverNearest, ignoreFalseConditions) +
ToString("isXTSCurrentOverMediest", isXTSCurrentOverMediest, ignoreFalseConditions) +
ToString("isXTSCurrentUnderFarest", isXTSCurrentUnderFarest, ignoreFalseConditions) +
ToString("isXTSCurrentUnderNearest", isXTSCurrentUnderNearest, ignoreFalseConditions) +
ToString("isXTSCurrentUnderMediest", isXTSCurrentUnderMediest, ignoreFalseConditions) +
ToString("isXTSCurrentCrossedOverFarest", isXTSCurrentCrossedOverFarest, ignoreFalseConditions) +
ToString("isXTSCurrentCrossedOverNearest", isXTSCurrentCrossedOverNearest, ignoreFalseConditions) +
ToString("isXTSCurrentCrossedOverMediest", isXTSCurrentCrossedOverMediest, ignoreFalseConditions) +
ToString("isXTSCurrentCrossedUnderFarest", isXTSCurrentCrossedUnderFarest, ignoreFalseConditions) +
ToString("isXTSCurrentCrossedUnderNearest", isXTSCurrentCrossedUnderNearest, ignoreFalseConditions) +
ToString("isXTSCurrentCrossedUnderMediest", isXTSCurrentCrossedUnderMediest, ignoreFalseConditions) +
""
//
;
//
// XCHLH ...
string chlhStr =
//
ToString("isXCHLHSameHHs", isXCHLHSameHHs, ignoreFalseConditions) +
ToString("isXCHLHSameLLs", isXCHLHSameLLs, ignoreFalseConditions) +
ToString("isXCHLHSCMCHHSame", isXCHLHSCMCHHSame, ignoreFalseConditions) +
ToString("isXCHLHSCMCLLSame", isXCHLHSCMCLLSame, ignoreFalseConditions) +
ToString("isXCHLHSCLCHHSame", isXCHLHSCLCHHSame, ignoreFalseConditions) +
ToString("isXCHLHSCLCLLSame", isXCHLHSCLCLLSame, ignoreFalseConditions) +
ToString("isXCHLHMCLCHHSame", isXCHLHMCLCHHSame, ignoreFalseConditions) +
ToString("isXCHLHMCLCLLSame", isXCHLHMCLCLLSame, ignoreFalseConditions) +
ToString("isXCHLHMCOnTopOfLC", isXCHLHMCOnTopOfLC, ignoreFalseConditions) +
ToString("isXCHLHMCInBottomOfLC", isXCHLHMCInBottomOfLC, ignoreFalseConditions) +
""
//
;
//
// XCHMA ...
string chmaStr =
//
ToString("isXCHMASCOverMax", isXCHMASCOverMax, ignoreFalseConditions) +
ToString("isXCHMASCOverMin", isXCHMASCOverMin, ignoreFalseConditions) +
ToString("isXCHMASCUnderMax", isXCHMASCUnderMax, ignoreFalseConditions) +
ToString("isXCHMASCUnderMin", isXCHMASCUnderMin, ignoreFalseConditions) +
ToString("isXCHMASCCrossedOverMax", isXCHMASCCrossedOverMax, ignoreFalseConditions) +
ToString("isXCHMASCCrossedUnderMax", isXCHMASCCrossedUnderMax, ignoreFalseConditions) +
ToString("isXCHMASCCrossedOverMin", isXCHMASCCrossedOverMin, ignoreFalseConditions) +
ToString("isXCHMASCCrossedUnderMin", isXCHMASCCrossedUnderMin, ignoreFalseConditions) +
ToString("isXCHMASCPeak", isXCHMASCPeak, ignoreFalseConditions) +
ToString("isXCHMASCVale", isXCHMASCVale, ignoreFalseConditions) +
ToString("isXCHMASCTrendsUp", isXCHMASCTrendsUp, ignoreFalseConditions) +
ToString("isXCHMASCTrendsDown", isXCHMASCTrendsDown, ignoreFalseConditions) +
ToString("isXCHMASCFastOverSlow", isXCHMASCFastOverSlow, ignoreFalseConditions) +
ToString("isXCHMASCFastUnderSlow", isXCHMASCFastUnderSlow, ignoreFalseConditions) +
ToString("isXCHMASCFastCrossedOverSlow", isXCHMASCFastCrossedOverSlow, ignoreFalseConditions) +
ToString("isXCHMASCFastCrossedUnderSlow", isXCHMASCFastCrossedUnderSlow, ignoreFalseConditions) +
ToString("isXCHMAMCPeak", isXCHMAMCPeak, ignoreFalseConditions) +
ToString("isXCHMAMCVale", isXCHMAMCVale, ignoreFalseConditions) +
ToString("isXCHMAMCTrendsUp", isXCHMAMCTrendsUp, ignoreFalseConditions) +
ToString("isXCHMAMCTrendsDown", isXCHMAMCTrendsDown, ignoreFalseConditions) +
ToString("isXCHMAMCFastOverSlow", isXCHMAMCFastOverSlow, ignoreFalseConditions) +
ToString("isXCHMAMCFastUnderSlow", isXCHMAMCFastUnderSlow, ignoreFalseConditions) +
ToString("isXCHMAMCFastCrossedOverSlow", isXCHMAMCFastCrossedOverSlow, ignoreFalseConditions) +
ToString("isXCHMAMCFastCrossedUnderSlow", isXCHMAMCFastCrossedUnderSlow, ignoreFalseConditions) +
ToString("isXCHMALCPeak", isXCHMALCPeak, ignoreFalseConditions) +
ToString("isXCHMALCVale", isXCHMALCVale, ignoreFalseConditions) +
ToString("isXCHMALCTrendsUp", isXCHMALCTrendsUp, ignoreFalseConditions) +
ToString("isXCHMALCTrendsDown", isXCHMALCTrendsDown, ignoreFalseConditions) +
ToString("isXCHMALCFastOverSlow", isXCHMALCFastOverSlow, ignoreFalseConditions) +
ToString("isXCHMALCFastUnderSlow", isXCHMALCFastUnderSlow, ignoreFalseConditions) +
ToString("isXCHMALCFastCrossedOverSlow", isXCHMALCFastCrossedOverSlow, ignoreFalseConditions) +
ToString("isXCHMALCFastCrossedUnderSlow", isXCHMALCFastCrossedUnderSlow, ignoreFalseConditions) +
""
//
;
//
// Generating Full Result by Combining parts ...
result =
//
"[" + GetToken() + "]" + separator +
"----------------------" + separator +
commonStr +
obdStr +
fiStr +
rsiStr +
tmStr +
amaStr +
lhStr +
tdStr +
tsStr +
chlhStr +
chmaStr +
""
//
;
//
return result;
}
//
// For Data Collector ...
bool IsModelValid()
{
return false;
}
string ToModelString()
{
return NULL;
}
bool ParseModel(string content)
{
return false;
}
int FindIndex(X5MarketConditions &items[])
{
return -1;
}
};
//
@@ -1267,10 +1581,13 @@ public:
GetMarketConditions(mConditions, barIndex);
//
// if (result)
// {
// Print(GetToken() + ", " + GetTag() + ", Salam");
// }
if (result)
{
//
string mConditionsStr = mConditions.GenerateSummary();
mConditionsCollector.Add(mConditionsStr);
Print("Conditions: " + "\n" + mConditionsStr);
}
//
return result;
@@ -1287,6 +1604,12 @@ protected:
private:
//
// Props ...
//
// Prepare an Instance of Data Collector for MarketConditions ...
XSC5MarketConditionDataCollector mConditionsCollector;
//
int mNumberOfItems; // Number of Buffer Ites Read in Conditions ...
//
+42 -5
View File
@@ -191,7 +191,7 @@ public:
//
T iItem;
bool isValid = iItem.Parse(content);
bool isValid = iItem.ParseModel(content);
if (isValid)
{
//
@@ -224,14 +224,51 @@ public:
bool result = false;
//
result = item.IsValid();
result = item.IsModelValid();
if (!result)
{
return result;
}
//
string content = item.ToString();
string content = item.ToModelString();
result = IsValid(content);
if (!result)
{
return result;
}
//
string storePath = GetStorePath();
int mFileHandler = FileOpen(
storePath,
FILE_READ | FILE_WRITE | FILE_TXT);
result = mFileHandler != INVALID_HANDLE;
if (!result)
{
return result;
}
//
FileSeek(mFileHandler, 0, SEEK_END);
FileWrite(mFileHandler, content);
FileFlush(mFileHandler);
FileClose(mFileHandler);
//
return result;
}
//
// Add Item ...
bool Add(
string content // Content
)
{
//
bool result = false;
//
result = IsValid(content);
if (!result)
{
@@ -282,7 +319,7 @@ public:
T iItem = items[i];
//
if (!iItem.IsValid())
if (!iItem.IsModelValid())
{
continue;
}
@@ -309,7 +346,7 @@ public:
bool result = false;
//
result = item.IsValid();
result = item.IsModelValid();
if (!result)
{
return result;
+1
View File
@@ -81,6 +81,7 @@ public:
// Generate Summary ...
virtual string GenerateSummary(
const double multiplier = 1, // Score Multiplier
const string separator = "\n", // Separator
const bool ignoreFalseConditions = true // Ignore False Conditions
);
};