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;
}
//
// 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--;
}
}
//
@@ -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();
}
}
}