From f7220e8886e8cf29f4a29c8379b7948d52424386 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Tue, 23 Apr 2024 19:21:28 +0330 Subject: [PATCH] last ... --- .../BKPS/Templates/x121.old.signallers.mq5 | 260 ++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 MQLTestWorkspace/BKPS/Templates/x121.old.signallers.mq5 diff --git a/MQLTestWorkspace/BKPS/Templates/x121.old.signallers.mq5 b/MQLTestWorkspace/BKPS/Templates/x121.old.signallers.mq5 new file mode 100644 index 0000000..4480a4e --- /dev/null +++ b/MQLTestWorkspace/BKPS/Templates/x121.old.signallers.mq5 @@ -0,0 +1,260 @@ + + // + // Here we are Capture Conditions and Check Signals ... + // The Signals Must be Unique for each providers ... + bool ProcessSignals(X121MarketConditions &conditions) + { + // + X121MarketConditions mConditions = GetMarketConditions(1); + + // + // BUY ... + + // + Clean(mConditions.signal); + bool hasLongSignal = HasLongSignal(mConditions); + if (hasLongSignal) + { + // + NotifyOnSignalEvent( + mConditions.signal); + NotifyOnSignalConditionsEvent(mConditions); + mWaitUntilNewCandle = true; + + // + conditions = mConditions; + return true; + } + + // + // SELL ... + + // + Clean(mConditions.signal); + bool hasShortignal = HasShortSignal(mConditions); + if (hasShortignal) + { + // + NotifyOnSignalEvent( + mConditions.signal); + NotifyOnSignalConditionsEvent(mConditions); + mWaitUntilNewCandle = true; + + // + conditions = mConditions; + return true; + } + + // + return false; + } + + // + // Check has Long Signal on Each Strategies ... + bool HasLongSignal(X121MarketConditions &conditions) + { + // + bool result = false; + + // + double entry = GetEntry( + mSymbol, + POSITION_TYPE_BUY); + + // + XOHCL c1 = GetCandle( + mSymbol, + mPeriod, + 1); + + // + double pivots[]; + FillPivotPoints(pivots); + XOHCLSupRes supRes = ExtractSupportAndResistance( + 1, + pivots, + 15); + X121MarketConditions mConditions = GetMarketConditions(1); + + // + mXPVHelper.Calculate(1); + + // + Clean(mConditions.signal); + + // + // XPVF Signal Provider ... + bool xPVFSignal = false; + if (!mDisableXPVFLong) + { + // + xPVFSignal = + // + mConditions.xpvInfo.isNewPeak && + mXPVHelper.peaksBuffer[0] < mXPVHelper.peaksBuffer[1] && + mXPVHelper.valesBuffer[0] == mXPVHelper.valesBuffer[1] + // + ; + + // + if (xPVFSignal) + { + // + Add( + ToString(XPVF), + mConditions.signal.providers); + + // + mConditions.signal.r2r = 1.5; + mConditions.signal.riskAmount = 0.005; + mConditions.signal.mode = X_ORDER_MODE_MARKET; + mConditions.signal.entry = entry; + mConditions.signal.sl = 0; // mXCHEHelper.longExit2[1]; + mConditions.signal.tp = 0; + + // + // mConditions.signal.calculateTP = true; + // mConditions.signal.useRiskAmountAsVolume = false; + // mConditions.signal.useSupportAndResistance = true; + + // + // mDisableXPVFLong = true; + // mDisableXPVFShort = false; + } + } + + // + result = + // + xPVFSignal + // + ; + + // + if (result) + { + // + conditions = mConditions; + + // + conditions.supportResistances = supRes; + conditions.momentumStep = mLastMomentumStep; + + // + conditions.signal.symbol = mSymbol; + conditions.signal.period = mPeriod; + conditions.signal.type = POSITION_TYPE_BUY; + + // + conditions.hasSignal = true; + } + + // + return result; + } + + // + // Check has Short Signal on Each Strategies ... + bool HasShortSignal(X121MarketConditions &conditions) + { + // + bool result = false; + + // + double entry = GetEntry( + mSymbol, + POSITION_TYPE_SELL); + + // + XOHCL c1 = GetCandle( + mSymbol, + mPeriod, + 1); + + // + double pivots[]; + FillPivotPoints(pivots); + XOHCLSupRes supRes = ExtractSupportAndResistance( + 1, + pivots, + 15); + + // + X121MarketConditions mConditions = GetMarketConditions(1); + + // + mXPVHelper.Calculate(1); + + // + Clean(mConditions.signal); + + // + // XPVF Signal Provider ... + bool xPVFSignal = false; + if (!mDisableXPVFShort) + { + // + xPVFSignal = + // + mConditions.xpvInfo.isNewVale && + mXPVHelper.valesBuffer[0] > mXPVHelper.valesBuffer[1] && + mXPVHelper.peaksBuffer[0] == mXPVHelper.peaksBuffer[1] + // + ; + + // + if (xPVFSignal) + { + // + Add( + ToString(XPVF), + mConditions.signal.providers); + + // + mConditions.signal.r2r = 1.5; + mConditions.signal.riskAmount = 0.005; + mConditions.signal.mode = X_ORDER_MODE_STOP; + mConditions.signal.entry = entry; + mConditions.signal.sl = 0; + mConditions.signal.tp = mXPVHelper.valesBuffer[1]; + + // + mConditions.signal.calculateTP = true; + mConditions.signal.useRiskAmountAsVolume = false; + mConditions.signal.useSupportAndResistance = true; + + // + // mDisableXPVFShort = true; + // mDisableXPVFLong = false; + } + } + + // + result = + // + xPVFSignal + // + ; + + // + if (result) + { + // + conditions = mConditions; + + // + conditions.supportResistances = supRes; + conditions.momentumStep = mLastMomentumStep; + + // + conditions.signal.symbol = mSymbol; + conditions.signal.period = mPeriod; + conditions.signal.type = POSITION_TYPE_SELL; + + // + conditions.hasSignal = true; + } + + // + return result; + }