last works ...
This commit is contained in:
@@ -21,6 +21,7 @@
|
|||||||
//
|
//
|
||||||
// Imports ...
|
// Imports ...
|
||||||
#include "../Classes/x-saherelm.base.class.mq5"
|
#include "../Classes/x-saherelm.base.class.mq5"
|
||||||
|
#include "../Libraries/x-saherelm.x-poi.lib.mq5"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Definitions ...
|
// Definitions ...
|
||||||
@@ -229,6 +230,191 @@ class XCBarAnalyser : public XSCBase
|
|||||||
return result;
|
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 ...
|
// 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