add conditions collector and also complete generate summary ...
need to test ...
This commit is contained in:
@@ -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 ...
|
||||
|
||||
//
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user