Last ...
This commit is contained in:
@@ -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 ...
|
||||
|
||||
Reference in New Issue
Block a user