This commit is contained in:
2025-10-21 06:19:22 +03:30
parent 008ba9d05a
commit 412f7034d8
2 changed files with 83 additions and 29 deletions
+24 -4
View File
@@ -219,6 +219,14 @@ class XCBaseSignaller : public XCBase
return; return;
} }
//
// Check Rest Until ...
has = !IsXValid(restUntil) || (IsXValid(restUntil) && cBarTime > restUntil);
if (!has)
{
return;
}
// //
// Check Process Permissions ... // Check Process Permissions ...
has = CanAnalyseMarket(cBarTime); has = CanAnalyseMarket(cBarTime);
@@ -326,7 +334,9 @@ class XCBaseSignaller : public XCBase
{ {
} }
// /**
* Prepare Restrictions Update For Losing Trades ...
*/
void LoseTrade() void LoseTrade()
{ {
// //
@@ -334,12 +344,22 @@ class XCBaseSignaller : public XCBase
loosingTrades++; loosingTrades++;
} }
// /**
void WinTrade() { * Prepare Restrictions For Winning Trades ...
*/
void WinTrade()
{
// //
if (loosingTrades > 0) { if (loosingTrades > 0)
{
loosingTrades--; loosingTrades--;
} }
//
if (restingSignals > 0)
{
restingSignals--;
}
} }
// //
@@ -402,12 +402,19 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
// //
// Handle Partial Close Position if Reached TP 1.5 ... // 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.Clean();
iTarget.doRF = true; iTarget.actingDistance = 0;
iTarget.actingDistance = 20; iTarget.target = isBullish ? entry + (3 * risk) : entry - (3 * risk);
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);
AddRef(iTarget, iTargets); AddRef(iTarget, iTargets);
// //
@@ -425,29 +432,56 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
// Here we Can Do Target Preparing if Signaller Restricted and // Here we Can Do Target Preparing if Signaller Restricted and
// then ignore restrictions if required ... // then ignore restrictions if required ...
// // //
// Risk Free On Entry: // // Risk Free On Entry:
iTarget.Clean(); // iTarget.Clean();
iTarget.doRF = true; // iTarget.doRF = true;
iTarget.actingDistance = (5 * spread) / _point; // iTarget.actingDistance = 10 * _point; // (5 * spread) / _point;
iTarget.target = isBullish ? entry + (2 * spread) : entry - (2 * spread); // iTarget.target = isBullish ? entry + risk : entry - risk; // isBullish ? entry + (2 * spread) : entry - (2 * spread);
AddRef(iTarget, iTargets); // 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 ... if (loosingTrades >= 2)
// 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)
{ {
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();
}
} }
} }