This commit is contained in:
2025-10-21 01:03:32 +03:30
parent bc73aebe66
commit 008ba9d05a
3 changed files with 63 additions and 14 deletions
+17
View File
@@ -65,6 +65,7 @@ class XCBaseSignaller : public XCBase
int restingSignals; // Resting Signals ...
datetime lastSignalAt; // Holding Last Signal's Time ...
int restingDelay; // Resting Bars After Last Signal ...
int loosingTrades; // Loosing Trades ...
//
TCanAnalyse canAnalyseEventListener;
@@ -325,6 +326,22 @@ class XCBaseSignaller : public XCBase
{
}
//
void LoseTrade()
{
//
restingSignals++;
loosingTrades++;
}
//
void WinTrade() {
//
if (loosingTrades > 0) {
loosingTrades--;
}
}
//
// Protected ...
protected:
+31 -4
View File
@@ -728,7 +728,8 @@ void OnStopLossTriggered(const XDeal &deal)
//
HandleBalanceReport();
HandleLoosingPosition(deal.positionId, deal.profit);
HandleWinTrade(deal.positionId, deal.profit);
HandleLoseTrade(deal.positionId, deal.profit);
}
/**
@@ -743,6 +744,7 @@ void OnTakeProfitTriggered(const XDeal &deal)
//
HandleBalanceReport();
HandleWinTrade(deal.positionId, deal.profit);
}
/**
@@ -767,7 +769,8 @@ void OnPositionForceClosed(
//
HandleBalanceReport();
HandleLoosingPosition(ticket, position.profit);
HandleWinTrade(ticket, position.profit);
HandleLoseTrade(ticket, position.profit);
}
/**
@@ -856,8 +859,9 @@ void OnTradeStateChanged(const XOnTradeHandlerState &state)
* Test Resting Signals ...
*
* @param ticket: ulong, Position Ticket ...
* @param profit: double, Position Profit ...
*/
void HandleLoosingPosition(
void HandleLoseTrade(
ulong ticket = 0,
double profit = 0 //
)
@@ -879,7 +883,30 @@ void HandleLoosingPosition(
//
// Increase Resting Signals of Signallers ...
fima1Signaller.restingSignals++;
fima1Signaller.LoseTrade();
}
/**
* Handle Win Trade ...
*
* @param ticket: ulong, Position Ticket ...
* @param profit: double, Position Profit ...
*/
void HandleWinTrade(
ulong ticket = 0,
double profit = 0 //
)
{
//
bool has = ticket > 0 &&
profit > 0;
if (!has)
{
return;
}
//
fima1Signaller.WinTrade();
}
/**
@@ -403,7 +403,8 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
//
// Handle Partial Close Position if Reached TP 1.5 ...
iTarget.Clean();
iTarget.actingDistance = 1;
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);
@@ -444,7 +445,10 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
//
// Reset Restrictions ...
ResetRestrictions();
if (loosingTrades == 1)
{
ResetRestrictions();
}
}
//
@@ -535,16 +539,17 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
bool result = false;
//
result = Strategy2HasSignal(
bar,
zone,
targets,
dir //
);
// result = Strategy2HasSignal(
// bar,
// zone,
// targets,
// dir //
// );
//
if (!result)
{
//
result = Strategy3HasSignal(
bar,
zone,
@@ -556,7 +561,7 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
//
if (result)
{
Print("Salam");
// Print("Salam");
}
//