1251 lines
18 KiB
Plaintext
1251 lines
18 KiB
Plaintext
///////////////////////////////////////////////////////
|
|
//
|
|
// SaherElm IT Center MQL5 Common Library
|
|
// --------------------------------------
|
|
// Name: XEnumsLib
|
|
// Description: provide all commonly used functions ...
|
|
//
|
|
//
|
|
// Maintainer:
|
|
// ------------
|
|
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
|
//
|
|
//////////////////////////////////////////////////////
|
|
//
|
|
// Global Properties ...
|
|
#property library
|
|
#property copyright "Copyright 2023, SaherElm IT Center"
|
|
#property link "https://www.saherelm.ir"
|
|
#property version "1.00"
|
|
#property strict
|
|
|
|
//
|
|
// START Price Type ...
|
|
//
|
|
|
|
//
|
|
// Availables Price Types ...
|
|
enum ENUM_X_PRICE
|
|
{
|
|
X_PRICE_NONE, // None
|
|
X_PRICE_HIGH, // High
|
|
X_PRICE_OPEN, // Open
|
|
X_PRICE_CLOSE, // Close
|
|
X_PRICE_LOW, // Low
|
|
X_PRICE_UP, // Body Up
|
|
X_PRICE_DOWN, // Body Down
|
|
X_PRICE_MEDIAN, // Median
|
|
X_PRICE_BODY_MEDIAN, // Body Median
|
|
X_PRICE_TYPICAL, // Typical
|
|
X_PRICE_WEIGHTED // Weighted
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_PRICE member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_PRICE value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
value != NULL &&
|
|
value != X_PRICE_NONE;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts Series Mode to ENUM_X_PRICE ...
|
|
*
|
|
* @param value: ENUM_SERIESMODE member ...
|
|
*
|
|
* @return ( ENUM_X_PRICE )
|
|
*/
|
|
ENUM_X_PRICE ToXPrice(ENUM_SERIESMODE value)
|
|
{
|
|
//
|
|
ENUM_X_PRICE result = X_PRICE_CLOSE;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
// High ...
|
|
case MODE_HIGH:
|
|
result = X_PRICE_HIGH;
|
|
break;
|
|
|
|
//
|
|
// Open ...
|
|
case MODE_OPEN:
|
|
result = X_PRICE_OPEN;
|
|
break;
|
|
|
|
//
|
|
// Low ...
|
|
case MODE_LOW:
|
|
result = X_PRICE_LOW;
|
|
break;
|
|
|
|
//
|
|
// Close ...
|
|
// Default ...
|
|
case MODE_CLOSE:
|
|
default:
|
|
result = X_PRICE_CLOSE;
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts Applied Price to ENUM_X_PRICE ...
|
|
*
|
|
* @param value: ENUM_APPLIED_PRICE member ...
|
|
*
|
|
* @return ( ENUM_X_PRICE )
|
|
*/
|
|
ENUM_X_PRICE ToXPrice(ENUM_APPLIED_PRICE value)
|
|
{
|
|
//
|
|
ENUM_X_PRICE result = X_PRICE_NONE;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case PRICE_HIGH:
|
|
result = X_PRICE_HIGH;
|
|
break;
|
|
|
|
//
|
|
case PRICE_OPEN:
|
|
result = X_PRICE_OPEN;
|
|
break;
|
|
|
|
//
|
|
case PRICE_CLOSE:
|
|
result = X_PRICE_CLOSE;
|
|
break;
|
|
|
|
//
|
|
case PRICE_LOW:
|
|
result = X_PRICE_LOW;
|
|
break;
|
|
|
|
//
|
|
case PRICE_MEDIAN:
|
|
result = X_PRICE_MEDIAN;
|
|
break;
|
|
|
|
//
|
|
case PRICE_TYPICAL:
|
|
result = X_PRICE_TYPICAL;
|
|
break;
|
|
|
|
//
|
|
case PRICE_WEIGHTED:
|
|
result = X_PRICE_WEIGHTED;
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts Price Type to Applied Price ...
|
|
*
|
|
* @param value: ENUM_X_PRICE member ...
|
|
*
|
|
* @return ( ENUM_APPLIED_PRICE )
|
|
*/
|
|
ENUM_APPLIED_PRICE ToAppliedPrice(ENUM_X_PRICE value)
|
|
{
|
|
//
|
|
// Default ...
|
|
ENUM_APPLIED_PRICE result = PRICE_CLOSE;
|
|
|
|
//
|
|
if (!IsValid(value) ||
|
|
value == X_PRICE_UP ||
|
|
value == X_PRICE_DOWN ||
|
|
value == X_PRICE_BODY_MEDIAN)
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_PRICE_HIGH:
|
|
result = PRICE_HIGH;
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_OPEN:
|
|
result = PRICE_OPEN;
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_CLOSE:
|
|
result = PRICE_CLOSE;
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_LOW:
|
|
result = PRICE_LOW;
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_MEDIAN:
|
|
result = PRICE_MEDIAN;
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_TYPICAL:
|
|
result = PRICE_TYPICAL;
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_WEIGHTED:
|
|
result = PRICE_WEIGHTED;
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_PRICE member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_PRICE value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_PRICE_NONE:
|
|
result = "None";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_HIGH:
|
|
result = "High";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_OPEN:
|
|
result = "Open";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_CLOSE:
|
|
result = "Close";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_LOW:
|
|
result = "Low";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_UP:
|
|
result = "Body Up";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_DOWN:
|
|
result = "Body Down";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_MEDIAN:
|
|
result = "Median";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_BODY_MEDIAN:
|
|
result = "Body Median";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_TYPICAL:
|
|
result = "Typical";
|
|
break;
|
|
|
|
//
|
|
case X_PRICE_WEIGHTED:
|
|
result = "Weighted";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Price Type ...
|
|
//
|
|
|
|
//
|
|
// START Boundary Price Type ...
|
|
//
|
|
|
|
//
|
|
// Available Boundary Price Types ...
|
|
enum ENUM_X_BOUNDARY_PRICE
|
|
{
|
|
X_BOUNDARY_PRICE_NONE, // None
|
|
X_BOUNDARY_PRICE_UP_DOWN, // Up/Down
|
|
X_BOUNDARY_PRICE_HIGH_LOW, // High/Low
|
|
};
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_BOUNDARY_PRICE member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_BOUNDARY_PRICE value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
value != NULL &&
|
|
value != X_BOUNDARY_PRICE_NONE;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_BOUNDARY_PRICE member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_BOUNDARY_PRICE value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
if (!IsValid(value))
|
|
{
|
|
value = X_BOUNDARY_PRICE_NONE;
|
|
}
|
|
|
|
//
|
|
result = EnumToString(value);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Boundary Price Type ...
|
|
//
|
|
|
|
//
|
|
// START Direction ...
|
|
//
|
|
|
|
//
|
|
// Directions ...
|
|
enum ENUM_X_DIRECTION
|
|
{
|
|
X_DIRECTION_ALL, // All
|
|
X_DIRECTION_NONE, // None
|
|
X_DIRECTION_BULLISH, // Bullish
|
|
X_DIRECTION_BEARISH, // Bearish
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
value != NULL &&
|
|
value != X_DIRECTION_NONE;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Validate value Has Specified Direction ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool HasDirection(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result = IsValid(value) &&
|
|
value != X_DIRECTION_ALL;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Check a Direction is Bullish or not ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsBullish(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result = value == X_DIRECTION_BULLISH;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
bool IsSpecifiedBullish(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result = value == X_DIRECTION_BULLISH;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Check a Direction is Bearish or not ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsBearish(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result = value == X_DIRECTION_BEARISH;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
bool IsSpecifiedBearish(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result = value == X_DIRECTION_BEARISH;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts Specified Direction to Opposit ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( ENUM_X_DIRECTION )
|
|
*/
|
|
ENUM_X_DIRECTION Opposit(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
ENUM_X_DIRECTION result = X_DIRECTION_NONE;
|
|
|
|
//
|
|
if (!HasDirection(value))
|
|
{
|
|
return result;
|
|
}
|
|
|
|
//
|
|
result =
|
|
IsBullish(value)
|
|
? X_DIRECTION_BEARISH
|
|
: X_DIRECTION_BULLISH;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_DIRECTION value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
case X_DIRECTION_ALL:
|
|
result = "ALL";
|
|
break;
|
|
case X_DIRECTION_NONE:
|
|
result = "NONE";
|
|
break;
|
|
case X_DIRECTION_BULLISH:
|
|
result = "BULLISH";
|
|
break;
|
|
case X_DIRECTION_BEARISH:
|
|
result = "BEARISH";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Direction ...
|
|
//
|
|
|
|
//
|
|
// START Fibo Level ...
|
|
//
|
|
|
|
//
|
|
// Fibonacci Levels ...
|
|
enum ENUM_X_FIBO_LEVELS
|
|
{
|
|
X_FIBO_LEVEL_236, // 0.236
|
|
X_FIBO_LEVEL_270, // 0.27
|
|
X_FIBO_LEVEL_382, // 0.382
|
|
X_FIBO_LEVEL_500, // 0.5
|
|
X_FIBO_LEVEL_618, // 0.618
|
|
X_FIBO_LEVEL_730, // 0.730
|
|
X_FIBO_LEVEL_764, // 0.764
|
|
X_FIBO_LEVEL_786, // 0.786
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_FIBO_LEVELS member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_FIBO_LEVELS value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_FIBO_LEVEL_236:
|
|
result = "0.236";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_270:
|
|
result = "0.270";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_382:
|
|
result = "0.382";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_500:
|
|
result = "0.500";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_618:
|
|
result = "0.618";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_730:
|
|
result = "0.730";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_764:
|
|
result = "0.764";
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_786:
|
|
result = "0.786";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_FIBO_LEVELS member ...
|
|
*
|
|
* @return ( double )
|
|
*/
|
|
double GetFiboLevelValue(ENUM_X_FIBO_LEVELS value)
|
|
{
|
|
//
|
|
double result = 0;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_FIBO_LEVEL_236:
|
|
result = 0.236;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_270:
|
|
result = 0.270;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_382:
|
|
result = 0.382;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_500:
|
|
result = 0.500;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_618:
|
|
result = 0.618;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_730:
|
|
result = 0.730;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_764:
|
|
result = 0.764;
|
|
break;
|
|
|
|
//
|
|
case X_FIBO_LEVEL_786:
|
|
result = 0.786;
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Fibo Level ...
|
|
//
|
|
|
|
//
|
|
// START Swing Types ...
|
|
//
|
|
|
|
//
|
|
// Swing Types ...
|
|
enum ENUM_X_SWING_TYPE
|
|
{
|
|
X_SWING_NONE, // None
|
|
X_SWING_LOW, // Swing Low
|
|
X_SWING_HIGH, // Swing High
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_DIRECTION member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_SWING_TYPE value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
value != NULL &&
|
|
value != X_SWING_NONE;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_SWING_TYPE member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_SWING_TYPE value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_SWING_NONE:
|
|
result = "None";
|
|
break;
|
|
|
|
//
|
|
case X_SWING_LOW:
|
|
result = "Swing Low";
|
|
break;
|
|
|
|
//
|
|
case X_SWING_HIGH:
|
|
result = "Swing High";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To ENUM_SERIESMODE ...
|
|
*
|
|
* @param value: ENUM_X_SWING_TYPE member ...
|
|
*
|
|
* @return ( ENUM_SERIESMODE )
|
|
*/
|
|
ENUM_SERIESMODE ToSeriesMode(ENUM_X_SWING_TYPE value)
|
|
{
|
|
//
|
|
ENUM_SERIESMODE result = MODE_HIGH;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_SWING_HIGH:
|
|
result = MODE_HIGH;
|
|
break;
|
|
|
|
//
|
|
case X_SWING_LOW:
|
|
default:
|
|
result = MODE_LOW;
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Swing Types ...
|
|
//
|
|
|
|
//
|
|
// START Period Method ...
|
|
//
|
|
|
|
//
|
|
// Period Calculation Method ...
|
|
enum ENUM_X_PERIOD_METHOD
|
|
{
|
|
X_PERIOD_NONE, // None
|
|
X_PERIOD_AUTO, // Auto Select
|
|
X_PERIOD_MANUALLY // Manually
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_PERIOD_METHOD member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_PERIOD_METHOD value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
value != NULL &&
|
|
value != X_PERIOD_NONE;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_PERIOD_METHOD member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_PERIOD_METHOD value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_PERIOD_NONE:
|
|
result = "None";
|
|
break;
|
|
|
|
//
|
|
case X_PERIOD_AUTO:
|
|
result = "Auto Select";
|
|
break;
|
|
|
|
//
|
|
case X_PERIOD_MANUALLY:
|
|
result = "Manually";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Period Method ...
|
|
//
|
|
|
|
//
|
|
// START Market Cycles ...
|
|
//
|
|
|
|
//
|
|
// Market Cycles ...
|
|
enum ENUM_X_MARKET_CYCLES
|
|
{
|
|
X_MARKET_CYCLE_UNKNOWN, // Unknown Cycle
|
|
X_MARKET_CYCLE_SHORT, // Short Cycle
|
|
X_MARKET_CYCLE_MEDIUM, // Medium Cycle
|
|
X_MARKET_CYCLE_LONG, // Long Cycle
|
|
X_MARKET_CYCLE_HIND, // Hind Cycle
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_MARKET_CYCLES member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_MARKET_CYCLES value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
//
|
|
value != NULL &&
|
|
value != X_MARKET_CYCLE_UNKNOWN
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts an String to it's related Market Cycle ...
|
|
*
|
|
* @param value: string ...
|
|
*
|
|
* @return ( ENUM_X_MARKET_CYCLES )
|
|
*/
|
|
ENUM_X_MARKET_CYCLES ToCycle(string value)
|
|
{
|
|
//
|
|
ENUM_X_MARKET_CYCLES result = X_MARKET_CYCLE_UNKNOWN;
|
|
|
|
//
|
|
ENUM_X_MARKET_CYCLES cycles[];
|
|
int count = GetAllMarketCycles(cycles);
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
//
|
|
ENUM_X_MARKET_CYCLES iCycle = cycles[i];
|
|
string iStr = ToString(iCycle);
|
|
|
|
//
|
|
if (value == iStr)
|
|
{
|
|
//
|
|
result = iCycle;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_MARKET_CYCLES member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_MARKET_CYCLES value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_MARKET_CYCLE_UNKNOWN:
|
|
result = "Unknown Cycle";
|
|
break;
|
|
|
|
//
|
|
case X_MARKET_CYCLE_SHORT:
|
|
result = "Short Cycle";
|
|
break;
|
|
|
|
//
|
|
case X_MARKET_CYCLE_MEDIUM:
|
|
result = "Medium Cycle";
|
|
break;
|
|
|
|
//
|
|
case X_MARKET_CYCLE_LONG:
|
|
result = "Long Cycle";
|
|
break;
|
|
|
|
//
|
|
case X_MARKET_CYCLE_HIND:
|
|
result = "Hind Cycle";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Retrieve All Availabled Market Cycles ...
|
|
*
|
|
* @param cycles: ENUM_X_MARKET_CYCLES member collection ...
|
|
*
|
|
* @return ( int )
|
|
*/
|
|
int GetAllMarketCycles(ENUM_X_MARKET_CYCLES &cycles[])
|
|
{
|
|
//
|
|
ZeroMemory(cycles);
|
|
ArrayResize(cycles, 0);
|
|
|
|
//
|
|
ArrayResize(cycles, ArraySize(cycles) + 1);
|
|
cycles[ArraySize(cycles) - 1] = X_MARKET_CYCLE_UNKNOWN;
|
|
|
|
//
|
|
ArrayResize(cycles, ArraySize(cycles) + 1);
|
|
cycles[ArraySize(cycles) - 1] = X_MARKET_CYCLE_SHORT;
|
|
|
|
//
|
|
ArrayResize(cycles, ArraySize(cycles) + 1);
|
|
cycles[ArraySize(cycles) - 1] = X_MARKET_CYCLE_MEDIUM;
|
|
|
|
//
|
|
ArrayResize(cycles, ArraySize(cycles) + 1);
|
|
cycles[ArraySize(cycles) - 1] = X_MARKET_CYCLE_LONG;
|
|
|
|
//
|
|
ArrayResize(cycles, ArraySize(cycles) + 1);
|
|
cycles[ArraySize(cycles) - 1] = X_MARKET_CYCLE_HIND;
|
|
|
|
//
|
|
int result = ArraySize(cycles);
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Market Cycles ...
|
|
//
|
|
|
|
//
|
|
// START Week Days ...
|
|
//
|
|
|
|
//
|
|
// Week Days ...
|
|
enum ENUM_X_WEEK_DAYS
|
|
{
|
|
X_WEEK_DAY_NONE = -1, // None
|
|
X_WEEK_DAY_SUNDAY = 0, // Sunday
|
|
X_WEEK_DAY_MONDAY = 1, // Monday
|
|
X_WEEK_DAY_TUESDAY = 2, // Tuesday
|
|
X_WEEK_DAY_WEDNESDAY = 3, // Wednesday
|
|
X_WEEK_DAY_THURSDAY = 4, // Thursday
|
|
X_WEEK_DAY_FRIDAY = 5, // Friday
|
|
X_WEEK_DAY_SATURDAY = 6, // Saturday
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_WEEK_DAYS member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_WEEK_DAYS value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
//
|
|
value != NULL &&
|
|
value != X_WEEK_DAY_NONE
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_WEEK_DAYS member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_WEEK_DAYS value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_WEEK_DAY_NONE:
|
|
result = "None";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_SUNDAY:
|
|
result = "Sunday";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_MONDAY:
|
|
result = "Monday";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_TUESDAY:
|
|
result = "Tuesday";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_WEDNESDAY:
|
|
result = "Wednesday";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_THURSDAY:
|
|
result = "Thursday";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_FRIDAY:
|
|
result = "Friday";
|
|
break;
|
|
|
|
//
|
|
case X_WEEK_DAY_SATURDAY:
|
|
result = "Saturday";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Week Days ...
|
|
//
|
|
|
|
//
|
|
// START Ma Methods ...
|
|
//
|
|
|
|
//
|
|
// Ma Methods ...
|
|
enum ENUM_X_MA_METHOD
|
|
{
|
|
X_MA_MODE_NONE, // None
|
|
X_MA_MODE_SMA, // SMA
|
|
X_MA_MODE_EMA, // EMA
|
|
X_MA_MODE_LWMA, // LWMA
|
|
X_MA_MODE_SMMA, // SMMA
|
|
};
|
|
|
|
//
|
|
// Extensions ...
|
|
|
|
/**
|
|
* Validate ...
|
|
*
|
|
* @param value: ENUM_X_MA_METHOD member ...
|
|
*
|
|
* @return ( bool )
|
|
*/
|
|
bool IsValid(ENUM_X_MA_METHOD value)
|
|
{
|
|
//
|
|
bool result = false;
|
|
|
|
//
|
|
result =
|
|
//
|
|
value != NULL &&
|
|
value != X_MA_MODE_NONE
|
|
//
|
|
;
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Converts To String ...
|
|
*
|
|
* @param value: ENUM_X_MA_METHOD member ...
|
|
*
|
|
* @return ( string )
|
|
*/
|
|
string ToString(ENUM_X_MA_METHOD value)
|
|
{
|
|
//
|
|
string result = NULL;
|
|
|
|
//
|
|
switch (value)
|
|
{
|
|
//
|
|
case X_MA_MODE_NONE:
|
|
result = "None";
|
|
break;
|
|
|
|
//
|
|
case X_MA_MODE_SMA:
|
|
result = "SMA";
|
|
break;
|
|
|
|
//
|
|
case X_MA_MODE_EMA:
|
|
result = "EMA";
|
|
break;
|
|
|
|
//
|
|
case X_MA_MODE_LWMA:
|
|
result = "LWMA";
|
|
break;
|
|
|
|
//
|
|
case X_MA_MODE_SMMA:
|
|
result = "SMMA";
|
|
break;
|
|
}
|
|
|
|
//
|
|
return result;
|
|
}
|
|
|
|
//
|
|
// END Ma Methods ...
|
|
//
|
|
|
|
// |