last ...
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include "../Classes/x-saherelm.x-chart.helper.class.mq5"
|
#include "../Classes/x-saherelm.x-chart.helper.class.mq5"
|
||||||
#include "../Classes/x-saherelm.x-guard.class.mq5"
|
#include "../Classes/x-saherelm.x-guard.class.mq5"
|
||||||
#include "../Classes/x-saherelm.x-signaller.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-trade-manager.class.mq5"
|
||||||
#include "../Classes/x-saherelm.x-volume.class.mq5"
|
#include "../Classes/x-saherelm.x-volume.class.mq5"
|
||||||
|
|
||||||
@@ -121,11 +122,12 @@ class XCBaseExpert : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
XCAlert *eaAlert; // EA Scope Alert Handler ...
|
XCAlert *eaAlert; // EA Scope Alert Handler ...
|
||||||
XCVolume *eaVolume; // EA Scope Voluem Handler ...
|
|
||||||
XCGuard *eaGuard; // EA Scope Guard Handler ...
|
XCGuard *eaGuard; // EA Scope Guard Handler ...
|
||||||
XCTrade *eaTrader; // EA Scope Trade 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 ...
|
XTimeTracker eaTimeTracker; // EA Scope Time Tracker ...
|
||||||
|
XCTradeManager *eaTradeManager; // EA Scope Trade Manager Handler ...
|
||||||
|
|
||||||
//
|
//
|
||||||
// Specified Event Handlers ...
|
// 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 ...
|
// Initialize Guard Handler ...
|
||||||
eaGuard = new XCGuard(
|
eaGuard = new XCGuard(
|
||||||
@@ -330,13 +345,18 @@ class XCBaseExpert : public XCBase
|
|||||||
// Attach Event Handler ...
|
// Attach Event Handler ...
|
||||||
eaGuard.onGuardEventListener = onGuardedEventHandler;
|
eaGuard.onGuardEventListener = onGuardedEventHandler;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize Target Handler ...
|
||||||
|
eaTarget = new XCTarget(eaTrader, eaAlert);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize Trae Manager ...
|
// Initialize Trae Manager ...
|
||||||
eaTradeManager = new XCTradeManager(
|
eaTradeManager = new XCTradeManager(
|
||||||
eaAlert,
|
eaAlert,
|
||||||
eaTrader,
|
eaTrader,
|
||||||
eaVolume,
|
eaVolume,
|
||||||
eaGuard //
|
eaGuard,
|
||||||
|
eaTarget //
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -423,6 +443,11 @@ class XCBaseExpert : public XCBase
|
|||||||
delete eaVolume;
|
delete eaVolume;
|
||||||
ZeroMemory(eaVolume);
|
ZeroMemory(eaVolume);
|
||||||
|
|
||||||
|
//
|
||||||
|
eaTarget.Destroy();
|
||||||
|
delete eaTarget;
|
||||||
|
ZeroMemory(eaTarget);
|
||||||
|
|
||||||
//
|
//
|
||||||
delete eaTradeManager;
|
delete eaTradeManager;
|
||||||
ZeroMemory(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 )
|
* @return ( int )
|
||||||
*/
|
*/
|
||||||
int CheckForGuardTriggered(XGuard &guards[])
|
int CheckForGuardTriggered(
|
||||||
|
XGuard &guards[],
|
||||||
|
XPosition &positions[],
|
||||||
|
int barIndex = 0 //
|
||||||
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
int result = 0;
|
int result = 0;
|
||||||
@@ -559,7 +600,11 @@ class XCBaseExpert : public XCBase
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
XGuard iGuards[];
|
XGuard iGuards[];
|
||||||
int iGuardsCount = eaSignallers[i].CheckForGuard(iGuards);
|
int iGuardsCount = eaSignallers[i].CheckForGuard(
|
||||||
|
iGuards,
|
||||||
|
positions,
|
||||||
|
barIndex //
|
||||||
|
);
|
||||||
if (IsValidSize(iGuardsCount))
|
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 ...
|
// Trade Event Handlers ...
|
||||||
|
|
||||||
@@ -1077,6 +1139,7 @@ class XCBaseExpert : public XCBase
|
|||||||
TOnSignal mOnSignalEventHandlers[];
|
TOnSignal mOnSignalEventHandlers[];
|
||||||
TOnStopLoss mStopLossEventHandlers[];
|
TOnStopLoss mStopLossEventHandlers[];
|
||||||
TOnTakeProfit mTakeProfitEventHandlers[];
|
TOnTakeProfit mTakeProfitEventHandlers[];
|
||||||
|
TOnSignal mOnSignalExecutedEventHandlers[];
|
||||||
TOnForceClose mOnForceCloseEventHandlers[];
|
TOnForceClose mOnForceCloseEventHandlers[];
|
||||||
TOnDealsChanged mDealsChangedEventHandlers[];
|
TOnDealsChanged mDealsChangedEventHandlers[];
|
||||||
TOnOrdersChanged mOrdersChangedEventHandlers[];
|
TOnOrdersChanged mOrdersChangedEventHandlers[];
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class XCTradeManager : public XCBase
|
|||||||
XCAlert *alert;
|
XCAlert *alert;
|
||||||
XCGuard *guard;
|
XCGuard *guard;
|
||||||
XCTrade *trader;
|
XCTrade *trader;
|
||||||
|
XCTarget *target;
|
||||||
XCVolume *volume;
|
XCVolume *volume;
|
||||||
XTimeTracker timeTracker;
|
XTimeTracker timeTracker;
|
||||||
XCDataCollector *collector;
|
XCDataCollector *collector;
|
||||||
@@ -56,7 +57,8 @@ class XCTradeManager : public XCBase
|
|||||||
XCAlert *_alert,
|
XCAlert *_alert,
|
||||||
XCTrade *_trader,
|
XCTrade *_trader,
|
||||||
XCVolume *_volume,
|
XCVolume *_volume,
|
||||||
XCGuard *_guard //
|
XCGuard *_guard,
|
||||||
|
XCTarget *_target //
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -64,6 +66,7 @@ class XCTradeManager : public XCBase
|
|||||||
guard = _guard;
|
guard = _guard;
|
||||||
volume = _volume;
|
volume = _volume;
|
||||||
trader = _trader;
|
trader = _trader;
|
||||||
|
target = _target;
|
||||||
|
|
||||||
//
|
//
|
||||||
drawer = new XCPOIDrawer();
|
drawer = new XCPOIDrawer();
|
||||||
@@ -104,10 +107,6 @@ class XCTradeManager : public XCBase
|
|||||||
//
|
//
|
||||||
timeTracker.Clean();
|
timeTracker.Clean();
|
||||||
|
|
||||||
//
|
|
||||||
ZeroMemory(alert);
|
|
||||||
ZeroMemory(trader);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
delete drawer;
|
delete drawer;
|
||||||
ZeroMemory(drawer);
|
ZeroMemory(drawer);
|
||||||
@@ -1202,6 +1201,9 @@ class XCTradeManager : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
RemoveTrade(idx);
|
RemoveTrade(idx);
|
||||||
|
|
||||||
|
//
|
||||||
|
target.HandleOnTakeProfitTriggered(deal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1284,6 +1286,9 @@ class XCTradeManager : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
RemoveTrade(idx);
|
RemoveTrade(idx);
|
||||||
|
|
||||||
|
//
|
||||||
|
target.HandleOnStopLossTriggered(deal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1371,6 +1376,13 @@ class XCTradeManager : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
RemoveTrade(idx);
|
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 ...
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -241,6 +241,7 @@ int OnInit()
|
|||||||
eaExpert.AddOnDealsChangedEventHandler(OnDealsChanged);
|
eaExpert.AddOnDealsChangedEventHandler(OnDealsChanged);
|
||||||
eaExpert.AddOnStopLossEventHandler(OnStopLossTriggered);
|
eaExpert.AddOnStopLossEventHandler(OnStopLossTriggered);
|
||||||
eaExpert.AddOnOrdersChangedEventHandler(OnOrdersChanged);
|
eaExpert.AddOnOrdersChangedEventHandler(OnOrdersChanged);
|
||||||
|
eaExpert.AddOnSignalExecutedEventHandler(OnSignalExecuted);
|
||||||
eaExpert.canAnalyseEventHandler = CanAnalyseEventTriggered;
|
eaExpert.canAnalyseEventHandler = CanAnalyseEventTriggered;
|
||||||
eaExpert.AddOnTakeProfitEventHandler(OnTakeProfitTriggered);
|
eaExpert.AddOnTakeProfitEventHandler(OnTakeProfitTriggered);
|
||||||
eaExpert.checkForGuardEventHandler = CheckForGuardTriggered;
|
eaExpert.checkForGuardEventHandler = CheckForGuardTriggered;
|
||||||
@@ -401,6 +402,16 @@ void OnSignalTriggered(XSignal &signal)
|
|||||||
eaExpert.HandleOnSignalTriggered(signal);
|
eaExpert.HandleOnSignalTriggered(signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trigger OnSignal Executed Event ...
|
||||||
|
*
|
||||||
|
* @param signal: XSignal
|
||||||
|
*/
|
||||||
|
void OnSignalExecuted(XSignal &signal)
|
||||||
|
{
|
||||||
|
eaExpert.HandleOnSignalExecuted(signal);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle StopLoss Triggered Positions ...
|
* Handle StopLoss Triggered Positions ...
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -363,6 +363,7 @@ bool CanAnalyseEventTriggered(
|
|||||||
datetime time //
|
datetime time //
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
//
|
||||||
return eaExpert.HandleCanAnalyseEventTriggered(
|
return eaExpert.HandleCanAnalyseEventTriggered(
|
||||||
symbol,
|
symbol,
|
||||||
period,
|
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 )
|
* @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