all prepared ...
This commit is contained in:
@@ -605,7 +605,6 @@ class XCBaseExpert : public XCBase
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool HandleCanAnalyseEventTriggered(
|
||||
string name,
|
||||
string symbol,
|
||||
ENUM_TIMEFRAMES period,
|
||||
datetime time //
|
||||
@@ -613,7 +612,6 @@ class XCBaseExpert : public XCBase
|
||||
{
|
||||
//
|
||||
return eaTradeManager.CanAnalyse(
|
||||
name,
|
||||
symbol,
|
||||
period,
|
||||
time //
|
||||
|
||||
@@ -752,7 +752,6 @@ class XCTradeManager : public XCBase
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool CanAnalyse(
|
||||
string name,
|
||||
string symbol,
|
||||
ENUM_TIMEFRAMES period,
|
||||
datetime time //
|
||||
@@ -765,8 +764,7 @@ class XCTradeManager : public XCBase
|
||||
// Finding Symbol Configuration Index ...
|
||||
int idx = FindSymbolConfigurationIndex(
|
||||
symbol,
|
||||
period,
|
||||
name //
|
||||
period //
|
||||
);
|
||||
|
||||
//
|
||||
@@ -857,7 +855,6 @@ class XCTradeManager : public XCBase
|
||||
//
|
||||
// Check Sessions and Restrictions ...
|
||||
result = CanAnalyse(
|
||||
signal.provider,
|
||||
signal.symbol,
|
||||
signal.period,
|
||||
signal.time //
|
||||
@@ -875,8 +872,7 @@ class XCTradeManager : public XCBase
|
||||
// Check Signal Spread ...
|
||||
int idx = FindSymbolConfigurationIndex(
|
||||
signal.symbol,
|
||||
signal.period,
|
||||
signal.provider //
|
||||
signal.period //
|
||||
);
|
||||
if (IsValidIndex(idx))
|
||||
{
|
||||
@@ -897,19 +893,30 @@ class XCTradeManager : public XCBase
|
||||
|
||||
//
|
||||
// Checking Max Allowed Positions ...
|
||||
XPosition positions[];
|
||||
ENUM_X_POSITION_TYPES mType = IsLong(signal.type)
|
||||
? X_POSITION_TYPE_LONG
|
||||
: X_POSITION_TYPE_SHORT;
|
||||
int positionsCount = trader.GetPositions(
|
||||
positions,
|
||||
symbolTradeConfigs[idx].symbol,
|
||||
signal.provider,
|
||||
symbolTradeConfigs[idx].period,
|
||||
mType,
|
||||
true, // Filter By Magic ...
|
||||
true // Force Clean ...
|
||||
);
|
||||
if (symbolTradeConfigs[idx].maxAllowedPositions > 0)
|
||||
{
|
||||
//
|
||||
XPosition positions[];
|
||||
ENUM_X_POSITION_TYPES mType = IsLong(signal.type)
|
||||
? X_POSITION_TYPE_LONG
|
||||
: X_POSITION_TYPE_SHORT;
|
||||
int positionsCount = trader.GetPositions(
|
||||
positions,
|
||||
symbolTradeConfigs[idx].symbol,
|
||||
NULL, // All Providers ...
|
||||
symbolTradeConfigs[idx].period,
|
||||
mType,
|
||||
true, // Filter By Magic ...
|
||||
true // Force Clean ...
|
||||
);
|
||||
result = !IsValidSize(positionsCount) ||
|
||||
(IsValidSize(positionsCount) &&
|
||||
positionsCount < symbolTradeConfigs[idx].maxAllowedPositions);
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
SpecifiedClean(positions);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
@@ -2151,6 +2158,7 @@ class XCTradeManager : public XCBase
|
||||
//
|
||||
// Check Initialization ...
|
||||
bool has = iConfig.Init(
|
||||
"Default",
|
||||
_Symbol,
|
||||
_Period //
|
||||
);
|
||||
@@ -2264,8 +2272,7 @@ class XCTradeManager : public XCBase
|
||||
//
|
||||
int FindSymbolConfigurationIndex(
|
||||
string symbol,
|
||||
ENUM_TIMEFRAMES period,
|
||||
string name //
|
||||
ENUM_TIMEFRAMES period //
|
||||
)
|
||||
{
|
||||
//
|
||||
@@ -2274,7 +2281,6 @@ class XCTradeManager : public XCBase
|
||||
//
|
||||
// Validate Args ...
|
||||
if (
|
||||
!IsSpecifiedValid(name) ||
|
||||
!IsSpecifiedValid(symbol) ||
|
||||
!IsSpecifiedValid(period) ||
|
||||
!HasChild(symbolTradeConfigs))
|
||||
@@ -2287,8 +2293,7 @@ class XCTradeManager : public XCBase
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
if (symbolTradeConfigs[i].name == name &&
|
||||
symbolTradeConfigs[i].symbol == symbol &&
|
||||
if (symbolTradeConfigs[i].symbol == symbol &&
|
||||
symbolTradeConfigs[i].period == period)
|
||||
{
|
||||
//
|
||||
|
||||
@@ -3023,7 +3023,7 @@ struct XSymbolTradeConfig
|
||||
_period = NormalizePeriod(_period);
|
||||
|
||||
//
|
||||
name = name;
|
||||
name = _name;
|
||||
symbol = _symbol;
|
||||
period = _period;
|
||||
maxAllowedSpread = _maxAllowedSpread;
|
||||
@@ -3772,7 +3772,6 @@ typedef void (*TOnSignal)(XSignal &signal);
|
||||
|
||||
//
|
||||
typedef bool (*TCanAnalyse)(
|
||||
string name,
|
||||
string _symbol,
|
||||
ENUM_TIMEFRAMES _period,
|
||||
datetime _time //
|
||||
|
||||
@@ -56,42 +56,40 @@ class XCXFIMAExpret : public XCBaseExpert
|
||||
|
||||
//
|
||||
// Instantiate Signaller ...
|
||||
if (symbolConfig.name == "XFIMA1")
|
||||
|
||||
//
|
||||
// XFIMA Inputs ...
|
||||
|
||||
//
|
||||
XFIMAInputs fimaInputs;
|
||||
fimaInputs.Default();
|
||||
fimaInputs.Hide();
|
||||
|
||||
//
|
||||
// Instantiate Signaller Class ...
|
||||
XCXFIMAStrategy1Signaller *fima1Signaller = new XCXFIMAStrategy1Signaller(
|
||||
symbolConfig.symbol,
|
||||
symbolConfig.period,
|
||||
fimaInputs,
|
||||
false // Process All Ticks ...
|
||||
);
|
||||
if (!fima1Signaller.IsValid())
|
||||
{
|
||||
//
|
||||
// XFIMA Inputs ...
|
||||
|
||||
//
|
||||
XFIMAInputs fimaInputs;
|
||||
fimaInputs.Default();
|
||||
fimaInputs.Hide();
|
||||
|
||||
//
|
||||
// Instantiate Signaller Class ...
|
||||
XCXFIMAStrategy1Signaller *fima1Signaller = new XCXFIMAStrategy1Signaller(
|
||||
symbolConfig.symbol,
|
||||
symbolConfig.period,
|
||||
fimaInputs,
|
||||
false // Process All Ticks ...
|
||||
);
|
||||
if (!fima1Signaller.IsValid())
|
||||
{
|
||||
//
|
||||
fima1Signaller.Destroy();
|
||||
delete fima1Signaller;
|
||||
ZeroMemory(fima1Signaller);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Register Signaller ...
|
||||
RegisterSignaller((XCBaseSignaller *)fima1Signaller);
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
fimaInputs.Clean();
|
||||
fima1Signaller.Destroy();
|
||||
delete fima1Signaller;
|
||||
ZeroMemory(fima1Signaller);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Register Signaller ...
|
||||
RegisterSignaller((XCBaseSignaller *)fima1Signaller);
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
fimaInputs.Clean();
|
||||
ZeroMemory(fima1Signaller);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user