last ...
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -43,7 +43,7 @@ input ENUM_BASE_CORNER corner = CORNER_RIGHT_LOWER; // Text Position
|
|||||||
|
|
||||||
//
|
//
|
||||||
input group "Presentation";
|
input group "Presentation";
|
||||||
input bool showCandleTime = true; // Show Candle Time
|
input bool showTimer = true; // Show Candle Time
|
||||||
|
|
||||||
//
|
//
|
||||||
// END Inputs ...
|
// END Inputs ...
|
||||||
@@ -67,6 +67,7 @@ input bool showCandleTime = true; // Show Candle Time
|
|||||||
//
|
//
|
||||||
// START Global Definitions: Variables, Properties and etc ...
|
// START Global Definitions: Variables, Properties and etc ...
|
||||||
//
|
//
|
||||||
|
bool isCreatedObject;
|
||||||
string tag;
|
string tag;
|
||||||
//
|
//
|
||||||
// END Global Definitions: Variables, Properties and etc ...
|
// END Global Definitions: Variables, Properties and etc ...
|
||||||
@@ -86,16 +87,6 @@ int OnInit()
|
|||||||
//
|
//
|
||||||
tag = ShortName + _Symbol + ToString(_Period);
|
tag = ShortName + _Symbol + ToString(_Period);
|
||||||
|
|
||||||
//
|
|
||||||
if (showCandleTime)
|
|
||||||
{
|
|
||||||
CreateIndicatorObject();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ObjectDelete(0, tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set Indicator ShortName ...
|
// Set Indicator ShortName ...
|
||||||
SetIndicatorName();
|
SetIndicatorName();
|
||||||
@@ -145,21 +136,11 @@ int OnCalculate(
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
ArraySetAsSeries(time, true);
|
if (!showTimer)
|
||||||
|
|
||||||
//
|
|
||||||
if (!showCandleTime)
|
|
||||||
{
|
{
|
||||||
return rates_total;
|
return rates_total;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
ulong chID = FindChartID(
|
|
||||||
_Symbol,
|
|
||||||
_Period
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
XBarRemainsTime barRemains;
|
XBarRemainsTime barRemains;
|
||||||
barRemains.Init(
|
barRemains.Init(
|
||||||
@@ -191,20 +172,20 @@ int OnCalculate(
|
|||||||
else if (mSpread < 100)
|
else if (mSpread < 100)
|
||||||
_sp = ".";
|
_sp = ".";
|
||||||
|
|
||||||
//
|
|
||||||
// int offset = TimeGMTOffset();
|
|
||||||
// string timeString =
|
|
||||||
// ", Time: " + string(TimeCurrent()) + "\n" +
|
|
||||||
// ", ServerTime: " + string(TimeTradeServer()) + "\n" +
|
|
||||||
// ", GMT Offset: " + (string)offset;
|
|
||||||
// timeString = timeString;
|
|
||||||
// Comment(timeString);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
string objText = "Spread: " + IntegerToString(mSpread) + _sp + ", Next Bar in: " + msg;
|
string objText = "Spread: " + IntegerToString(mSpread) + _sp + ", Next Bar in: " + msg;
|
||||||
|
|
||||||
//
|
//
|
||||||
ObjectSetString(0, tag, OBJPROP_TEXT, objText);
|
if (IsValid(tag) && !isCreatedObject)
|
||||||
|
{
|
||||||
|
CreateIndicatorObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if (isCreatedObject)
|
||||||
|
{
|
||||||
|
ObjectSetString(0, tag, OBJPROP_TEXT, objText);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
return rates_total;
|
return rates_total;
|
||||||
@@ -229,16 +210,17 @@ void SetIndicatorName()
|
|||||||
void CreateIndicatorObject()
|
void CreateIndicatorObject()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
if (!showCandleTime)
|
if (!showTimer ||
|
||||||
|
!IsValid(tag))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
ObjectCreate(0, tag, OBJ_LABEL, 0, 0, 0);
|
isCreatedObject = ObjectCreate(0, tag, OBJ_LABEL, 0, 0, 0);
|
||||||
ObjectSetInteger(0, tag, OBJPROP_CORNER, corner);
|
ObjectSetInteger(0, tag, OBJPROP_CORNER, corner);
|
||||||
ObjectSetInteger(0, tag, OBJPROP_XDISTANCE, 10);
|
ObjectSetInteger(0, tag, OBJPROP_XDISTANCE, 10);
|
||||||
ObjectSetInteger(0, ShortName, OBJPROP_YDISTANCE, 2);
|
ObjectSetInteger(0, tag, OBJPROP_YDISTANCE, 2);
|
||||||
|
|
||||||
//
|
//
|
||||||
ENUM_ANCHOR_POINT Anchor = ANCHOR_LEFT_UPPER;
|
ENUM_ANCHOR_POINT Anchor = ANCHOR_LEFT_UPPER;
|
||||||
|
|||||||
@@ -2382,6 +2382,10 @@ class XCTickZone : public CObject
|
|||||||
int ticks;
|
int ticks;
|
||||||
double percent;
|
double percent;
|
||||||
|
|
||||||
|
//
|
||||||
|
ulong volume;
|
||||||
|
double volumePercent;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Compare Two Zone With Each Other ...
|
// Compare Two Zone With Each Other ...
|
||||||
virtual int Compare(
|
virtual int Compare(
|
||||||
@@ -2535,6 +2539,25 @@ class XCTicksZone : public XCTwoBarZone
|
|||||||
toM //
|
toM //
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Ticks Volumes ...
|
||||||
|
int ticksVolumeCount = CopyTickVolume(
|
||||||
|
symbol,
|
||||||
|
PERIOD_M1,
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
mTickVolumes //
|
||||||
|
);
|
||||||
|
if (IsValidSize(ticksVolumeCount))
|
||||||
|
{
|
||||||
|
//
|
||||||
|
mVolumes = 0;
|
||||||
|
for (int i = 0; i < ticksVolumeCount; i++)
|
||||||
|
{
|
||||||
|
mVolumes += mTickVolumes[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Retrieve Highs ...
|
// Retrieve Highs ...
|
||||||
SpecificClean(mHighs);
|
SpecificClean(mHighs);
|
||||||
@@ -2664,6 +2687,74 @@ class XCTicksZone : public XCTwoBarZone
|
|||||||
//
|
//
|
||||||
result = IsValid();
|
result = IsValid();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Try to Find Out PERIOD_1M times in each zone ...
|
||||||
|
datetime to1M = (datetime)((int)endBar.time + PeriodSeconds(period) - 60);
|
||||||
|
int to1MIndex = iBarShift(
|
||||||
|
symbol,
|
||||||
|
PERIOD_M1,
|
||||||
|
to1M //
|
||||||
|
);
|
||||||
|
int from1MIndex = iBarShift(
|
||||||
|
symbol,
|
||||||
|
PERIOD_M1,
|
||||||
|
from //
|
||||||
|
);
|
||||||
|
for (int i = from1MIndex; i > to1MIndex; i--)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XOHCL iBar;
|
||||||
|
bool isInited = iBar.Init(
|
||||||
|
symbol,
|
||||||
|
PERIOD_M1,
|
||||||
|
i //
|
||||||
|
);
|
||||||
|
if (!isInited)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ulong iVolume = iTickVolume(
|
||||||
|
symbol,
|
||||||
|
PERIOD_M1,
|
||||||
|
i //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Loop through Zones ...
|
||||||
|
for (int j = 0; j < Levels(); j++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XCTickZone *jZone = mZones.At(j);
|
||||||
|
if (!jZone.IsValid())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check iBar is Inside jZone ...
|
||||||
|
bool isIBarInside =
|
||||||
|
iBar.GetUp() < jZone.high &&
|
||||||
|
iBar.GetDown() > jZone.low;
|
||||||
|
// iBar.low < jZone.high ||
|
||||||
|
// iBar.high > jZone.low;
|
||||||
|
if (isIBarInside)
|
||||||
|
{
|
||||||
|
jZone.volume += iVolume;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Calculate Volume Percent ...
|
||||||
|
for (int i = 0; i < Levels(); i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XCTickZone *iZone = mZones.At(i);
|
||||||
|
|
||||||
|
//
|
||||||
|
iZone.volumePercent = (double)(iZone.volume * 100 / mVolumes);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -2787,6 +2878,8 @@ class XCTicksZone : public XCTwoBarZone
|
|||||||
MqlTick mTicks[];
|
MqlTick mTicks[];
|
||||||
double mHighs[];
|
double mHighs[];
|
||||||
double mLows[];
|
double mLows[];
|
||||||
|
ulong mVolumes;
|
||||||
|
ulong mTickVolumes[];
|
||||||
double mRangeHigh;
|
double mRangeHigh;
|
||||||
datetime mRangeHighTime;
|
datetime mRangeHighTime;
|
||||||
double mRangeLow;
|
double mRangeLow;
|
||||||
|
|||||||
@@ -368,78 +368,22 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
|
|||||||
// Update POIs ...
|
// Update POIs ...
|
||||||
|
|
||||||
//
|
//
|
||||||
ENUM_XPOI_EVENTS _1DStates[];
|
// Trigger ...
|
||||||
m1DPOI.Update(_1DStates);
|
ENUM_XPOI_EVENTS triggerPOIEvents[];
|
||||||
|
mTriggerPOIDetector.Update(triggerPOIEvents);
|
||||||
|
mTriggerPOIDetector.GetState(mTriggerPOIState);
|
||||||
|
|
||||||
//
|
//
|
||||||
ENUM_XPOI_EVENTS _4HStates[];
|
// Analyse ...
|
||||||
m4HPOI.Update(_4HStates);
|
ENUM_XPOI_EVENTS analysePOIEvents[];
|
||||||
|
mAnalysePOIDetector.Update(analysePOIEvents);
|
||||||
|
mAnalysePOIDetector.GetState(mAnalysePOIState);
|
||||||
|
|
||||||
//
|
//
|
||||||
ENUM_XPOI_EVENTS _2HStates[];
|
// Trigger ...
|
||||||
m2HPOI.Update(_2HStates);
|
ENUM_XPOI_EVENTS visionPOIEvents[];
|
||||||
|
mVisionPOIDetector.Update(visionPOIEvents);
|
||||||
//
|
mVisionPOIDetector.GetState(mVisionPOIState);
|
||||||
ENUM_XPOI_EVENTS _1HStates[];
|
|
||||||
m1HPOI.Update(_1HStates);
|
|
||||||
|
|
||||||
//
|
|
||||||
ENUM_XPOI_EVENTS _15MStates[];
|
|
||||||
m15MPOI.Update(_15MStates);
|
|
||||||
|
|
||||||
//
|
|
||||||
ENUM_XPOI_EVENTS _5MStates[];
|
|
||||||
m5MPOI.Update(_5MStates);
|
|
||||||
|
|
||||||
//
|
|
||||||
ENUM_XPOI_EVENTS _1MStates[];
|
|
||||||
m1MPOI.Update(_1MStates);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Read all POI States ...
|
|
||||||
m1DPOI.GetState(_1DState);
|
|
||||||
m4HPOI.GetState(_4HState);
|
|
||||||
m2HPOI.GetState(_2HState);
|
|
||||||
m1HPOI.GetState(_1HState);
|
|
||||||
m15MPOI.GetState(_15MState);
|
|
||||||
m5MPOI.GetState(_5MState);
|
|
||||||
m1MPOI.GetState(_1MState);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Combine States ...
|
|
||||||
XPOIState _States[];
|
|
||||||
AddRef(
|
|
||||||
_1DState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
AddRef(
|
|
||||||
_4HState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
AddRef(
|
|
||||||
_2HState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
AddRef(
|
|
||||||
_1HState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
AddRef(
|
|
||||||
_15MState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
AddRef(
|
|
||||||
_5MState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
AddRef(
|
|
||||||
_1MState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
CombineStates(
|
|
||||||
_CombineState,
|
|
||||||
_States //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check Current Processing Tick has Signal or not ...
|
// Check Current Processing Tick has Signal or not ...
|
||||||
@@ -530,23 +474,14 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Point Of Interests ...
|
// Point Of Interests ...
|
||||||
XCPOIDetector *m1DPOI;
|
XCPOIDetector *mTriggerPOIDetector;
|
||||||
XCPOIDetector *m4HPOI;
|
XCPOIDetector *mAnalysePOIDetector;
|
||||||
XCPOIDetector *m2HPOI;
|
XCPOIDetector *mVisionPOIDetector;
|
||||||
XCPOIDetector *m1HPOI;
|
|
||||||
XCPOIDetector *m15MPOI;
|
|
||||||
XCPOIDetector *m5MPOI;
|
|
||||||
XCPOIDetector *m1MPOI;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
XPOIState _1DState;
|
XPOIState mTriggerPOIState;
|
||||||
XPOIState _4HState;
|
XPOIState mAnalysePOIState;
|
||||||
XPOIState _2HState;
|
XPOIState mVisionPOIState;
|
||||||
XPOIState _1HState;
|
|
||||||
XPOIState _15MState;
|
|
||||||
XPOIState _5MState;
|
|
||||||
XPOIState _1MState;
|
|
||||||
XPOIState _CombineState;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
XCPOIDrawer *mPOIDrawer; // POI Drawer Class ...
|
XCPOIDrawer *mPOIDrawer; // POI Drawer Class ...
|
||||||
@@ -1586,102 +1521,33 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
|
|||||||
int poiRequired = 10;
|
int poiRequired = 10;
|
||||||
|
|
||||||
//
|
//
|
||||||
// 1D Period ...
|
// Trigger ...
|
||||||
// POI Detector ...
|
mTriggerPOIDetector = new XCPOIDetector(
|
||||||
m1DPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
symbol,
|
||||||
PERIOD_D1 //
|
period //
|
||||||
);
|
);
|
||||||
|
mTriggerPOIDetector.MaxNumberOfRequiredPOIs(poiRequired);
|
||||||
|
mTriggerPOIDetector.Init();
|
||||||
|
|
||||||
//
|
//
|
||||||
m1DPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
// Analyse ...
|
||||||
|
ENUM_TIMEFRAMES analysePeriod = GetAnalysePeriod(period);
|
||||||
//
|
mAnalysePOIDetector = new XCPOIDetector(
|
||||||
m1DPOI.Init();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 4H Period ...
|
|
||||||
// POI Detector ...
|
|
||||||
m4HPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
symbol,
|
||||||
PERIOD_H4 //
|
analysePeriod //
|
||||||
);
|
);
|
||||||
|
mAnalysePOIDetector.MaxNumberOfRequiredPOIs(poiRequired);
|
||||||
|
mAnalysePOIDetector.Init();
|
||||||
|
|
||||||
//
|
//
|
||||||
m4HPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
// Vision ...
|
||||||
|
ENUM_TIMEFRAMES visionPeriod = GetVisionPeriod(period);
|
||||||
//
|
mVisionPOIDetector = new XCPOIDetector(
|
||||||
m4HPOI.Init();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 2H Period ...
|
|
||||||
// POI Detector ...
|
|
||||||
m2HPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
symbol,
|
||||||
PERIOD_H2 //
|
visionPeriod //
|
||||||
);
|
);
|
||||||
|
mVisionPOIDetector.MaxNumberOfRequiredPOIs(poiRequired);
|
||||||
//
|
mVisionPOIDetector.Init();
|
||||||
m2HPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
|
||||||
|
|
||||||
//
|
|
||||||
m2HPOI.Init();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1H Period ...
|
|
||||||
// POI Detector ...
|
|
||||||
m1HPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
|
||||||
PERIOD_H1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
m1HPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
|
||||||
|
|
||||||
//
|
|
||||||
m1HPOI.Init();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 15M Period ...
|
|
||||||
// POI Detector ...
|
|
||||||
m15MPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
|
||||||
PERIOD_M15 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
m15MPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
|
||||||
|
|
||||||
//
|
|
||||||
m15MPOI.Init();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 5M Period ...
|
|
||||||
// POI Detector ...
|
|
||||||
m5MPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
|
||||||
PERIOD_M5 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
m5MPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
|
||||||
|
|
||||||
//
|
|
||||||
m5MPOI.Init();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1M Period ...
|
|
||||||
// POI Detector ...
|
|
||||||
m1MPOI = new XCPOIDetector(
|
|
||||||
symbol,
|
|
||||||
PERIOD_M1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
m1MPOI.MaxNumberOfRequiredPOIs(poiRequired);
|
|
||||||
|
|
||||||
//
|
|
||||||
m1MPOI.Init();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
@@ -1692,11 +1558,9 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
|
|||||||
void DeInit()
|
void DeInit()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
delete m1DPOI;
|
delete mTriggerPOIDetector;
|
||||||
delete m4HPOI;
|
delete mAnalysePOIDetector;
|
||||||
delete m5MPOI;
|
delete mVisionPOIDetector;
|
||||||
delete m1MPOI;
|
|
||||||
delete m15MPOI;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
delete mPOIDrawer;
|
delete mPOIDrawer;
|
||||||
|
|||||||
@@ -619,6 +619,155 @@ typedef void (*TOnX121SMCSignal)(
|
|||||||
X121SMCStrategyConditions &conditions //
|
X121SMCStrategyConditions &conditions //
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Time Frames Tools ...
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate Analyse Period ...
|
||||||
|
*
|
||||||
|
* @param value: ENUM_TIMEFRAMES member, Specified Trigger Period ...
|
||||||
|
*
|
||||||
|
* @return ( ENUM_TIMEFRAMES )
|
||||||
|
*/
|
||||||
|
ENUM_TIMEFRAMES GetAnalysePeriod(ENUM_TIMEFRAMES value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ENUM_TIMEFRAMES result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
value = NormalizePeriod(value);
|
||||||
|
|
||||||
|
//
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
case PERIOD_M1:
|
||||||
|
case PERIOD_M2:
|
||||||
|
case PERIOD_M3:
|
||||||
|
case PERIOD_M4:
|
||||||
|
case PERIOD_M5:
|
||||||
|
case PERIOD_M6:
|
||||||
|
case PERIOD_M10:
|
||||||
|
case PERIOD_M12:
|
||||||
|
result = PERIOD_M15;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
case PERIOD_M15:
|
||||||
|
case PERIOD_M20:
|
||||||
|
result = PERIOD_M30;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
case PERIOD_H1:
|
||||||
|
case PERIOD_H2:
|
||||||
|
case PERIOD_H3:
|
||||||
|
result = PERIOD_H4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
case PERIOD_H4:
|
||||||
|
case PERIOD_H6:
|
||||||
|
case PERIOD_H8:
|
||||||
|
result = PERIOD_H12;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
default:
|
||||||
|
result = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
bool HasValidAnalysePeriod(
|
||||||
|
ENUM_TIMEFRAMES value,
|
||||||
|
ENUM_TIMEFRAMES &period //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
period = GetAnalysePeriod(value);
|
||||||
|
result = IsValid(period);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate Vision Period ...
|
||||||
|
*
|
||||||
|
* @param value: ENUM_TIMEFRAMES member, Specified Trigger Period ...
|
||||||
|
*
|
||||||
|
* @return ( ENUM_TIMEFRAMES )
|
||||||
|
*/
|
||||||
|
ENUM_TIMEFRAMES GetVisionPeriod(ENUM_TIMEFRAMES value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ENUM_TIMEFRAMES result = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
value = NormalizePeriod(value);
|
||||||
|
|
||||||
|
//
|
||||||
|
switch (value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
case PERIOD_M1:
|
||||||
|
case PERIOD_M2:
|
||||||
|
case PERIOD_M3:
|
||||||
|
case PERIOD_M4:
|
||||||
|
case PERIOD_M5:
|
||||||
|
case PERIOD_M6:
|
||||||
|
case PERIOD_M10:
|
||||||
|
case PERIOD_M12:
|
||||||
|
result = PERIOD_H1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
case PERIOD_M15:
|
||||||
|
case PERIOD_M20:
|
||||||
|
result = PERIOD_H2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
case PERIOD_H1:
|
||||||
|
case PERIOD_H2:
|
||||||
|
case PERIOD_H3:
|
||||||
|
result = PERIOD_H6;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
case PERIOD_H4:
|
||||||
|
case PERIOD_H6:
|
||||||
|
case PERIOD_H8:
|
||||||
|
result = PERIOD_D1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
//
|
||||||
|
default:
|
||||||
|
result = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
bool HasValidVisionPeriod(
|
||||||
|
ENUM_TIMEFRAMES value,
|
||||||
|
ENUM_TIMEFRAMES &period //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
period = GetVisionPeriod(value);
|
||||||
|
result = IsValid(period);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Extentions ...
|
// Extentions ...
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user