Files
xMQL5/BKPS/14030823/BKPs/1.mq5
T
2024-11-15 10:50:11 +03:30

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];
// // }
// }