test x5 provider reading Buffers correctly and also CanIgnoreProcess works properly ...

This commit is contained in:
2024-05-19 03:51:48 +03:30
parent 4c1b97e805
commit 4eba93231a
6 changed files with 463 additions and 84 deletions
+54 -54
View File
@@ -968,7 +968,7 @@ public:
//
// Check Spread is Ok for Executing Specific Signal ...
bool CheckSpreadForSignalExecution(XSignal &signal)
bool CheckSpreadForSignalExecution(XSignal &mSignal)
{
//
bool result = false;
@@ -983,7 +983,7 @@ public:
{
//
// Retrieve Signal Spread ...
double spread = signal.GetSpread();
double spread = mSignal.GetSpread();
result = spread <= mMaxAllowedSpread;
}
@@ -994,7 +994,7 @@ public:
//
// Check Account Policy ...
bool CheckAccountPolicy(
XSignal &signal, // For Executing Signal
XSignal &mSignal, // For Executing Signal
ENUM_X_SIGNAL_EXECUTION_RESULT &state // State Holder
)
{
@@ -1023,7 +1023,7 @@ public:
//
// Check Spread for Trade ...
result = CheckSpreadForSignalExecution(signal);
result = CheckSpreadForSignalExecution(mSignal);
if (!result)
{
//
@@ -1078,7 +1078,7 @@ public:
//
// Execute a Signal ...
bool ExecuteSignal(
XSignal &signal, // Signal
XSignal &mSignal, // Signal
ENUM_X_SIGNAL_EXECUTION_RESULT &state, // Result
ENUM_ORDER_TYPE_TIME lifetime = ORDER_TIME_GTC, // Order LifeTime
datetime expiration = NULL, // order expiration time
@@ -1091,25 +1091,25 @@ public:
//
double currentEntry = GetEntry(
signal.symbol,
signal.type
mSignal.symbol,
mSignal.type
//
);
bool isLong = IsLong(signal.type);
bool isLong = IsLong(mSignal.type);
//
// Select SL and TP ...
//
double selectedSL = 0;
signal.RegularSL(selectedSL);
mSignal.RegularSL(selectedSL);
//
double selectedTP = 0;
signal.RegularTP(selectedTP);
mSignal.RegularTP(selectedTP);
//
if (!signal.IsValid())
if (!mSignal.IsValid())
{
//
state = X_SIGNAL_EXECUTION_FAILED_INVALID_PARAMS;
@@ -1118,13 +1118,13 @@ public:
//
// Handle Market Execution ...
if (signal.mode == X_ORDER_MODE_MARKET)
if (mSignal.mode == X_ORDER_MODE_MARKET)
{
//
// Do Apply Policies here ...
bool hasPolicy = !checkPolicies
? true
: CheckAccountPolicy(signal, state);
: CheckAccountPolicy(mSignal, state);
if (!hasPolicy)
{
result = false;
@@ -1136,13 +1136,13 @@ public:
{
//
result = Buy(
signal.symbol,
signal.period,
signal.volume,
signal.entry,
mSignal.symbol,
mSignal.period,
mSignal.volume,
mSignal.entry,
selectedSL,
selectedTP,
signal.comment
mSignal.comment
//
);
}
@@ -1150,13 +1150,13 @@ public:
{
//
result = Sell(
signal.symbol,
signal.period,
signal.volume,
signal.entry,
mSignal.symbol,
mSignal.period,
mSignal.volume,
mSignal.entry,
selectedSL,
selectedTP,
signal.comment
mSignal.comment
//
);
}
@@ -1164,7 +1164,7 @@ public:
}
//
// Handle Stop Execution ...
else if (signal.mode == X_ORDER_MODE_STOP)
else if (mSignal.mode == X_ORDER_MODE_STOP)
{
//
@@ -1173,8 +1173,8 @@ public:
//
// Check Price ...
result = isLong
? signal.entry > currentEntry
: signal.entry < currentEntry;
? mSignal.entry > currentEntry
: mSignal.entry < currentEntry;
if (!result)
{
//
@@ -1188,15 +1188,15 @@ public:
{
//
result = BuyStop(
signal.symbol,
signal.period,
signal.volume,
signal.entry,
mSignal.symbol,
mSignal.period,
mSignal.volume,
mSignal.entry,
selectedSL,
selectedTP,
lifetime,
expiration,
signal.comment
mSignal.comment
//
);
}
@@ -1204,22 +1204,22 @@ public:
{
//
result = SellStop(
signal.symbol,
signal.period,
signal.volume,
signal.entry,
mSignal.symbol,
mSignal.period,
mSignal.volume,
mSignal.entry,
selectedSL,
selectedTP,
lifetime,
expiration,
signal.comment
mSignal.comment
//
);
}
}
//
// Handle Limit Execution ...
else if (signal.mode == X_ORDER_MODE_LIMIT)
else if (mSignal.mode == X_ORDER_MODE_LIMIT)
{
//
// Check Conditions ...
@@ -1227,8 +1227,8 @@ public:
//
// Check Price ...
result = isLong
? signal.entry < currentEntry
: signal.entry > currentEntry;
? mSignal.entry < currentEntry
: mSignal.entry > currentEntry;
if (!result)
{
//
@@ -1242,15 +1242,15 @@ public:
{
//
result = BuyLimit(
signal.symbol,
signal.period,
signal.volume,
signal.entry,
mSignal.symbol,
mSignal.period,
mSignal.volume,
mSignal.entry,
selectedSL,
selectedTP,
lifetime,
expiration,
signal.comment
mSignal.comment
//
);
}
@@ -1258,15 +1258,15 @@ public:
{
//
result = SellLimit(
signal.symbol,
signal.period,
signal.volume,
signal.entry,
mSignal.symbol,
mSignal.period,
mSignal.volume,
mSignal.entry,
selectedSL,
selectedTP,
lifetime,
expiration,
signal.comment
mSignal.comment
//
);
}
@@ -1281,7 +1281,7 @@ public:
//
ulong ticket;
if (signal.mode == X_ORDER_MODE_MARKET)
if (mSignal.mode == X_ORDER_MODE_MARKET)
{
ticket = GetLastOpenPositionTicket();
}
@@ -1291,11 +1291,11 @@ public:
}
//
signal.positionId = ticket;
mSignal.positionId = ticket;
//
// Handle Store XPositionInfo ...
if (signal.mode == X_ORDER_MODE_MARKET)
if (mSignal.mode == X_ORDER_MODE_MARKET)
{
//
// TODO: Implement this ...
@@ -1303,7 +1303,7 @@ public:
//
// Handle Executing Support Signals ...
int supportsCount = ArraySize(signal.supports);
int supportsCount = ArraySize(mSignal.supports);
if (supportsCount > 0)
{
//
@@ -1311,7 +1311,7 @@ public:
for (int i = 0; i < supportsCount; i++)
{
//
XSignal iSupport = signal.supports[i];
XSignal iSupport = mSignal.supports[i];
//
int supIndex = i + 1;