last ...
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include "../../Classes/x-saherelm.x-bar.analyser.class.mq5"
|
||||
#include "../../Classes/x-saherelm.x-poi.drawer.class.mq5"
|
||||
#include "../../Classes/x-saherelm.x-trade.class.mq5"
|
||||
#include "../Libraries/x-121.smc.lib.mq5"
|
||||
|
||||
//
|
||||
// Definitions ...
|
||||
@@ -3196,6 +3197,120 @@ class XC121SMCTradeHandler : public XCBaseAlert
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute Specific Signal using Trade Handler ...
|
||||
*
|
||||
* @param signal: XSignal instance Reference ...
|
||||
* @param state: ENUM_X_SIGNAL_EXECUTION_RESULT Reference for olding Signal Execution Result Reason ...
|
||||
* @param ignorePolicies: Boolean ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool ExecuteSignal(
|
||||
XSignal &signal, // Signal for Execution
|
||||
X121SMCStrategyConditions &conditions, // Signal Conditions
|
||||
ENUM_X_SIGNAL_EXECUTION_RESULT &state, // Execution State
|
||||
bool ignorePolicies = false // Ignore Execution Policies
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Check Signal Validation ...
|
||||
result = signal.IsValid() &&
|
||||
conditions.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Policies ...
|
||||
if (!ignorePolicies)
|
||||
{
|
||||
//
|
||||
// Filter Signals if Necessary ...
|
||||
result = CanExecute(
|
||||
signal,
|
||||
state //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
AlertSignalExecutionFailed(
|
||||
signal,
|
||||
state //
|
||||
);
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Apply Additional Volume to Signal if Provided ...
|
||||
double additionalVolume = AdditionalVolume();
|
||||
if (additionalVolume > 0)
|
||||
{
|
||||
signal.volume += mAdditionalVolume;
|
||||
}
|
||||
|
||||
//
|
||||
// Execute Signal ...
|
||||
result = mTrader.ExecuteSignal(
|
||||
signal,
|
||||
state //
|
||||
);
|
||||
if (result)
|
||||
{
|
||||
//
|
||||
// Add XTradeHandler Data ...
|
||||
Add(signal);
|
||||
if (CanDraw())
|
||||
{
|
||||
//
|
||||
XCSignalObject *iObj;
|
||||
mDrawer.DrawSignal(signal, iObj);
|
||||
|
||||
//
|
||||
XCBaseObject *conditionsObjects[];
|
||||
DrawX121SMCStrategyConditions(
|
||||
conditions,
|
||||
conditionsObjects,
|
||||
mDrawer //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Handle Last Executed Signal ...
|
||||
HandleSignalExecuted(signal);
|
||||
|
||||
//
|
||||
// Alert Executed Signal ...
|
||||
string msg = (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) +
|
||||
" Executed Successfully ...";
|
||||
Alert(msg);
|
||||
}
|
||||
|
||||
//
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
AlertSignalExecutionFailed(
|
||||
signal,
|
||||
state //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Timing Actions ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user