last ...
This commit is contained in:
@@ -0,0 +1,288 @@
|
||||
#include "../Signals/x-121.smc.xobs.signal.lib.mq5"
|
||||
|
||||
bool useXOBSSignal;
|
||||
useXOBSSignal = false;
|
||||
|
||||
bool hasXOBSSignal = false;
|
||||
|
||||
//
|
||||
// XOBS Signal ...
|
||||
if (useXOBSSignal && !hasSignal)
|
||||
{
|
||||
//
|
||||
hasXOBSSignal = DetectXOBSSignal(conditions);
|
||||
hasSignal = hasXOBSSignal;
|
||||
}
|
||||
|
||||
Clean(mX121SMCXOBSConditionsCollection);
|
||||
|
||||
//
|
||||
// XOBS Guard Detection ...
|
||||
if (useXOBSSignal)
|
||||
{
|
||||
// //
|
||||
// bool hasGuard = DetectX121SMCXOBSGuards(
|
||||
// guards,
|
||||
// positions,
|
||||
// mTriggerCycleHelper,
|
||||
// mDecisionCycleHelper,
|
||||
// mAnalyseCycleHelper,
|
||||
// mVerificationCycleHelper,
|
||||
// mConsolidationCycleHelper,
|
||||
// mVisionCycleHelper //
|
||||
// );
|
||||
}
|
||||
|
||||
//
|
||||
// XOBS Signal ...
|
||||
bool DetectXOBSSignal(
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
bool isBullish = false;
|
||||
bool isBearish = false;
|
||||
|
||||
//
|
||||
int zIndex = 0;
|
||||
int cIndex = zIndex + 1;
|
||||
int pIndex = cIndex + 1;
|
||||
int ppIndex = pIndex + 1;
|
||||
|
||||
//
|
||||
string symbol = GetSymbol();
|
||||
ENUM_TIMEFRAMES period = GetPeriod();
|
||||
|
||||
//
|
||||
XOHCL zBar;
|
||||
result = zBar.Init(
|
||||
symbol,
|
||||
period,
|
||||
zIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
XOHCL cBar;
|
||||
result = cBar.Init(
|
||||
symbol,
|
||||
period,
|
||||
cIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
result = pBar.Init(
|
||||
symbol,
|
||||
period,
|
||||
pIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
double cLL = cBar.FindLowest(7, MODE_LOW);
|
||||
double cHH = cBar.FindHighest(7, MODE_HIGH);
|
||||
|
||||
//
|
||||
datetime cTime = TimeCurrent();
|
||||
|
||||
//
|
||||
ENUM_X_121_SMC_PROVIDERS provider = X_121_SMC_PROVIDER_XOBS;
|
||||
string providerStr = ToString(provider);
|
||||
|
||||
//
|
||||
// Detect Setup Conditions ...
|
||||
datetime setupTime = mX121SMCXOBSConditions.setupTime;
|
||||
bool isSetuped = mX121SMCXOBSConditions.IsSetuped();
|
||||
ENUM_X_DIRECTION setupDir = mX121SMCXOBSConditions.dir;
|
||||
if (!isSetuped)
|
||||
{
|
||||
//
|
||||
// Detect Signal Setup ...
|
||||
// isSetuped = DetectX121SMCXOBSSignalSetup(
|
||||
// symbol,
|
||||
// period,
|
||||
// mX121SMCXOBSConditions,
|
||||
// mTriggerCycleHelper,
|
||||
// mDecisionCycleHelper,
|
||||
// mAnalyseCycleHelper,
|
||||
// mVerificationCycleHelper,
|
||||
// mConsolidationCycleHelper,
|
||||
// mVisionCycleHelper //
|
||||
// );
|
||||
|
||||
//
|
||||
setupDir = mX121SMCXOBSConditions.dir;
|
||||
setupTime = mX121SMCXOBSConditions.setupTime;
|
||||
|
||||
//
|
||||
if (isSetuped)
|
||||
{
|
||||
//
|
||||
int items = AddX121SMCXOBSConditionsIfNotExists(
|
||||
mX121SMCXOBSConditions,
|
||||
mX121SMCXOBSConditionsCollection //
|
||||
);
|
||||
|
||||
//
|
||||
mX121SMCXOBSConditions.Clean();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
int conditionsCount = ArraySize(mX121SMCXOBSConditionsCollection);
|
||||
result = IsValidSize(conditionsCount);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Looking For Conditions ...
|
||||
int selectedIndex = 0;
|
||||
X121SMCStrategyXOBSSignalConditions mTmpConditions[];
|
||||
Copy(
|
||||
mX121SMCXOBSConditionsCollection,
|
||||
mTmpConditions //
|
||||
);
|
||||
X121SMCStrategyXOBSSignalConditions mConditions;
|
||||
for (int i = 0; i < conditionsCount; i++)
|
||||
{
|
||||
//
|
||||
// Check Triggers ...
|
||||
bool canTrigger = mTmpConditions[i].CanTrigger();
|
||||
datetime triggerTime = mTmpConditions[i].triggerTime;
|
||||
if (!canTrigger)
|
||||
{
|
||||
//
|
||||
// Detect Signal Trigger ...
|
||||
// canTrigger = DetectX121SMCXOBSSignalTrigger(
|
||||
// mTmpConditions[i],
|
||||
// symbol,
|
||||
// period,
|
||||
// mTriggerCycleHelper,
|
||||
// mDecisionCycleHelper,
|
||||
// mAnalyseCycleHelper,
|
||||
// mVerificationCycleHelper,
|
||||
// mConsolidationCycleHelper,
|
||||
// mVisionCycleHelper //
|
||||
// );
|
||||
|
||||
//
|
||||
result = canTrigger;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
bool isISetuped = mTmpConditions[i].IsSetuped();
|
||||
if (!isISetuped)
|
||||
{
|
||||
//
|
||||
ArrayRemove(
|
||||
mX121SMCXOBSConditionsCollection,
|
||||
i,
|
||||
1 //
|
||||
);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
triggerTime = mTmpConditions[i].triggerTime;
|
||||
}
|
||||
|
||||
//
|
||||
if (canTrigger)
|
||||
{
|
||||
//
|
||||
selectedIndex = i;
|
||||
mConditions = mTmpConditions[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
result = IsValid(mConditions.setupTime) &&
|
||||
HasDirection(mConditions.dir);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Remove Selected Index from Main Collection ...
|
||||
ArrayRemove(
|
||||
mX121SMCXOBSConditionsCollection,
|
||||
selectedIndex,
|
||||
1 //
|
||||
);
|
||||
|
||||
//
|
||||
// Check Signal Direction ...
|
||||
isBullish = IsBullish(mConditions.dir);
|
||||
isBearish = IsBearish(mConditions.dir);
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Issues Signal on Conditions ...
|
||||
conditions.sl = mConditions.sl;
|
||||
conditions.provider = providerStr;
|
||||
conditions.signalDir = mConditions.dir;
|
||||
conditions.target = mConditions.target;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
X_121_SMC_PROVIDER_XOBS,
|
||||
|
||||
|
||||
//
|
||||
case X_121_SMC_PROVIDER_XOBS:
|
||||
result = X121SMCXOBSToken;
|
||||
break;
|
||||
|
||||
else if (Contains(X121SMCXOBSToken, value))
|
||||
{
|
||||
result = X_121_SMC_PROVIDER_XOBS;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user