last works ...
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
//
|
||||
// Draw Last Sar Change ...
|
||||
string iVLineName = sarChangeBar.GetTag("XSAR");
|
||||
CChartObjectVLine *iVLineObj;
|
||||
iVLineObj = new CChartObjectVLine();
|
||||
result = iVLineObj.Create(
|
||||
ChartID(),
|
||||
iVLineName,
|
||||
0,
|
||||
sarChangeBar.time //
|
||||
);
|
||||
if (result)
|
||||
{
|
||||
iVLineObj.Color(clrYellow);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Draw Last Decision Bar ...
|
||||
string iVLineNameDecision = decisionBar.GetTag("XDECISION");
|
||||
CChartObjectVLine *iVLineDecisionObj;
|
||||
iVLineDecisionObj = new CChartObjectVLine();
|
||||
result = iVLineDecisionObj.Create(
|
||||
ChartID(),
|
||||
iVLineNameDecision,
|
||||
0,
|
||||
decisionBar.time //
|
||||
);
|
||||
if (result)
|
||||
{
|
||||
iVLineDecisionObj.Color(clrYellow);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Draw Breaker Bar ...
|
||||
string iVLineNameBreaker = breakerBar.GetTag("XBREAKER");
|
||||
CChartObjectVLine *iVLineBreakerObj;
|
||||
iVLineBreakerObj = new CChartObjectVLine();
|
||||
result = iVLineBreakerObj.Create(
|
||||
ChartID(),
|
||||
iVLineNameBreaker,
|
||||
0,
|
||||
breakerBar.time //
|
||||
);
|
||||
if (result)
|
||||
{
|
||||
iVLineBreakerObj.Color(clrMagenta);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// TODO: Remove This ...
|
||||
bool ignoreSwingHighs = true;
|
||||
bool ignoreSwingLows = true;
|
||||
bool ignoreSupportZones = true;
|
||||
bool ignoreResistanceZones = true;
|
||||
bool ignoreSupplyZones = true;
|
||||
bool ignoreDemandZones = true;
|
||||
bool ignoreBullishOrderBlocks = true;
|
||||
bool ignoreBearishOrderBlocks = true;
|
||||
bool ignoreBullishFairValueGaps = true;
|
||||
bool ignoreBearishFairValueGaps = true;
|
||||
bool ignoreBullishRejectionBars = true;
|
||||
bool ignoreBearishRejectionBars = true;
|
||||
bool ignoreBullishMomentumBars = true;
|
||||
bool ignoreBearishMomentumBars = true;
|
||||
|
||||
//
|
||||
if (IsBullish(marketStructureDir))
|
||||
{
|
||||
//
|
||||
ignoreSwingLows = true;
|
||||
ignoreSupportZones = true;
|
||||
ignoreDemandZones = true;
|
||||
ignoreBullishOrderBlocks = true;
|
||||
ignoreBullishFairValueGaps = false;
|
||||
ignoreBullishRejectionBars = false;
|
||||
ignoreBullishMomentumBars = false;
|
||||
|
||||
//
|
||||
ignoreSwingHighs = true;
|
||||
ignoreResistanceZones = true;
|
||||
ignoreSupplyZones = true;
|
||||
ignoreBearishOrderBlocks = true;
|
||||
ignoreBearishFairValueGaps = true;
|
||||
ignoreBearishRejectionBars = true;
|
||||
ignoreBearishMomentumBars = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
ignoreSwingLows = true;
|
||||
ignoreSupportZones = true;
|
||||
ignoreDemandZones = true;
|
||||
ignoreBullishOrderBlocks = true;
|
||||
ignoreBullishFairValueGaps = true;
|
||||
ignoreBullishRejectionBars = true;
|
||||
ignoreBullishMomentumBars = true;
|
||||
|
||||
//
|
||||
ignoreSwingHighs = true;
|
||||
ignoreResistanceZones = true;
|
||||
ignoreSupplyZones = true;
|
||||
ignoreBearishOrderBlocks = true;
|
||||
ignoreBearishFairValueGaps = false;
|
||||
ignoreBearishRejectionBars = false;
|
||||
ignoreBearishMomentumBars = false;
|
||||
}
|
||||
|
||||
//
|
||||
RedrawOrderFlow(
|
||||
true, // Force Clean ...
|
||||
false, // Same Period ...
|
||||
true, // Order Flow ...
|
||||
true, // Order Flow State ...
|
||||
false, // Only Last Order Flow ...
|
||||
true, // Only Last Order Flow State ...
|
||||
//
|
||||
marketStructureDir, // Direction Force ...
|
||||
ignoreSwingHighs,
|
||||
ignoreSwingLows,
|
||||
ignoreSupportZones,
|
||||
ignoreResistanceZones,
|
||||
ignoreSupplyZones,
|
||||
ignoreDemandZones,
|
||||
ignoreBullishOrderBlocks,
|
||||
ignoreBearishOrderBlocks,
|
||||
ignoreBullishFairValueGaps,
|
||||
ignoreBearishFairValueGaps,
|
||||
ignoreBullishRejectionBars,
|
||||
ignoreBearishRejectionBars,
|
||||
ignoreBullishMomentumBars,
|
||||
ignoreBearishMomentumBars //
|
||||
);
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Validate an Order Block is Not Touched ...
|
||||
*
|
||||
* @param bar: XOHCL instance, start bar ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool ValidateOrderBlock(
|
||||
XCOrderBlock *ob,
|
||||
XOHCL &bar //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result =
|
||||
bar.IsValid() &&
|
||||
ob.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish = ob.IsBullish();
|
||||
|
||||
//
|
||||
XOHCL mBar;
|
||||
result = bar.BarIn(ob.GetPeriod(), mBar);
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int start = mBar.Index();
|
||||
int end = mBar.Index(ob.From());
|
||||
result = IsValidIndex(start) &&
|
||||
IsValidIndex(end);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
for (int i = start; i < end; i++)
|
||||
{
|
||||
//
|
||||
XOHCL iBar;
|
||||
result = mBar.BarAt(
|
||||
i,
|
||||
iBar //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
isBullish
|
||||
? iBar.low > ob.Upper()
|
||||
: iBar.high < ob.Lower();
|
||||
if (!result)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user