318 lines
9.8 KiB
Plaintext
318 lines
9.8 KiB
Plaintext
//
|
|
// Select a Supply Zone which Price is Inside it ...
|
|
XZone aSupplyZone;
|
|
XZone aSupplyZoneTrigger;
|
|
bool hasSupplyZoneArroundCBar = false;
|
|
bool hasTriggerSupplyZoneArroundCBar = false;
|
|
int aSupplyZonesCount = ArraySize(_15MState.supplyZones);
|
|
int aSupplyZonesTriggerCount = ArraySize(_5MState.supplyZones);
|
|
if (!hasSupplyZoneArroundCBar ||
|
|
!hasTriggerSupplyZoneArroundCBar)
|
|
{
|
|
for (int i = 0; i < aSupplyZonesCount; i++)
|
|
{
|
|
//
|
|
XZone iZone = _15MState.supplyZones[i];
|
|
|
|
//
|
|
bool canSetZone = (!hasSupplyZoneArroundCBar &&
|
|
iZone.lower < cBar.low &&
|
|
iZone.upper > cBar.high) ||
|
|
(hasSupplyZoneArroundCBar &&
|
|
aSupplyZone.lower < cBar.low &&
|
|
aSupplyZone.upper > cBar.high &&
|
|
iZone.lower < cBar.low &&
|
|
iZone.upper > cBar.high &&
|
|
iZone.GetRange() < aSupplyZone.GetRange());
|
|
if (canSetZone &&
|
|
!hasTriggerSupplyZoneArroundCBar &&
|
|
IsValidSize(aSupplyZonesTriggerCount))
|
|
{
|
|
//
|
|
for (int j = 0; j < aSupplyZonesTriggerCount; j++)
|
|
{
|
|
//
|
|
XZone jZone = _5MState.supplyZones[j];
|
|
|
|
//
|
|
bool canSetTriggerZone = (!hasTriggerSupplyZoneArroundCBar &&
|
|
jZone.lower < cBar.low &&
|
|
jZone.upper > cBar.high) ||
|
|
(hasTriggerSupplyZoneArroundCBar &&
|
|
aSupplyZoneTrigger.lower < cBar.low &&
|
|
aSupplyZoneTrigger.upper > cBar.high &&
|
|
jZone.lower < cBar.low &&
|
|
jZone.upper > cBar.high &&
|
|
jZone.GetRange() < aSupplyZoneTrigger.GetRange());
|
|
if (canSetTriggerZone)
|
|
{
|
|
//
|
|
iZone.to = cTime;
|
|
jZone.to = cTime;
|
|
aSupplyZone = iZone;
|
|
aSupplyZoneTrigger = jZone;
|
|
hasSupplyZoneArroundCBar = true;
|
|
hasTriggerSupplyZoneArroundCBar = true;
|
|
|
|
//
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
// XZone supplyZone;
|
|
// int supplyZonesCount = ArraySize(_5MState.supplyZones);
|
|
// bool hasSupplyZoneOverCBar = IsValidSize(supplyZonesCount);
|
|
// if (hasSupplyZoneOverCBar)
|
|
// {
|
|
// //
|
|
// hasSupplyZoneOverCBar = false;
|
|
// for (int i = 0; i < supplyZonesCount; i++)
|
|
// {
|
|
// //
|
|
// XZone iZone = _5MState.supplyZones[i];
|
|
|
|
// //
|
|
// if (!hasSupplyZoneOverCBar &&
|
|
// iZone.lower > cBar.high)
|
|
// {
|
|
// //
|
|
// iZone.to = cTime;
|
|
// supplyZone = iZone;
|
|
// hasSupplyZoneOverCBar = true;
|
|
|
|
// // //
|
|
// // break;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
//
|
|
XZone demandZone;
|
|
int demandZonesCount = ArraySize(_5MState.demandZones);
|
|
bool hasDemandZoneUnderCBar = IsValidSize(demandZonesCount);
|
|
if (hasDemandZoneUnderCBar)
|
|
{
|
|
//
|
|
hasDemandZoneUnderCBar = false;
|
|
for (int i = 0; i < demandZonesCount; i++)
|
|
{
|
|
//
|
|
XZone iZone = _5MState.demandZones[i];
|
|
|
|
//
|
|
if (!hasDemandZoneUnderCBar &&
|
|
iZone.upper < cBar.low)
|
|
{
|
|
//
|
|
iZone.to = cTime;
|
|
demandZone = iZone;
|
|
hasDemandZoneUnderCBar = true;
|
|
|
|
//
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
XOHCL swingHigh;
|
|
int swingHighsCount = ArraySize(_5MState.swingHighs);
|
|
bool hasSwingHighOverCBar = IsValidSize(swingHighsCount);
|
|
if (hasSwingHighOverCBar)
|
|
{
|
|
//
|
|
hasSwingHighOverCBar = false;
|
|
for (int i = 0; i < swingHighsCount; i++)
|
|
{
|
|
//
|
|
XOHCL iBar = _5MState.swingHighs[i];
|
|
|
|
//
|
|
if (!hasSwingHighOverCBar &&
|
|
iBar.high > cBar.high)
|
|
{
|
|
//
|
|
swingHigh = iBar;
|
|
hasSwingHighOverCBar = true;
|
|
|
|
//
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
XOHCL swingLow;
|
|
int swingLowsCount = ArraySize(_5MState.swingLows);
|
|
bool hasSwingLowUnderCBar = IsValidSize(swingLowsCount);
|
|
if (hasSwingLowUnderCBar)
|
|
{
|
|
//
|
|
hasSwingLowUnderCBar = false;
|
|
for (int i = 0; i < swingLowsCount; i++)
|
|
{
|
|
//
|
|
XOHCL iBar = _5MState.swingLows[i];
|
|
|
|
//
|
|
if (!hasSwingLowUnderCBar &&
|
|
iBar.low < cBar.low)
|
|
{
|
|
//
|
|
swingLow = iBar;
|
|
hasSwingLowUnderCBar = true;
|
|
|
|
//
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//
|
|
XOHCL bullishRejectionBar;
|
|
XOHCL bearishRejectionBar;
|
|
bool hasBullishRejectionBarUnderCBar = false;
|
|
bool hasBearishRejectionBarOverCBar = false;
|
|
int rejectionBarsCount = ArraySize(_5MState.rejectionBars);
|
|
if (IsValidSize(rejectionBarsCount))
|
|
{
|
|
//
|
|
for (int i = 0; i < rejectionBarsCount; i++)
|
|
{
|
|
//
|
|
XOHCL iBar = _5MState.rejectionBars[i];
|
|
|
|
//
|
|
bool isBullish = iBar.GetLowShadow() > iBar.GetHighShadow();
|
|
bool isBearish = iBar.GetHighShadow() > iBar.GetLowShadow();
|
|
|
|
//
|
|
if (isBullish &&
|
|
!hasBullishRejectionBarUnderCBar &&
|
|
iBar.high < cBar.low)
|
|
{
|
|
//
|
|
bullishRejectionBar = iBar;
|
|
hasBullishRejectionBarUnderCBar = true;
|
|
}
|
|
|
|
//
|
|
if (isBearish &&
|
|
!hasBearishRejectionBarOverCBar &&
|
|
iBar.low > cBar.high)
|
|
{
|
|
//
|
|
bearishRejectionBar = iBar;
|
|
hasBearishRejectionBarOverCBar = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
// XZone bullishOB;
|
|
// XZone bearishOB;
|
|
// XPOIState state = _15MState;
|
|
// int obsCount = ArraySize(state.bullishOrderBlocks);
|
|
// // for (int i = 0; i < obsCount; i++)
|
|
// {
|
|
// //
|
|
// XZone iZone = state.bullishOrderBlocks[i];
|
|
// bool canRefine = CanRefineZone(
|
|
// iZone,
|
|
// bullishOB,
|
|
// cBar //
|
|
// );
|
|
|
|
// //
|
|
// if (canRefine &&
|
|
// isVWapBullish)
|
|
// {
|
|
// //
|
|
// iZone.to = cTime;
|
|
// XCBullishOrderBlockObject *iObj;
|
|
// bool isCreated = mPOIDrawer.CreateBullishOrderBlock(
|
|
// iZone,
|
|
// iObj //
|
|
// );
|
|
// if (isCreated)
|
|
// {
|
|
// mDrawnObjects.Add(iObj);
|
|
// }
|
|
// }
|
|
// }
|
|
// obsCount = ArraySize(state.bearishOrderBlocks);
|
|
// for (int i = 0; i < obsCount; i++)
|
|
// {
|
|
// //
|
|
// XZone iZone = state.bearishOrderBlocks[i];
|
|
// bool canRefine = CanRefineZone(
|
|
// iZone,
|
|
// bearishOB,
|
|
// cBar //
|
|
// );
|
|
|
|
// //
|
|
// if (canRefine &&
|
|
// isVWapBearish)
|
|
// {
|
|
// //
|
|
// iZone.to = cTime;
|
|
// XCBearishOrderBlockObject *iObj;
|
|
// bool isCreated = mPOIDrawer.CreateBearishOrderBlock(
|
|
// iZone,
|
|
// iObj //
|
|
// );
|
|
// if (isCreated)
|
|
// {
|
|
// mDrawnObjects.Add(iObj);
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// int m15Count = ArraySize(_15MState.resistanceZones);
|
|
|
|
//
|
|
// Detect Resistance ....
|
|
// if (!mConditions.resistance.IsValid())
|
|
// {
|
|
// //
|
|
// // XZone h4Resistance;
|
|
// // XZone m15Resistance;
|
|
// // XZone m5Resistance;
|
|
|
|
// // //
|
|
// // int h4Count = ArraySize(_4HState.resistanceZones);
|
|
// // int m15Count = ArraySize(_15MState.resistanceZones);
|
|
// // int m5Count = ArraySize(_5MState.resistanceZones);
|
|
|
|
// // //
|
|
// // for (int i = 0; i < h4Count; i++)
|
|
// // {
|
|
// // //
|
|
// // XOHCL iBar = _4HState.resistanceZones[i];
|
|
// // }
|
|
// }
|