This commit is contained in:
2024-12-29 05:42:27 +03:30
parent 408422dcfc
commit ecdba76c3f
12 changed files with 2310 additions and 104 deletions
@@ -47,6 +47,7 @@ struct X121SMCTradeData
double commission; // Commission
string conditions; // Signal Conditions
double maxDrawdown; // Max Position Drawdown
bool isTargeted; // Check Targetted Before Or Not
//
// Constructor ...
@@ -110,6 +111,9 @@ struct X121SMCTradeData
startTime = NULL;
conditions = NULL;
//
isTargeted = false;
//
signal.Clean();
}
@@ -2901,7 +2905,7 @@ class XC121SMCTradeHandler : public XCBaseAlert
mTrader.GetPositions(
longs,
shorts,
signal.symbol,
signal.symbol,
signal.provider //
);
}
@@ -3099,6 +3103,13 @@ class XC121SMCTradeHandler : public XCBaseAlert
);
if (!result)
{
//
AlertSignalExecutionFailed(
signal,
state //
);
//
return result;
}
}
@@ -3141,17 +3152,11 @@ class XC121SMCTradeHandler : public XCBaseAlert
//
if (!result)
{
//
// Alert Signal Execution Failed ...
string msg = "Failed To Execute " +
(signal.type == POSITION_TYPE_BUY ? "Long" : "Short") +
" Signal Provided by: " + signal.provider +
(signal.pushers > 1 ? " Pushers: " + ToString(signal.pushers) : "") +
" on: " + signal.symbol +
" in: " + ToString(signal.period) +
" due Reason: " + ToString(state) + " ...";
Alert(msg);
AlertSignalExecutionFailed(
signal,
state //
);
}
//
@@ -3411,13 +3416,20 @@ class XC121SMCTradeHandler : public XCBaseAlert
//
// Handle RF On Target ...
double target = iData.Target();
double targetDelta = isLong
? target + (15 * points)
: target - (15 * points);
bool canRF =
target > 0 &&
target > entry &&
!iData.isTargeted &&
(isLong ? target > entry
: target < entry) &&
(isLong
? iPosition.sl < target
: iPosition.sl > target) &&
iPosition.price > target + (10 * points);
(isLong
? iPosition.price > targetDelta
: iPosition.price < targetDelta);
if (canRF)
{
//
@@ -3432,6 +3444,9 @@ class XC121SMCTradeHandler : public XCBaseAlert
);
if (isModified)
{
//
mData[i].isTargeted = true;
//
string message = ToString(iData.Type()) +
" Position: " +
@@ -3529,7 +3544,22 @@ class XC121SMCTradeHandler : public XCBaseAlert
XSymbolLastPosition mLastExecutedSignals[]; // Last Executed Signals
//
// Hedge Related Functions ...
void AlertSignalExecutionFailed(
XSignal &signal,
ENUM_X_SIGNAL_EXECUTION_RESULT state //
)
{
//
// Alert Signal Execution Failed ...
string msg = "Failed To Execute " +
(signal.type == POSITION_TYPE_BUY ? "Long" : "Short") +
" Signal Provided by: " + signal.provider +
(signal.pushers > 1 ? " Pushers: " + ToString(signal.pushers) : "") +
" on: " + signal.symbol +
" in: " + ToString(signal.period) +
" due Reason: " + ToString(state) + " ...";
Alert(msg);
}
//
// Private ...