start implementing XTrade Handler Class ...
This commit is contained in:
@@ -67,6 +67,14 @@ XSCXCCHelper *mCCHelper;
|
||||
// Registred Strategies ...
|
||||
XSCBaseStrategy *strategies[];
|
||||
|
||||
//
|
||||
// Trader Instance Class ...
|
||||
XSCTrade *eaTrader;
|
||||
|
||||
//
|
||||
// Trade Handler Instance Class ...
|
||||
XSCXTradeHandler *eaTradeHandler;
|
||||
|
||||
//
|
||||
// Event Handlers ...
|
||||
|
||||
@@ -90,7 +98,7 @@ int OnInit()
|
||||
drawPrefix = ShortName;
|
||||
|
||||
//
|
||||
// EventSetTimer(1);
|
||||
EventSetTimer(5);
|
||||
// EventSetMillisecondTimer(100);
|
||||
|
||||
//
|
||||
@@ -120,7 +128,11 @@ void OnDeinit(const int reason)
|
||||
delete mCCHelper;
|
||||
|
||||
//
|
||||
// EventKillTimer();
|
||||
delete eaTrader;
|
||||
delete eaTradeHandler;
|
||||
|
||||
//
|
||||
EventKillTimer();
|
||||
|
||||
//
|
||||
Clean(strategies);
|
||||
@@ -130,19 +142,14 @@ void OnDeinit(const int reason)
|
||||
// On Tick Handler ...
|
||||
void OnTick()
|
||||
{
|
||||
//
|
||||
HandleStrategiesOnTick();
|
||||
|
||||
//
|
||||
HandleTradeState();
|
||||
}
|
||||
|
||||
//
|
||||
// On Timer ...
|
||||
void OnTimer()
|
||||
{
|
||||
//
|
||||
// HandleStrategiesOnTick();
|
||||
HandleTradeState();
|
||||
}
|
||||
|
||||
//
|
||||
@@ -199,6 +206,14 @@ bool InitialEA()
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Create Trader Instance ...
|
||||
eaTrader = new XSCTrade(
|
||||
eaSlippage,
|
||||
eaMagicNumber //
|
||||
);
|
||||
eaTradeHandler = new XSCXTradeHandler(eaTrader);
|
||||
|
||||
//
|
||||
XSymbolParser symbolParser;
|
||||
|
||||
@@ -241,6 +256,7 @@ bool InitialEA()
|
||||
eaR2R, // R2R ...
|
||||
eaSlippage,
|
||||
magicNumber,
|
||||
true, // Ignore Signal Execution
|
||||
true, // Use TP SL Point
|
||||
false, // Use Max
|
||||
50, // eaTPPoint, // TP
|
||||
@@ -254,6 +270,7 @@ bool InitialEA()
|
||||
);
|
||||
eurusdTestStrategy.SetAlertLogAlerts(true);
|
||||
eurusdTestStrategy.SetAlertEnableAlerts(true);
|
||||
eurusdTestStrategy.AddSignalEventHandler(OnSignalRecieved);
|
||||
RegisterStrategy(eurusdTestStrategy);
|
||||
}
|
||||
}
|
||||
@@ -307,6 +324,67 @@ void HandleTradeState()
|
||||
{
|
||||
//
|
||||
// Implement All Trade States here ...
|
||||
eaTradeHandler.UpdateData();
|
||||
}
|
||||
|
||||
//
|
||||
// All Signals from Strategies Comming Here for Execution or
|
||||
// Analyzing ...
|
||||
void OnSignalRecieved(XSignal &signal)
|
||||
{
|
||||
//
|
||||
ENUM_X_SIGNAL_EXECUTION_RESULT state;
|
||||
bool isExecuted = eaTrader.ExecuteSignal(
|
||||
signal,
|
||||
state //
|
||||
);
|
||||
|
||||
//
|
||||
if (isExecuted)
|
||||
{
|
||||
//
|
||||
// Find Executed Signal Deal History ...
|
||||
XDeal deals[];
|
||||
double commission = 0;
|
||||
int dealsCount = eaTrader.GetDeals(
|
||||
deals,
|
||||
signal.symbol,
|
||||
signal.provider,
|
||||
signal.period,
|
||||
NULL,
|
||||
DEAL_ENTRY_IN //
|
||||
);
|
||||
if (IsValidSize(dealsCount))
|
||||
{
|
||||
//
|
||||
for (int i = 0; i < dealsCount; i++)
|
||||
{
|
||||
//
|
||||
XDeal iDeal = deals[i];
|
||||
if (iDeal.positionId == signal.positionId)
|
||||
{
|
||||
//
|
||||
commission = iDeal.commission;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Add Signal to Trade Handler ...
|
||||
eaTradeHandler.AddExecutedSignal(
|
||||
signal,
|
||||
commission //
|
||||
);
|
||||
|
||||
//
|
||||
string msg = (signal.type == POSITION_TYPE_BUY ? "Long" : "Short") +
|
||||
" Signal Provided by: " + signal.provider +
|
||||
" on: " + signal.symbol +
|
||||
" in: " + ToString(signal.period) +
|
||||
" Executed Successfully ...";
|
||||
Print(msg);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user