Last ...
This commit is contained in:
@@ -2666,6 +2666,29 @@ class XC121SMCTradeHandler : public XCBaseAlert
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
if (!youngestPosition.IsValid())
|
||||
{
|
||||
//
|
||||
int symbolIDX = FindLastExecutedSignalItem(signal);
|
||||
if (IsValidIndex(symbolIDX))
|
||||
{
|
||||
//
|
||||
datetime cTime = TimeCurrent();
|
||||
int signalPeriodSeconds = PeriodSeconds(signal.period);
|
||||
datetime lastExecutedTime = mLastExecutedSignals[symbolIDX].time;
|
||||
datetime passedTime = ((datetime)lastExecutedTime +
|
||||
((mDelayBarBetweenTwoSignal * signalPeriodSeconds)));
|
||||
|
||||
//
|
||||
result = cTime >= passedTime;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
@@ -2712,6 +2735,9 @@ class XC121SMCTradeHandler : public XCBaseAlert
|
||||
forceTrail //
|
||||
);
|
||||
|
||||
//
|
||||
HandleSignalExecuted(signal);
|
||||
|
||||
//
|
||||
string msg = (signal.type == POSITION_TYPE_BUY ? "Long" : "Short") +
|
||||
" Signal Provided by: " + signal.provider +
|
||||
@@ -3789,7 +3815,8 @@ class XC121SMCTradeHandler : public XCBaseAlert
|
||||
private:
|
||||
//
|
||||
// Props ...
|
||||
double mAdditionalVolume; // Volume Additional
|
||||
double mAdditionalVolume; // Volume Additional
|
||||
XSymbolLastPosition mLastExecutedSignals[]; // Last Executed Signals
|
||||
|
||||
//
|
||||
// Read Only ...
|
||||
@@ -4131,6 +4158,78 @@ class XC121SMCTradeHandler : public XCBaseAlert
|
||||
mCollector.SaveSignal(item);
|
||||
}
|
||||
|
||||
//
|
||||
int FindLastExecutedSignalItem(XSignal &signal)
|
||||
{
|
||||
//
|
||||
int result = -1;
|
||||
|
||||
//
|
||||
if (!signal.IsValid())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int count = ArraySize(mLastExecutedSignals);
|
||||
if (!IsValidSize(count))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
XSymbolLastPosition iLast = mLastExecutedSignals[i];
|
||||
if (iLast.symbol == signal.symbol &&
|
||||
iLast.provider == signal.provider)
|
||||
{
|
||||
//
|
||||
result = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
void HandleSignalExecuted(XSignal &signal)
|
||||
{
|
||||
//
|
||||
if (!signal.IsValid())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
datetime cTime = TimeCurrent();
|
||||
int symbolIDX = FindLastExecutedSignalItem(signal);
|
||||
bool hasItem = IsValidIndex(symbolIDX);
|
||||
if (hasItem)
|
||||
{
|
||||
mLastExecutedSignals[symbolIDX].time = cTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
XSymbolLastPosition item;
|
||||
|
||||
//
|
||||
item.time = cTime;
|
||||
item.symbol = signal.symbol;
|
||||
item.provider = signal.provider;
|
||||
|
||||
//
|
||||
AddRef(
|
||||
item,
|
||||
mLastExecutedSignals //
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user