last works ...
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
//
|
||||
// Imports ...
|
||||
#include "../Classes/x-saherelm.base.class.mq5"
|
||||
#include "../Libraries/x-saherelm.x-poi.lib.mq5"
|
||||
|
||||
//
|
||||
// Definitions ...
|
||||
@@ -229,6 +230,191 @@ class XCBarAnalyser : public XSCBase
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an Specified Bar to Zone ...
|
||||
*
|
||||
* @param bar: XOHCL instance, Specified Bar ...
|
||||
* @param zone: XZone instance, Converted Zone Reference ...
|
||||
* @param dir: ENUM_X_DIRECTION member, Specified Bar Type to Convertion ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool ToZone(
|
||||
XOHCL &bar,
|
||||
XZone &zone,
|
||||
ENUM_X_DIRECTION dir = X_DIRECTION_BULLISH //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
zone.Clean();
|
||||
|
||||
//
|
||||
result = bar.IsValid() &&
|
||||
(dir == X_DIRECTION_BULLISH ||
|
||||
dir == X_DIRECTION_BEARISH);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = dir == X_DIRECTION_BULLISH;
|
||||
|
||||
//
|
||||
zone.from = bar.time;
|
||||
zone.to = TimeCurrent();
|
||||
zone.prefix = "XBarZone";
|
||||
|
||||
//
|
||||
zone.upper = isBullish
|
||||
? bar.high
|
||||
: bar.GetDown();
|
||||
|
||||
//
|
||||
zone.lower = isBullish
|
||||
? bar.GetUp()
|
||||
: bar.low;
|
||||
|
||||
//
|
||||
result = zone.IsValid();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Regular ...
|
||||
|
||||
/**
|
||||
* Check a Zone is Rejected in Specified Direction or not ...
|
||||
*
|
||||
* @param bar: XOHCL instance, Specified Bar ...
|
||||
* @param zone: XZone instance, Specified Zone ...
|
||||
* @param dir: ENUM_X_DIRECTION member, Specified Rejection Direction ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool IsRejected(
|
||||
XOHCL &bar,
|
||||
XZone &zone,
|
||||
ENUM_X_DIRECTION dir //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = bar.IsValid() &&
|
||||
zone.IsValid() &&
|
||||
(dir == X_DIRECTION_BULLISH ||
|
||||
dir == X_DIRECTION_BEARISH);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = dir == X_DIRECTION_BULLISH;
|
||||
|
||||
//
|
||||
ENUM_X_DIRECTION rejectionDir;
|
||||
bool isRejection = IsRejectionBar(
|
||||
rejectionDir,
|
||||
bar,
|
||||
40 //
|
||||
);
|
||||
bool isBullishRejection = isRejection &&
|
||||
rejectionDir == X_DIRECTION_BULLISH;
|
||||
bool isBearishRejection = isRejection &&
|
||||
rejectionDir == X_DIRECTION_BEARISH;
|
||||
|
||||
//
|
||||
result = isRejection &&
|
||||
rejectionDir == dir &&
|
||||
(isBullishRejection
|
||||
? bar.low < zone.upper &&
|
||||
bar.low > zone.lower
|
||||
: bar.high > zone.lower &&
|
||||
bar.high < zone.upper);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a Zone is Breaked in Specified Direction or not ...
|
||||
*
|
||||
* @param bar: XOHCL instance, Specified Bar ...
|
||||
* @param zone: XZone instance, Specified Zone ...
|
||||
* @param dir: ENUM_X_DIRECTION member, Specified Rejection Direction ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool IsBreaked(
|
||||
XOHCL &bar,
|
||||
XZone &zone,
|
||||
ENUM_X_DIRECTION dir,
|
||||
bool forceBody = true //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = bar.IsValid() &&
|
||||
zone.IsValid() &&
|
||||
(dir == X_DIRECTION_BULLISH ||
|
||||
dir == X_DIRECTION_BEARISH);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = dir == X_DIRECTION_BULLISH;
|
||||
|
||||
//
|
||||
ENUM_X_DIRECTION momentumDir;
|
||||
bool isMomentum = IsMomentumBar(
|
||||
momentumDir,
|
||||
bar,
|
||||
50 //
|
||||
);
|
||||
bool isBullishBreaked = isMomentum &&
|
||||
momentumDir == X_DIRECTION_BULLISH;
|
||||
bool isBearishBreaked = isMomentum &&
|
||||
momentumDir == X_DIRECTION_BEARISH;
|
||||
|
||||
//
|
||||
result = isMomentum &&
|
||||
momentumDir == dir &&
|
||||
(isBullishBreaked
|
||||
? bar.IsBullish() &&
|
||||
bar.low < zone.lower &&
|
||||
bar.high > zone.upper
|
||||
: bar.IsBearish() &&
|
||||
bar.high > zone.lower &&
|
||||
bar.low < zone.lower);
|
||||
if (result &&
|
||||
forceBody)
|
||||
{
|
||||
//
|
||||
result = isBullishBreaked
|
||||
? bar.IsBullish() &&
|
||||
bar.GetUp() > zone.upper &&
|
||||
bar.GetDown() < zone.lower
|
||||
: bar.IsBearish() &&
|
||||
bar.GetUp() > zone.upper &&
|
||||
bar.GetDown() < zone.lower;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Rejection Bar ...
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user