last works ...
This commit is contained in:
+1238
-1093
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||||
|
}
|
||||||
@@ -2148,3 +2148,116 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
bool canContinue = true;
|
||||||
|
while (canContinue)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XOHCL iBar;
|
||||||
|
bool isBarInited = iBar.Init(
|
||||||
|
mBar.symbol,
|
||||||
|
mBar.period,
|
||||||
|
barIndex //
|
||||||
|
);
|
||||||
|
if (!isBarInited)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (bullOB == NULL)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XCOrderBlock *ob;
|
||||||
|
bool isBullOB = cycleHelper
|
||||||
|
.mPOIDetector
|
||||||
|
.DetectBullishOrderBlock(
|
||||||
|
mBar,
|
||||||
|
ob //
|
||||||
|
);
|
||||||
|
if (isBullOB)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool isPricePassed = bar.low > ob.Upper();
|
||||||
|
if (isPricePassed)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
if (mBullOB == NULL)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
mBullOB = ob;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool isRefined = mBullOB.Upper() < ob.Upper();
|
||||||
|
if (isRefined)
|
||||||
|
{
|
||||||
|
mBullOB = ob;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (bearOB == NULL)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XCOrderBlock *ob;
|
||||||
|
bool isBearOB = cycleHelper
|
||||||
|
.mPOIDetector
|
||||||
|
.DetectBearishOrderBlock(
|
||||||
|
mBar,
|
||||||
|
ob //
|
||||||
|
);
|
||||||
|
if (isBearOB)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool isPricePassed = bar.high < ob.Lower();
|
||||||
|
if (isPricePassed)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
if (mBearOB == NULL)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
mBearOB = ob;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool isRefined = mBearOB.Lower() > ob.Lower();
|
||||||
|
if (isRefined)
|
||||||
|
{
|
||||||
|
mBearOB = ob;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
canContinue =
|
||||||
|
(bullOB == NULL && mBullOB == NULL) ||
|
||||||
|
(bearOB == NULL && mBearOB == NULL);
|
||||||
|
if (canContinue)
|
||||||
|
{
|
||||||
|
barIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (mBullOB != NULL)
|
||||||
|
{
|
||||||
|
bullOB = mBullOB;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (mBearOB != NULL)
|
||||||
|
{
|
||||||
|
bearOB = mBearOB;
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1345,6 +1345,74 @@ struct XOHCL
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool BarAt(
|
||||||
|
int index,
|
||||||
|
XOHCL &bar //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
bar.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
result = IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result = bar.Init(
|
||||||
|
symbol,
|
||||||
|
period,
|
||||||
|
index //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool BarIn(
|
||||||
|
ENUM_TIMEFRAMES _period,
|
||||||
|
XOHCL &bar //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
bar.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
result = IsValid() &&
|
||||||
|
IsSpecifiedValid(_period);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int index = Index(_period);
|
||||||
|
result = bar.Init(
|
||||||
|
symbol,
|
||||||
|
_period,
|
||||||
|
index //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Find Current Bar Index on Chart ...
|
// Find Current Bar Index on Chart ...
|
||||||
int Index()
|
int Index()
|
||||||
@@ -1370,6 +1438,58 @@ struct XOHCL
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int Index(datetime value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
int result = -1;
|
||||||
|
|
||||||
|
//
|
||||||
|
value = NormalizeTime(value);
|
||||||
|
|
||||||
|
//
|
||||||
|
result = IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result = iBarShift(
|
||||||
|
symbol,
|
||||||
|
period,
|
||||||
|
value //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int Index(ENUM_TIMEFRAMES value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
int result = -1;
|
||||||
|
|
||||||
|
//
|
||||||
|
result = IsValid() &&
|
||||||
|
IsSpecifiedValid(value);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result = iBarShift(
|
||||||
|
symbol,
|
||||||
|
value,
|
||||||
|
time //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
bool GetNextBar(XOHCL &bar)
|
bool GetNextBar(XOHCL &bar)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -683,6 +683,24 @@ class XCBarZone : public XCZone
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENUM_TIMEFRAMES GetPeriod() {
|
||||||
|
//
|
||||||
|
ENUM_TIMEFRAMES result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL bar;
|
||||||
|
bool isFilled = FillBar(bar);
|
||||||
|
if (!isFilled) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result = bar.period;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set From Date ...
|
* Set From Date ...
|
||||||
*
|
*
|
||||||
@@ -1003,6 +1021,24 @@ class XCTwoBarZone : public XCZone
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENUM_TIMEFRAMES GetPeriod() {
|
||||||
|
//
|
||||||
|
ENUM_TIMEFRAMES result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL bar;
|
||||||
|
bool isFilled = FillStartBar(bar);
|
||||||
|
if (!isFilled) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result = bar.period;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Overrides ...
|
// Overrides ...
|
||||||
|
|
||||||
@@ -1202,6 +1238,24 @@ class XCSwing : public XCBasePOI
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENUM_TIMEFRAMES GetPeriod() {
|
||||||
|
//
|
||||||
|
ENUM_TIMEFRAMES result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL bar;
|
||||||
|
bool isFilled = FillBar(bar);
|
||||||
|
if (!isFilled) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
result = bar.period;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Swing High or not ...
|
* Check Swing High or not ...
|
||||||
|
|||||||
@@ -1542,7 +1542,7 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
|
|||||||
// Initialize POIs ...
|
// Initialize POIs ...
|
||||||
|
|
||||||
//
|
//
|
||||||
int poiRequired = 10;
|
int poiRequired = 40;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Trigger ...
|
// Trigger ...
|
||||||
|
|||||||
@@ -53,6 +53,10 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
// XCHSAR ...
|
// XCHSAR ...
|
||||||
XCXCHSARHelper *mXCHSARHelper;
|
XCXCHSARHelper *mXCHSARHelper;
|
||||||
|
|
||||||
|
//
|
||||||
|
// POI Detector ...
|
||||||
|
XCPOIDetector *mPOIDetector;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor(s) ...
|
// Constructor(s) ...
|
||||||
XC121SMCCycleHelper()
|
XC121SMCCycleHelper()
|
||||||
@@ -192,6 +196,14 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
mPOIDetector = new XCPOIDetector(
|
||||||
|
symbol,
|
||||||
|
period //
|
||||||
|
);
|
||||||
|
mPOIDetector.MaxNumberOfRequiredPOIs(0);
|
||||||
|
mPOIDetector.Init();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize Bar Analyser Class Instance ...
|
// Initialize Bar Analyser Class Instance ...
|
||||||
mBarAnalyser = new XCBarAnalyser();
|
mBarAnalyser = new XCBarAnalyser();
|
||||||
@@ -204,6 +216,61 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Specified Bar ...
|
||||||
|
*
|
||||||
|
* @param source: XOHCL instance, Source Bar ...
|
||||||
|
* @param bar: XOHCL instance, Dest Bar ...
|
||||||
|
*
|
||||||
|
* @return ( bool )
|
||||||
|
*/
|
||||||
|
bool GetBar(
|
||||||
|
XOHCL &source,
|
||||||
|
XOHCL &bar //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
bar.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
string symbol = GetSymbol();
|
||||||
|
ENUM_TIMEFRAMES period = GetPeriod();
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
IsValid(symbol) &&
|
||||||
|
IsValid(period) &&
|
||||||
|
source.IsValid();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int index = iBarShift(
|
||||||
|
symbol,
|
||||||
|
period,
|
||||||
|
source.time //
|
||||||
|
);
|
||||||
|
result = bar.Init(
|
||||||
|
symbol,
|
||||||
|
period,
|
||||||
|
index //
|
||||||
|
);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bar.Clean();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve Cycle Conditions ...
|
* Retrieve Cycle Conditions ...
|
||||||
*
|
*
|
||||||
@@ -620,59 +687,4 @@ class XC121SMCCycleHelper : public XCBase
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Specified Bar ...
|
|
||||||
*
|
|
||||||
* @param source: XOHCL instance, Source Bar ...
|
|
||||||
* @param bar: XOHCL instance, Dest Bar ...
|
|
||||||
*
|
|
||||||
* @return ( bool )
|
|
||||||
*/
|
|
||||||
bool GetBar(
|
|
||||||
XOHCL &source,
|
|
||||||
XOHCL &bar //
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
bool result = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
bar.Clean();
|
|
||||||
|
|
||||||
//
|
|
||||||
string symbol = GetSymbol();
|
|
||||||
ENUM_TIMEFRAMES period = GetPeriod();
|
|
||||||
|
|
||||||
//
|
|
||||||
result =
|
|
||||||
IsValid(symbol) &&
|
|
||||||
IsValid(period) &&
|
|
||||||
source.IsValid();
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
int index = iBarShift(
|
|
||||||
symbol,
|
|
||||||
period,
|
|
||||||
source.time //
|
|
||||||
);
|
|
||||||
result = bar.Init(
|
|
||||||
symbol,
|
|
||||||
period,
|
|
||||||
index //
|
|
||||||
);
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
bar.Clean();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -748,6 +748,15 @@ struct X121SMCStrategyConditions
|
|||||||
X121SMCCycleConditions consolidationConditions;
|
X121SMCCycleConditions consolidationConditions;
|
||||||
X121SMCCycleConditions visionConditions;
|
X121SMCCycleConditions visionConditions;
|
||||||
|
|
||||||
|
//
|
||||||
|
double sl;
|
||||||
|
string provider;
|
||||||
|
XCOrderBlock *visionBullOB;
|
||||||
|
XCOrderBlock *visionBearOB;
|
||||||
|
XCOrderBlock *consolidationBullOB;
|
||||||
|
XCOrderBlock *consolidationBearOB;
|
||||||
|
ENUM_X_DIRECTION marketStructureDir;
|
||||||
|
|
||||||
//
|
//
|
||||||
void X121SMCStrategyConditions()
|
void X121SMCStrategyConditions()
|
||||||
{
|
{
|
||||||
@@ -767,6 +776,15 @@ struct X121SMCStrategyConditions
|
|||||||
period = NULL;
|
period = NULL;
|
||||||
time = NULL;
|
time = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
sl = 0;
|
||||||
|
provider = NULL;
|
||||||
|
visionBullOB = NULL;
|
||||||
|
visionBearOB = NULL;
|
||||||
|
consolidationBullOB = NULL;
|
||||||
|
consolidationBearOB = NULL;
|
||||||
|
marketStructureDir = X_DIRECTION_NONE;
|
||||||
|
|
||||||
//
|
//
|
||||||
triggerConditions.Clean();
|
triggerConditions.Clean();
|
||||||
decisionConditions.Clean();
|
decisionConditions.Clean();
|
||||||
@@ -795,6 +813,14 @@ struct X121SMCStrategyConditions
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check Conditions has Ddirection or not ...
|
||||||
|
*
|
||||||
|
* @param dir: ENUM_X_DIRECTIOn member ...
|
||||||
|
* @param bar: XOHCL instance ...
|
||||||
|
*
|
||||||
|
* @return ( bool )
|
||||||
|
*/
|
||||||
bool HasDirection(
|
bool HasDirection(
|
||||||
ENUM_X_DIRECTION &dir,
|
ENUM_X_DIRECTION &dir,
|
||||||
XOHCL &bar //
|
XOHCL &bar //
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user