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 ... int restingSignals; // Resting Signals ...
datetime lastSignalAt; // Holding Last Signal's Time ... datetime lastSignalAt; // Holding Last Signal's Time ...
int restingDelay; // Resting Bars After Last Signal ... int restingDelay; // Resting Bars After Last Signal ...
int loosingTrades; // Loosing Trades ...
// //
TCanAnalyse canAnalyseEventListener; TCanAnalyse canAnalyseEventListener;
@@ -325,6 +326,22 @@ class XCBaseSignaller : public XCBase
{ {
} }
//
void LoseTrade()
{
//
restingSignals++;
loosingTrades++;
}
//
void WinTrade() {
//
if (loosingTrades > 0) {
loosingTrades--;
}
}
// //
// Protected ... // Protected ...
protected: protected:
+32 -5
View File
@@ -362,7 +362,7 @@ int OnInit()
eaSignallerRiskInPoint, // Default Risk In Points ... eaSignallerRiskInPoint, // Default Risk In Points ...
eaSignallerVolume // Defaul Volume ... eaSignallerVolume // Defaul Volume ...
); );
fima1Signaller.slAdditionDistance = 15; fima1Signaller.slAdditionDistance = 15;
fima1Signaller.AddOnSignalEventHandler(OnSignalTriggered); fima1Signaller.AddOnSignalEventHandler(OnSignalTriggered);
// //
@@ -728,7 +728,8 @@ void OnStopLossTriggered(const XDeal &deal)
// //
HandleBalanceReport(); 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(); HandleBalanceReport();
HandleWinTrade(deal.positionId, deal.profit);
} }
/** /**
@@ -767,7 +769,8 @@ void OnPositionForceClosed(
// //
HandleBalanceReport(); 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 ... * Test Resting Signals ...
* *
* @param ticket: ulong, Position Ticket ... * @param ticket: ulong, Position Ticket ...
* @param profit: double, Position Profit ...
*/ */
void HandleLoosingPosition( void HandleLoseTrade(
ulong ticket = 0, ulong ticket = 0,
double profit = 0 // double profit = 0 //
) )
@@ -879,7 +883,30 @@ void HandleLoosingPosition(
// //
// Increase Resting Signals of Signallers ... // 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 ... // Handle Partial Close Position if Reached TP 1.5 ...
iTarget.Clean(); iTarget.Clean();
iTarget.actingDistance = 1; iTarget.doRF = true;
iTarget.actingDistance = 20;
iTarget.volumeMultiplier = 0.5; iTarget.volumeMultiplier = 0.5;
iTarget.target = isBullish ? entry + (1.5 * risk) : entry - (1.5 * risk); iTarget.target = isBullish ? entry + (1.5 * risk) : entry - (1.5 * risk);
iTarget.tpValue = isBullish ? entry + (2.5 * risk) : entry - (2.5 * risk); iTarget.tpValue = isBullish ? entry + (2.5 * risk) : entry - (2.5 * risk);
@@ -444,7 +445,10 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
// //
// Reset Restrictions ... // Reset Restrictions ...
ResetRestrictions(); if (loosingTrades == 1)
{
ResetRestrictions();
}
} }
// //
@@ -535,16 +539,17 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
bool result = false; bool result = false;
// //
result = Strategy2HasSignal( // result = Strategy2HasSignal(
bar, // bar,
zone, // zone,
targets, // targets,
dir // // dir //
); // );
// //
if (!result) if (!result)
{ {
//
result = Strategy3HasSignal( result = Strategy3HasSignal(
bar, bar,
zone, zone,
@@ -556,7 +561,7 @@ class XCXFIMAStrategy1Signaller : public XCXFIMABaseSignaller
// //
if (result) if (result)
{ {
Print("Salam"); // Print("Salam");
} }
// //