last ...
This commit is contained in:
@@ -0,0 +1,433 @@
|
||||
|
||||
/**
|
||||
* Draw Conditions ...
|
||||
*
|
||||
* @param conditions: X121SMCStrategyConditions instance ...
|
||||
*/
|
||||
void DrawConditions(X121SMCStrategyConditions &conditions)
|
||||
{
|
||||
//
|
||||
XC121SMCConditionsObject *iObj;
|
||||
iObj = new XC121SMCConditionsObject(mPOIDrawer);
|
||||
bool isCreated = iObj.CreateByConditions(
|
||||
ChartIdentification(),
|
||||
conditions.GetTag(true),
|
||||
SubWindowIdentification(),
|
||||
conditions //
|
||||
);
|
||||
if (isCreated)
|
||||
{
|
||||
mDrawnObjects.Add(iObj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw Market Structure ...
|
||||
*
|
||||
* @param structure: X121SMCMarketStructure instance ...
|
||||
*/
|
||||
void DrawMarketStructure(X121SMCMarketStructure &structure)
|
||||
{
|
||||
//
|
||||
XC121SMCMarketStructureObject *iObj;
|
||||
iObj = new XC121SMCMarketStructureObject(mPOIDrawer);
|
||||
bool isCreated = iObj.CreateByStructure(
|
||||
ChartIdentification(),
|
||||
structure.GetTag(),
|
||||
SubWindowIdentification(),
|
||||
structure //
|
||||
);
|
||||
if (isCreated)
|
||||
{
|
||||
mDrawnObjects.Add(iObj);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Detect Valid Market Conditions ...
|
||||
*
|
||||
* @param conditions: X121SMCStrategyConditions instance ...
|
||||
*
|
||||
* @return ( virtual bool )
|
||||
*/
|
||||
virtual bool DetecConditions(X121SMCStrategyConditions &conditions)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
conditions.Clean();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect Market Structure based on Conditions ...
|
||||
*
|
||||
* @param structure: X121SMCMarketStructure instance ...
|
||||
* @param conditions: X121SMCStrategyConditions instance ...
|
||||
*/
|
||||
virtual void DetectMarketStructure(
|
||||
X121SMCMarketStructure &structure,
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove Specific Conditions if Exists ...
|
||||
*
|
||||
* @param conditions: X121SMCStrategyConditions instance ...
|
||||
*/
|
||||
virtual void RemoveConditionsIfExists(X121SMCStrategyConditions &conditions)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Search Conditions for Find SL Candidates ...
|
||||
*
|
||||
* @param candidates: Double Array ...
|
||||
* @param entry: Double ...
|
||||
* @param structure: X121SMCStrategyConditions instance ...
|
||||
* @param type: ENUM_X_POSITION_TYPES member ...
|
||||
*
|
||||
* @return ( virtual int )
|
||||
*/
|
||||
virtual int DetectSLCandidates(
|
||||
double &candidates[],
|
||||
double entry,
|
||||
X121SMCStrategyConditions &conditions,
|
||||
ENUM_X_POSITION_TYPES type //
|
||||
)
|
||||
{
|
||||
//
|
||||
int result = 0;
|
||||
|
||||
//
|
||||
if (type == X_POSITION_TYPE_NONE ||
|
||||
type == X_POSITION_TYPE_ALL)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool useSwings = true;
|
||||
bool useMomentumBars = true;
|
||||
bool useRejectionBars = true;
|
||||
|
||||
//
|
||||
Clean(candidates);
|
||||
|
||||
//
|
||||
XOHCL candidateBars[];
|
||||
if (type == X_POSITION_TYPE_LONG)
|
||||
{
|
||||
//
|
||||
// Search Bullish Momentum, Rejection Bars and Swing Lows ...
|
||||
|
||||
//
|
||||
// Swing Lows ...
|
||||
if (useSwings)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
conditions.swingLows,
|
||||
candidateBars,
|
||||
false //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Bullish Momentum Bars ...
|
||||
if (useMomentumBars)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
conditions.bullishMomentumBars,
|
||||
candidateBars,
|
||||
false //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Bullish Rejection Bars ...
|
||||
if (useRejectionBars)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
conditions.bullishRejectionBars,
|
||||
candidateBars,
|
||||
false //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
int count = ArraySize(candidateBars);
|
||||
if (IsValidSize(count))
|
||||
{
|
||||
//
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
XOHCL iBar = candidateBars[i];
|
||||
|
||||
//
|
||||
if (iBar.low < entry)
|
||||
{
|
||||
//
|
||||
Add(
|
||||
iBar.low,
|
||||
candidates //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type == X_POSITION_TYPE_SHORT)
|
||||
{
|
||||
//
|
||||
// Search Bearish Momentum, Rejection Bars and Swing Highs ...
|
||||
|
||||
//
|
||||
// Swing Highs ...
|
||||
if (useSwings)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
conditions.swingHighs,
|
||||
candidateBars,
|
||||
false //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Bearish Momentum Bars ...
|
||||
if (useMomentumBars)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
conditions.bearishMomentumBars,
|
||||
candidateBars,
|
||||
false //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Bearish Rejection Bars ...
|
||||
if (useRejectionBars)
|
||||
{
|
||||
//
|
||||
Copy(
|
||||
conditions.bearishRejectionBars,
|
||||
candidateBars,
|
||||
false //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
int count = ArraySize(candidateBars);
|
||||
if (IsValidSize(count))
|
||||
{
|
||||
//
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
XOHCL iBar = candidateBars[i];
|
||||
|
||||
//
|
||||
if (iBar.high > entry)
|
||||
{
|
||||
//
|
||||
Add(
|
||||
iBar.low,
|
||||
candidates //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Clean(candidateBars);
|
||||
result = ArraySize(candidates);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
XZone h4Supply;
|
||||
XZone m15Supply;
|
||||
XZone m5Supply;
|
||||
|
||||
//
|
||||
int h4Count = ArraySize(_15MState.supplyZones);
|
||||
int m15Count = ArraySize(_5MState.supplyZones);
|
||||
int m5Count = ArraySize(_1MState.supplyZones);
|
||||
|
||||
//
|
||||
bool has4HSupplyZone = false;
|
||||
bool has15mSupplyZone = false;
|
||||
bool has5mSupplyZone = false;
|
||||
|
||||
//
|
||||
// for (int i = 0; i < h4Count; i++)
|
||||
// {
|
||||
// //
|
||||
// XZone iZone = _15MState.supplyZones[i];
|
||||
|
||||
// //
|
||||
// bool canRefineI = CanRefineZone(
|
||||
// iZone,
|
||||
// h4Supply,
|
||||
// cBar //
|
||||
// );
|
||||
// if (canRefineI)
|
||||
// {
|
||||
// //
|
||||
// h4Supply = iZone;
|
||||
|
||||
// //
|
||||
// for (int j = 0; j < m15Count; j++)
|
||||
// {
|
||||
// //
|
||||
// XZone jZone = _5MState.supplyZones[j];
|
||||
|
||||
// //
|
||||
// bool canRefineJ = CanRefineZone(
|
||||
// iZone,
|
||||
// m15Supply,
|
||||
// cBar //
|
||||
// );
|
||||
// if (canRefineJ)
|
||||
// {
|
||||
// //
|
||||
// m15Supply = jZone;
|
||||
|
||||
// //
|
||||
// for (int k = 0; k < m5Count; k++)
|
||||
// {
|
||||
// //
|
||||
// XZone kZone = _1MState.supplyZones[k];
|
||||
|
||||
// //
|
||||
// bool canRefineK = CanRefineZone(
|
||||
// kZone,
|
||||
// m5Supply,
|
||||
// cBar //
|
||||
// );
|
||||
// if (canRefineK)
|
||||
// {
|
||||
// //
|
||||
// m5Supply = kZone;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
for (int i = 0; i < m15Count; i++)
|
||||
{
|
||||
//
|
||||
XZone iZone = _5MState.supplyZones[i];
|
||||
|
||||
//
|
||||
bool canRefineI = CanRefineZone(
|
||||
iZone,
|
||||
m15Supply,
|
||||
cBar //
|
||||
);
|
||||
if (canRefineI)
|
||||
{
|
||||
//
|
||||
m15Supply = iZone;
|
||||
|
||||
//
|
||||
for (int j = 0; j < m5Count; j++)
|
||||
{
|
||||
//
|
||||
XZone jZone = _1MState.supplyZones[j];
|
||||
|
||||
//
|
||||
bool canRefineJ = CanRefineZone(
|
||||
iZone,
|
||||
m5Supply,
|
||||
cBar //
|
||||
);
|
||||
if (canRefineJ)
|
||||
{
|
||||
m5Supply = jZone;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// has4HSupplyZone = h4Supply.IsValid();
|
||||
has15mSupplyZone = m15Supply.IsValid();
|
||||
has5mSupplyZone = m5Supply.IsValid();
|
||||
|
||||
//
|
||||
bool hasSupply =
|
||||
// has4HSupplyZone &&
|
||||
has15mSupplyZone &&
|
||||
has5mSupplyZone;
|
||||
|
||||
//
|
||||
if (hasSupply)
|
||||
{
|
||||
//
|
||||
m15Supply.to = cTime;
|
||||
m5Supply.to = cTime;
|
||||
|
||||
//
|
||||
mConditions.supplyZone = m5Supply;
|
||||
|
||||
//
|
||||
XCSupplyZoneObject *i5Obj;
|
||||
bool isCreated = mPOIDrawer.CreateSupplyZone(
|
||||
m5Supply,
|
||||
i5Obj //
|
||||
);
|
||||
|
||||
//
|
||||
XCSupplyZoneObject *i15Obj;
|
||||
isCreated = mPOIDrawer.CreateSupplyZone(
|
||||
m15Supply,
|
||||
i15Obj //
|
||||
);
|
||||
|
||||
// //
|
||||
// XCSupplyZoneObject *i4Obj;
|
||||
// isCreated = mPOIDrawer.CreateSupplyZone(
|
||||
// h4Supply,
|
||||
// i4Obj //
|
||||
// );
|
||||
|
||||
//
|
||||
Print("Supply Detected ...");
|
||||
}
|
||||
Reference in New Issue
Block a user