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 ... // X5 Provider Market Conditions ...
class X5MarketConditions : public XSCBaseProviderMarketConditions class X5MarketConditions : public XSCBaseProviderMarketConditions
@@ -700,15 +752,277 @@ public:
// Generate Summary ... // Generate Summary ...
virtual string GenerateSummary( virtual string GenerateSummary(
const double multiplier = 1, // Score Multiplier const double multiplier = 1, // Score Multiplier
const string separator = "\n", // Separator
const bool ignoreFalseConditions = true // Ignore False Conditions const bool ignoreFalseConditions = true // Ignore False Conditions
) )
{ {
// //
string result = NULL; 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; 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); GetMarketConditions(mConditions, barIndex);
// //
// if (result) if (result)
// { {
// Print(GetToken() + ", " + GetTag() + ", Salam"); //
// } string mConditionsStr = mConditions.GenerateSummary();
mConditionsCollector.Add(mConditionsStr);
Print("Conditions: " + "\n" + mConditionsStr);
}
// //
return result; return result;
@@ -1287,6 +1604,12 @@ protected:
private: private:
// //
// Props ... // Props ...
//
// Prepare an Instance of Data Collector for MarketConditions ...
XSC5MarketConditionDataCollector mConditionsCollector;
//
int mNumberOfItems; // Number of Buffer Ites Read in Conditions ... int mNumberOfItems; // Number of Buffer Ites Read in Conditions ...
// //
+42 -5
View File
@@ -191,7 +191,7 @@ public:
// //
T iItem; T iItem;
bool isValid = iItem.Parse(content); bool isValid = iItem.ParseModel(content);
if (isValid) if (isValid)
{ {
// //
@@ -224,14 +224,51 @@ public:
bool result = false; bool result = false;
// //
result = item.IsValid(); result = item.IsModelValid();
if (!result) if (!result)
{ {
return 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); result = IsValid(content);
if (!result) if (!result)
{ {
@@ -282,7 +319,7 @@ public:
T iItem = items[i]; T iItem = items[i];
// //
if (!iItem.IsValid()) if (!iItem.IsModelValid())
{ {
continue; continue;
} }
@@ -309,7 +346,7 @@ public:
bool result = false; bool result = false;
// //
result = item.IsValid(); result = item.IsModelValid();
if (!result) if (!result)
{ {
return result; return result;
+1
View File
@@ -81,6 +81,7 @@ public:
// Generate Summary ... // Generate Summary ...
virtual string GenerateSummary( virtual string GenerateSummary(
const double multiplier = 1, // Score Multiplier const double multiplier = 1, // Score Multiplier
const string separator = "\n", // Separator
const bool ignoreFalseConditions = true // Ignore False Conditions const bool ignoreFalseConditions = true // Ignore False Conditions
); );
}; };
+62 -20
View File
@@ -3418,7 +3418,7 @@ MqlDateTime GetBarTimeStruct(
// //
template <typename T> template <typename T>
bool IsSame( bool IsSame(
T &buffer[], // Search Buffer T &buffer[], // Search Buffer
int count = 5 // Number of Searchs int count = 5 // Number of Searchs
) )
{ {
@@ -3428,28 +3428,33 @@ bool IsSame(
// //
int bufferSize = ArraySize(buffer); int bufferSize = ArraySize(buffer);
result = bufferSize > 0; result = bufferSize > 0;
if (!result) { if (!result)
{
return result; return result;
} }
// //
// Validate Count ... // Validate Count ...
result = count < bufferSize; result = count < bufferSize;
if (!result) { if (!result)
{
return result; return result;
} }
// //
T iTem = buffer[0]; T iTem = buffer[0];
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++)
{
// //
if (iTem != buffer[i]) { if (iTem != buffer[i])
{
result = false; result = false;
break; break;
} }
// //
if (!result) { if (!result)
{
result = true; result = true;
} }
} }
@@ -3665,21 +3670,24 @@ bool IsDecreasing(
// //
bool IsTrendingUp( bool IsTrendingUp(
const double &buffer1[], // First Buffer const double &buffer1[], // First Buffer
const double &buffer2[] // Seccend Buffer const double &buffer2[] // Seccend Buffer
) { )
{
// //
bool result = false; bool result = false;
// //
int buffer1Count = ArraySize(buffer1); int buffer1Count = ArraySize(buffer1);
int buffer2Count = ArraySize(buffer2); int buffer2Count = ArraySize(buffer2);
if (buffer1Count <= 0 || buffer2Count <= 0) { if (buffer1Count <= 0 || buffer2Count <= 0)
{
return result; return result;
} }
// //
int count = MathMin(buffer1Count, buffer2Count); int count = MathMin(buffer1Count, buffer2Count);
if (count <= 1) { if (count <= 1)
{
return result; return result;
} }
@@ -3687,17 +3695,20 @@ bool IsTrendingUp(
int upCounts = 0; int upCounts = 0;
int downCounts = 0; int downCounts = 0;
double value = MathAbs(buffer1[0] - buffer2[0]); double value = MathAbs(buffer1[0] - buffer2[0]);
for (int i = 1; i < count; i++) { for (int i = 1; i < count; i++)
{
// //
double iValue = MathAbs(buffer1[i] - buffer2[i]); double iValue = MathAbs(buffer1[i] - buffer2[i]);
// //
if (value > iValue) { if (value > iValue)
{
upCounts++; upCounts++;
} }
// //
if (value < iValue) { if (value < iValue)
{
downCounts++; downCounts++;
} }
} }
@@ -3712,21 +3723,24 @@ bool IsTrendingUp(
// //
bool IsTrendingDown( bool IsTrendingDown(
const double &buffer1[], // First Buffer const double &buffer1[], // First Buffer
const double &buffer2[] // Seccend Buffer const double &buffer2[] // Seccend Buffer
) { )
{
// //
bool result = false; bool result = false;
// //
int buffer1Count = ArraySize(buffer1); int buffer1Count = ArraySize(buffer1);
int buffer2Count = ArraySize(buffer2); int buffer2Count = ArraySize(buffer2);
if (buffer1Count <= 0 || buffer2Count <= 0) { if (buffer1Count <= 0 || buffer2Count <= 0)
{
return result; return result;
} }
// //
int count = MathMin(buffer1Count, buffer2Count); int count = MathMin(buffer1Count, buffer2Count);
if (count <= 1) { if (count <= 1)
{
return result; return result;
} }
@@ -3734,17 +3748,20 @@ bool IsTrendingDown(
int upCounts = 0; int upCounts = 0;
int downCounts = 0; int downCounts = 0;
double value = MathAbs(buffer1[0] - buffer2[0]); double value = MathAbs(buffer1[0] - buffer2[0]);
for (int i = 1; i < count; i++) { for (int i = 1; i < count; i++)
{
// //
double iValue = MathAbs(buffer1[i] - buffer2[i]); double iValue = MathAbs(buffer1[i] - buffer2[i]);
// //
if (value > iValue) { if (value > iValue)
{
upCounts++; upCounts++;
} }
// //
if (value < iValue) { if (value < iValue)
{
downCounts++; downCounts++;
} }
} }
@@ -4822,6 +4839,31 @@ string ToString(T value)
return (string)value; return (string)value;
} }
//
// Used In Report or Summary Generators ...
string ToString(
string prefix, // Title
bool value, // Value
bool ignoreFalseConditions = true, // Ignore False Conditions
string prefixSeparator = ":", // Title Separator
string lineSeparator = "\n" // Line Separator
)
{
//
string result = NULL;
//
result = (value || !ignoreFalseConditions)
? prefix +
prefixSeparator + " " +
ToString(value) +
lineSeparator
: "";
//
return result;
}
// //
// Converts a Buffer to String Representation ... // Converts a Buffer to String Representation ...
template <typename T> template <typename T>
+16 -4
View File
@@ -856,9 +856,15 @@ struct XSignal
return GetToken(this); return GetToken(this);
} }
//
bool IsModelValid()
{
return IsValid();
}
// //
// To String Representation ... // To String Representation ...
string ToString() string ToModelString()
{ {
// //
string result = NULL; string result = NULL;
@@ -940,7 +946,7 @@ struct XSignal
// //
// Parse String Model and Fill Available // Parse String Model and Fill Available
// Items ... // Items ...
bool Parse(string value) bool ParseModel(string value)
{ {
// //
bool result = false; bool result = false;
@@ -2709,9 +2715,15 @@ struct XPositionInfo
return GetToken(this); return GetToken(this);
} }
//
bool IsModelValid()
{
return IsValid();
}
// //
// Convert to String Representation // Convert to String Representation
string ToString() string ToModelString()
{ {
// //
string result = NULL; string result = NULL;
@@ -2753,7 +2765,7 @@ struct XPositionInfo
// //
// Parse and Fill from Given String Representation // Parse and Fill from Given String Representation
bool Parse(string value) bool ParseModel(string value)
{ {
// //
bool result = false; bool result = false;