#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; } ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////