diff --git a/Classes/x-saherelm.x-signaller.class.mq5 b/Classes/x-saherelm.x-signaller.class.mq5 index 43aaac61..d5810258 100644 --- a/Classes/x-saherelm.x-signaller.class.mq5 +++ b/Classes/x-saherelm.x-signaller.class.mq5 @@ -219,6 +219,14 @@ class XCBaseSignaller : public XCBase return; } + // + // Check Rest Until ... + has = !IsXValid(restUntil) || (IsXValid(restUntil) && cBarTime > restUntil); + if (!has) + { + return; + } + // // Check Process Permissions ... has = CanAnalyseMarket(cBarTime); @@ -326,7 +334,9 @@ class XCBaseSignaller : public XCBase { } - // + /** + * Prepare Restrictions Update For Losing Trades ... + */ void LoseTrade() { // @@ -334,12 +344,22 @@ class XCBaseSignaller : public XCBase loosingTrades++; } - // - void WinTrade() { + /** + * Prepare Restrictions For Winning Trades ... + */ + void WinTrade() + { // - if (loosingTrades > 0) { + if (loosingTrades > 0) + { loosingTrades--; } + + // + if (restingSignals > 0) + { + restingSignals--; + } } // diff --git a/XFIMAEA/Classes/x-saherelm.xfima.signaller.class.mq5 b/XFIMAEA/Classes/x-saherelm.xfima.signaller.class.mq5 index 864eee5f..a3448aea 100644 --- a/XFIMAEA/Classes/x-saherelm.xfima.signaller.class.mq5 +++ b/XFIMAEA/Classes/x-saherelm.xfima.signaller.class.mq5 @@ -402,12 +402,19 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller // // Handle Partial Close Position if Reached TP 1.5 ... + // iTarget.Clean(); + // iTarget.doRF = true; + // iTarget.actingDistance = 10; + // iTarget.volumeMultiplier = 0.5; + // iTarget.target = isBullish ? entry + (1.8 * risk) : entry - (1.8 * risk); + // // iTarget.tpValue = isBullish ? entry + (2.5 * risk) : entry - (2.5 * risk); + // AddRef(iTarget, iTargets); + + // + // Reward 3 Target ... iTarget.Clean(); - iTarget.doRF = true; - iTarget.actingDistance = 20; - iTarget.volumeMultiplier = 0.5; - iTarget.target = isBullish ? entry + (1.5 * risk) : entry - (1.5 * risk); - iTarget.tpValue = isBullish ? entry + (2.5 * risk) : entry - (2.5 * risk); + iTarget.actingDistance = 0; + iTarget.target = isBullish ? entry + (3 * risk) : entry - (3 * risk); AddRef(iTarget, iTargets); // @@ -425,29 +432,56 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller // Here we Can Do Target Preparing if Signaller Restricted and // then ignore restrictions if required ... - // - // Risk Free On Entry: - iTarget.Clean(); - iTarget.doRF = true; - iTarget.actingDistance = (5 * spread) / _point; - iTarget.target = isBullish ? entry + (2 * spread) : entry - (2 * spread); - AddRef(iTarget, iTargets); + // // + // // Risk Free On Entry: + // iTarget.Clean(); + // iTarget.doRF = true; + // iTarget.actingDistance = 10 * _point; // (5 * spread) / _point; + // iTarget.target = isBullish ? entry + risk : entry - risk; // isBullish ? entry + (2 * spread) : entry - (2 * spread); + // AddRef(iTarget, iTargets); + + // // + // // Partial Close Position Half on TP 1 ... + // // Increase Rewards to TP 3 ... + // iTarget.Clean(); + // iTarget.actingDistance = 1; + // iTarget.volumeMultiplier = 0.5; + // iTarget.target = isBullish ? entry + risk : entry - risk; + // iTarget.tpValue = isBullish ? entry + (2.5 * risk) : entry - (2.5 * risk); + // AddRef(iTarget, iTargets); + + // // + // // Reset Restrictions ... + // if (loosingTrades == 1) + // { + // ResetRestrictions(); + // } // - // Partial Close Position Half on TP 1 ... - // Increase Rewards to TP 3 ... - iTarget.Clean(); - iTarget.actingDistance = 1; - iTarget.volumeMultiplier = 0.5; - iTarget.target = isBullish ? entry + risk : entry - risk; - iTarget.tpValue = isBullish ? entry + (3 * risk) : entry - (3 * risk); - AddRef(iTarget, iTargets); - - // - // Reset Restrictions ... - if (loosingTrades == 1) + if (loosingTrades >= 2) { - ResetRestrictions(); + // + if (IsXValid(restUntil) && iBar.time > restUntil) + { + // + WinTrade(); + restUntil = NULL; + } + else + { + // + XOHCL rBar; + bool has = rBar.Init(iZone.symbol, PERIOD_W1, 0); + if (has) + { + // + restUntil = rBar.NextAt(); + Print("Rest Until: ", restUntil); + } + + // + rBar.Clean(); + } } }