last ...
This commit is contained in:
@@ -50,7 +50,8 @@ enum ENUM_X_CYCLE_EVENTS
|
|||||||
VWAP_ORDER_CHANGE_ETECTED,
|
VWAP_ORDER_CHANGE_ETECTED,
|
||||||
VWAP_STATE_CHANGE_DETCTED,
|
VWAP_STATE_CHANGE_DETCTED,
|
||||||
CONSOLIDATION_BREAKED_DETECTED,
|
CONSOLIDATION_BREAKED_DETECTED,
|
||||||
PIVOT_DETECTED,
|
PIVOT_STARTED,
|
||||||
|
PIVOT_ENDED,
|
||||||
};
|
};
|
||||||
|
|
||||||
class XC121SMCCycleHelper : public XCBase
|
class XC121SMCCycleHelper : public XCBase
|
||||||
@@ -1376,7 +1377,11 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/**
|
||||||
|
* Get Current Active Pivot ...
|
||||||
|
*
|
||||||
|
* @param pivot: XPVPivot instance reference ...
|
||||||
|
*/
|
||||||
void GetActivePivot(XPVPivot &pivot)
|
void GetActivePivot(XPVPivot &pivot)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -1384,6 +1389,44 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
pivot = mActivePivot;
|
pivot = mActivePivot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count Calculated Pivots ...
|
||||||
|
*
|
||||||
|
* @return ( int )
|
||||||
|
*/
|
||||||
|
int CountPivots()
|
||||||
|
{
|
||||||
|
return ArraySize(mPivots);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill Pivots ...
|
||||||
|
*
|
||||||
|
* @param pivots: XPVPivot instance Reference Array ...
|
||||||
|
*
|
||||||
|
* @return ( int )
|
||||||
|
*/
|
||||||
|
int FillPivots(XPVPivot &pivots[])
|
||||||
|
{
|
||||||
|
//
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean(pivots);
|
||||||
|
|
||||||
|
//
|
||||||
|
Copy(
|
||||||
|
mPivots,
|
||||||
|
pivots //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
result = ArraySize(pivots);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Virtuals ...
|
// Virtuals ...
|
||||||
|
|
||||||
@@ -1485,6 +1528,7 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
bool isNewPeak = conditions.x121Conditions.isNewPeak;
|
bool isNewPeak = conditions.x121Conditions.isNewPeak;
|
||||||
|
double peak = conditions.x121Conditions.peaksBuffer[0];
|
||||||
bool isNewPeakOverLast = conditions.x121Conditions.isNewPeakOverLast;
|
bool isNewPeakOverLast = conditions.x121Conditions.isNewPeakOverLast;
|
||||||
bool isNewPeakUnderLast = conditions.x121Conditions.isNewPeakUnderLast;
|
bool isNewPeakUnderLast = conditions.x121Conditions.isNewPeakUnderLast;
|
||||||
|
|
||||||
@@ -1529,6 +1573,7 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
bool isNewVale = conditions.x121Conditions.isNewVale;
|
bool isNewVale = conditions.x121Conditions.isNewVale;
|
||||||
|
double vale = conditions.x121Conditions.valesBuffer[0];
|
||||||
bool isNewValeOverLast = conditions.x121Conditions.isNewValeOverLast;
|
bool isNewValeOverLast = conditions.x121Conditions.isNewValeOverLast;
|
||||||
bool isNewValeUnderLast = conditions.x121Conditions.isNewValeUnderLast;
|
bool isNewValeUnderLast = conditions.x121Conditions.isNewValeUnderLast;
|
||||||
|
|
||||||
@@ -1907,7 +1952,14 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
//
|
//
|
||||||
if (!IsValid(mActivePivot.from))
|
if (!IsValid(mActivePivot.from))
|
||||||
{
|
{
|
||||||
|
//
|
||||||
mActivePivot.from = cTime;
|
mActivePivot.from = cTime;
|
||||||
|
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
PIVOT_STARTED,
|
||||||
|
events //
|
||||||
|
);
|
||||||
}
|
}
|
||||||
mActivePivot.to = cTime;
|
mActivePivot.to = cTime;
|
||||||
|
|
||||||
@@ -1975,22 +2027,54 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
XCTickZone *iTZ = mActivePivot.state.ticksZone.GetZone(i);
|
XCTickZone *iTZ = mActivePivot.state.ticksZone.GetZone(i);
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isBarInside =
|
double pivot =
|
||||||
changeBar.low >= iTZ.low &&
|
isNewPeak
|
||||||
changeBar.high <= iTZ.high;
|
? peak
|
||||||
if (isBarInside)
|
: vale;
|
||||||
|
bool isPivotInsideZone =
|
||||||
|
pivot >= iTZ.low &&
|
||||||
|
pivot <= iTZ.high;
|
||||||
|
if (isPivotInsideZone)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
cTZoneIDX = i;
|
cTZoneIDX = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isBarInside =
|
||||||
|
changeBar.low >= iTZ.low &&
|
||||||
|
changeBar.high <= iTZ.high;
|
||||||
|
// if (isBarInside)
|
||||||
|
// {
|
||||||
|
// //
|
||||||
|
// cTZoneIDX = i;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
if (IsValidIndex(cTZoneIDX))
|
// Last Zone ...
|
||||||
|
// We Can Break Active Zone ...
|
||||||
|
if (IsValidIndex(cTZoneIDX) && cTZoneIDX == count - 1)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
Print("ZoneIndex: ", cTZoneIDX);
|
Print("ZoneIndex: ", cTZoneIDX);
|
||||||
|
|
||||||
|
//
|
||||||
|
AddRef(
|
||||||
|
mActivePivot,
|
||||||
|
mPivots //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
PIVOT_ENDED,
|
||||||
|
events //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
mActivePivot.Clean();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user