last ...
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user