This commit is contained in:
2024-11-21 17:48:22 +03:30
parent 70a373802d
commit 09fd3627c6
6 changed files with 1755 additions and 841 deletions
@@ -368,78 +368,22 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
// Update POIs ...
//
ENUM_XPOI_EVENTS _1DStates[];
m1DPOI.Update(_1DStates);
// Trigger ...
ENUM_XPOI_EVENTS triggerPOIEvents[];
mTriggerPOIDetector.Update(triggerPOIEvents);
mTriggerPOIDetector.GetState(mTriggerPOIState);
//
ENUM_XPOI_EVENTS _4HStates[];
m4HPOI.Update(_4HStates);
// Analyse ...
ENUM_XPOI_EVENTS analysePOIEvents[];
mAnalysePOIDetector.Update(analysePOIEvents);
mAnalysePOIDetector.GetState(mAnalysePOIState);
//
ENUM_XPOI_EVENTS _2HStates[];
m2HPOI.Update(_2HStates);
//
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 //
);
// Trigger ...
ENUM_XPOI_EVENTS visionPOIEvents[];
mVisionPOIDetector.Update(visionPOIEvents);
mVisionPOIDetector.GetState(mVisionPOIState);
//
// Check Current Processing Tick has Signal or not ...
@@ -530,23 +474,14 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
//
// Point Of Interests ...
XCPOIDetector *m1DPOI;
XCPOIDetector *m4HPOI;
XCPOIDetector *m2HPOI;
XCPOIDetector *m1HPOI;
XCPOIDetector *m15MPOI;
XCPOIDetector *m5MPOI;
XCPOIDetector *m1MPOI;
XCPOIDetector *mTriggerPOIDetector;
XCPOIDetector *mAnalysePOIDetector;
XCPOIDetector *mVisionPOIDetector;
//
XPOIState _1DState;
XPOIState _4HState;
XPOIState _2HState;
XPOIState _1HState;
XPOIState _15MState;
XPOIState _5MState;
XPOIState _1MState;
XPOIState _CombineState;
XPOIState mTriggerPOIState;
XPOIState mAnalysePOIState;
XPOIState mVisionPOIState;
//
XCPOIDrawer *mPOIDrawer; // POI Drawer Class ...
@@ -1586,102 +1521,33 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
int poiRequired = 10;
//
// 1D Period ...
// POI Detector ...
m1DPOI = new XCPOIDetector(
// Trigger ...
mTriggerPOIDetector = new XCPOIDetector(
symbol,
PERIOD_D1 //
period //
);
mTriggerPOIDetector.MaxNumberOfRequiredPOIs(poiRequired);
mTriggerPOIDetector.Init();
//
m1DPOI.MaxNumberOfRequiredPOIs(poiRequired);
//
m1DPOI.Init();
//
// 4H Period ...
// POI Detector ...
m4HPOI = new XCPOIDetector(
// Analyse ...
ENUM_TIMEFRAMES analysePeriod = GetAnalysePeriod(period);
mAnalysePOIDetector = new XCPOIDetector(
symbol,
PERIOD_H4 //
analysePeriod //
);
mAnalysePOIDetector.MaxNumberOfRequiredPOIs(poiRequired);
mAnalysePOIDetector.Init();
//
m4HPOI.MaxNumberOfRequiredPOIs(poiRequired);
//
m4HPOI.Init();
//
// 2H Period ...
// POI Detector ...
m2HPOI = new XCPOIDetector(
// Vision ...
ENUM_TIMEFRAMES visionPeriod = GetVisionPeriod(period);
mVisionPOIDetector = new XCPOIDetector(
symbol,
PERIOD_H2 //
visionPeriod //
);
//
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();
mVisionPOIDetector.MaxNumberOfRequiredPOIs(poiRequired);
mVisionPOIDetector.Init();
//
}
@@ -1692,11 +1558,9 @@ class XCX121SMCBaseStrategy : public XCBaseAlert
void DeInit()
{
//
delete m1DPOI;
delete m4HPOI;
delete m5MPOI;
delete m1MPOI;
delete m15MPOI;
delete mTriggerPOIDetector;
delete mAnalysePOIDetector;
delete mVisionPOIDetector;
//
delete mPOIDrawer;
+149
View File
@@ -619,6 +619,155 @@ typedef void (*TOnX121SMCSignal)(
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 ...
File diff suppressed because it is too large Load Diff