last ...
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include "../Classes/x-saherelm.x-chart.helper.class.mq5"
|
||||
#include "../Classes/x-saherelm.x-guard.class.mq5"
|
||||
#include "../Classes/x-saherelm.x-signaller.class.mq5"
|
||||
#include "../Classes/x-saherelm.x-target.class.mq5"
|
||||
#include "../Classes/x-saherelm.x-trade-manager.class.mq5"
|
||||
#include "../Classes/x-saherelm.x-volume.class.mq5"
|
||||
|
||||
@@ -121,11 +122,12 @@ class XCBaseExpert : public XCBase
|
||||
|
||||
//
|
||||
XCAlert *eaAlert; // EA Scope Alert Handler ...
|
||||
XCVolume *eaVolume; // EA Scope Voluem Handler ...
|
||||
XCGuard *eaGuard; // EA Scope Guard Handler ...
|
||||
XCTrade *eaTrader; // EA Scope Trade Handler ...
|
||||
XCTradeManager *eaTradeManager; // EA Scope Trade Handler ...
|
||||
XCVolume *eaVolume; // EA Scope Voluem Handler ...
|
||||
XCTarget *eaTarget; // EA Scope Target Handler ...
|
||||
XTimeTracker eaTimeTracker; // EA Scope Time Tracker ...
|
||||
XCTradeManager *eaTradeManager; // EA Scope Trade Manager Handler ...
|
||||
|
||||
//
|
||||
// Specified Event Handlers ...
|
||||
@@ -319,6 +321,19 @@ class XCBaseExpert : public XCBase
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Signal Executed Event Handlers ...
|
||||
count = ArraySize(mOnSignalExecutedEventHandlers);
|
||||
has = IsValidSize(count);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
eaTrader.AddOnSignalExecutedEventHandler(mOnSignalExecutedEventHandlers[i]);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Initialize Guard Handler ...
|
||||
eaGuard = new XCGuard(
|
||||
@@ -330,13 +345,18 @@ class XCBaseExpert : public XCBase
|
||||
// Attach Event Handler ...
|
||||
eaGuard.onGuardEventListener = onGuardedEventHandler;
|
||||
|
||||
//
|
||||
// Initialize Target Handler ...
|
||||
eaTarget = new XCTarget(eaTrader, eaAlert);
|
||||
|
||||
//
|
||||
// Initialize Trae Manager ...
|
||||
eaTradeManager = new XCTradeManager(
|
||||
eaAlert,
|
||||
eaTrader,
|
||||
eaVolume,
|
||||
eaGuard //
|
||||
eaGuard,
|
||||
eaTarget //
|
||||
);
|
||||
|
||||
//
|
||||
@@ -423,6 +443,11 @@ class XCBaseExpert : public XCBase
|
||||
delete eaVolume;
|
||||
ZeroMemory(eaVolume);
|
||||
|
||||
//
|
||||
eaTarget.Destroy();
|
||||
delete eaTarget;
|
||||
ZeroMemory(eaTarget);
|
||||
|
||||
//
|
||||
delete eaTradeManager;
|
||||
ZeroMemory(eaTradeManager);
|
||||
@@ -536,13 +561,29 @@ class XCBaseExpert : public XCBase
|
||||
}
|
||||
|
||||
/**
|
||||
* Check For Guard Event Handler ...
|
||||
* Handle Signal Executed Event ...
|
||||
*
|
||||
* @param guards: XGuard[]
|
||||
* @param signal: XSignal, reference to Executed Signal ...
|
||||
*/
|
||||
void HandleOnSignalExecuted(XSignal &signal)
|
||||
{
|
||||
eaTradeManager.target.AddExecutedSignal(signal);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check For Guard ...
|
||||
*
|
||||
* @param guards: XGuard, reference Collection to holds result ...
|
||||
* @param positions: XPosition, refrence collection to Provides Positions ...
|
||||
* @param barIndex: int, Specified Bar index ...
|
||||
*
|
||||
* @return ( int )
|
||||
*/
|
||||
int CheckForGuardTriggered(XGuard &guards[])
|
||||
int CheckForGuardTriggered(
|
||||
XGuard &guards[],
|
||||
XPosition &positions[],
|
||||
int barIndex = 0 //
|
||||
)
|
||||
{
|
||||
//
|
||||
int result = 0;
|
||||
@@ -559,7 +600,11 @@ class XCBaseExpert : public XCBase
|
||||
{
|
||||
//
|
||||
XGuard iGuards[];
|
||||
int iGuardsCount = eaSignallers[i].CheckForGuard(iGuards);
|
||||
int iGuardsCount = eaSignallers[i].CheckForGuard(
|
||||
iGuards,
|
||||
positions,
|
||||
barIndex //
|
||||
);
|
||||
if (IsValidSize(iGuardsCount))
|
||||
{
|
||||
//
|
||||
@@ -803,6 +848,23 @@ class XCBaseExpert : public XCBase
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Add New Signal Executed Event Handler ...
|
||||
void AddOnSignalExecutedEventHandler(TOnSignal handler)
|
||||
{
|
||||
//
|
||||
if (handler == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
Add(
|
||||
handler,
|
||||
mOnSignalExecutedEventHandlers //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Trade Event Handlers ...
|
||||
|
||||
@@ -1077,6 +1139,7 @@ class XCBaseExpert : public XCBase
|
||||
TOnSignal mOnSignalEventHandlers[];
|
||||
TOnStopLoss mStopLossEventHandlers[];
|
||||
TOnTakeProfit mTakeProfitEventHandlers[];
|
||||
TOnSignal mOnSignalExecutedEventHandlers[];
|
||||
TOnForceClose mOnForceCloseEventHandlers[];
|
||||
TOnDealsChanged mDealsChangedEventHandlers[];
|
||||
TOnOrdersChanged mOrdersChangedEventHandlers[];
|
||||
|
||||
@@ -40,6 +40,7 @@ class XCTradeManager : public XCBase
|
||||
XCAlert *alert;
|
||||
XCGuard *guard;
|
||||
XCTrade *trader;
|
||||
XCTarget *target;
|
||||
XCVolume *volume;
|
||||
XTimeTracker timeTracker;
|
||||
XCDataCollector *collector;
|
||||
@@ -56,7 +57,8 @@ class XCTradeManager : public XCBase
|
||||
XCAlert *_alert,
|
||||
XCTrade *_trader,
|
||||
XCVolume *_volume,
|
||||
XCGuard *_guard //
|
||||
XCGuard *_guard,
|
||||
XCTarget *_target //
|
||||
)
|
||||
{
|
||||
//
|
||||
@@ -64,6 +66,7 @@ class XCTradeManager : public XCBase
|
||||
guard = _guard;
|
||||
volume = _volume;
|
||||
trader = _trader;
|
||||
target = _target;
|
||||
|
||||
//
|
||||
drawer = new XCPOIDrawer();
|
||||
@@ -104,10 +107,6 @@ class XCTradeManager : public XCBase
|
||||
//
|
||||
timeTracker.Clean();
|
||||
|
||||
//
|
||||
ZeroMemory(alert);
|
||||
ZeroMemory(trader);
|
||||
|
||||
//
|
||||
delete drawer;
|
||||
ZeroMemory(drawer);
|
||||
@@ -1202,6 +1201,9 @@ class XCTradeManager : public XCBase
|
||||
|
||||
//
|
||||
RemoveTrade(idx);
|
||||
|
||||
//
|
||||
target.HandleOnTakeProfitTriggered(deal);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1284,6 +1286,9 @@ class XCTradeManager : public XCBase
|
||||
|
||||
//
|
||||
RemoveTrade(idx);
|
||||
|
||||
//
|
||||
target.HandleOnStopLossTriggered(deal);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1371,6 +1376,13 @@ class XCTradeManager : public XCBase
|
||||
|
||||
//
|
||||
RemoveTrade(idx);
|
||||
|
||||
//
|
||||
target.HandleOnPositionForceClosed(
|
||||
position.ticket,
|
||||
position,
|
||||
position.comment //
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1501,6 +1513,16 @@ class XCTradeManager : public XCBase
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle Signal Executed Event ...
|
||||
*
|
||||
* @param signal: XSignal, reference to Executed Signal ...
|
||||
*/
|
||||
void HandleSignalExecuted(XSignal &signal)
|
||||
{
|
||||
target.AddExecutedSignal(signal);
|
||||
}
|
||||
|
||||
//
|
||||
// Protected ...
|
||||
protected:
|
||||
|
||||
@@ -241,6 +241,7 @@ int OnInit()
|
||||
eaExpert.AddOnDealsChangedEventHandler(OnDealsChanged);
|
||||
eaExpert.AddOnStopLossEventHandler(OnStopLossTriggered);
|
||||
eaExpert.AddOnOrdersChangedEventHandler(OnOrdersChanged);
|
||||
eaExpert.AddOnSignalExecutedEventHandler(OnSignalExecuted);
|
||||
eaExpert.canAnalyseEventHandler = CanAnalyseEventTriggered;
|
||||
eaExpert.AddOnTakeProfitEventHandler(OnTakeProfitTriggered);
|
||||
eaExpert.checkForGuardEventHandler = CheckForGuardTriggered;
|
||||
@@ -401,6 +402,16 @@ void OnSignalTriggered(XSignal &signal)
|
||||
eaExpert.HandleOnSignalTriggered(signal);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger OnSignal Executed Event ...
|
||||
*
|
||||
* @param signal: XSignal
|
||||
*/
|
||||
void OnSignalExecuted(XSignal &signal)
|
||||
{
|
||||
eaExpert.HandleOnSignalExecuted(signal);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle StopLoss Triggered Positions ...
|
||||
*
|
||||
|
||||
@@ -363,6 +363,7 @@ bool CanAnalyseEventTriggered(
|
||||
datetime time //
|
||||
)
|
||||
{
|
||||
//
|
||||
return eaExpert.HandleCanAnalyseEventTriggered(
|
||||
symbol,
|
||||
period,
|
||||
@@ -371,15 +372,26 @@ bool CanAnalyseEventTriggered(
|
||||
}
|
||||
|
||||
/**
|
||||
* Check For Guard Event Handler ...
|
||||
* Check For Guard ...
|
||||
*
|
||||
* @param guards: XGuard[]
|
||||
* @param guards: XGuard, reference Collection to holds result ...
|
||||
* @param positions: XPosition, refrence collection to Provides Positions ...
|
||||
* @param barIndex: int, Specified Bar index ...
|
||||
*
|
||||
* @return ( int )
|
||||
*/
|
||||
int CheckForGuardTriggered(XGuard &guards[])
|
||||
int CheckForGuardTriggered(
|
||||
XGuard &guards[],
|
||||
XPosition &positions[],
|
||||
int barIndex = 0 //
|
||||
)
|
||||
{
|
||||
return eaExpert.CheckForGuardTriggered(guards);
|
||||
//
|
||||
return eaExpert.CheckForGuardTriggered(
|
||||
guards,
|
||||
positions,
|
||||
barIndex //
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user