complete save signalinfo in files after a position finished by it's conditions, also remove force XASCT verifications and add new Signal Provider based on it ...

This commit is contained in:
2024-06-12 01:24:08 +03:30
parent e023518bba
commit aaf55da2de
5 changed files with 742 additions and 298 deletions
+327 -21
View File
@@ -46,6 +46,152 @@
//
// Definitions ...
//
enum ENUM_X121_SIGNAL_PROVIDER
{
//
PROVIDER_UNKNOWN = 0,
PROVIDER_XMATD = 1,
PROVIDER_XSARD = 2,
PROVIDER_XADXTD = 3,
PROVIDER_XSTR = 4,
PROVIDER_XCHE = 5,
PROVIDER_XTD = 6,
PROVIDER_XSI = 7,
PROVIDER_XCI = 8,
PROVIDER_XMCD = 9,
PROVIDER_XICH = 10,
PROVIDER_XHK = 11,
PROVIDER_XSMHK = 12,
PROVIDER_XMRB = 13,
PROVIDER_XSSLC = 14,
PROVIDER_XHULL = 15,
PROVIDER_XASCT = 16,
};
//
string ToString(ENUM_X121_SIGNAL_PROVIDER value)
{
//
string result = NULL;
//
string vStr = EnumToString(value);
if (!IsValid(vStr))
{
return result;
}
//
string parts[];
int partsCount = SplitContent(
parts,
vStr,
"_"
//
);
if (partsCount <= 0)
{
return result;
}
//
bool hasLastPart = GetLastItem(
result,
parts
//
);
if (!hasLastPart)
{
return result;
}
//
return result;
}
//
ENUM_X121_SIGNAL_PROVIDER FromString(string value)
{
//
ENUM_X121_SIGNAL_PROVIDER result = PROVIDER_UNKNOWN;
//
if (!IsValid(value))
{
return result;
}
//
if (Contains(value, (EnumToString(PROVIDER_XMATD))))
{
result = PROVIDER_XMATD;
}
else if (Contains(value, (EnumToString(PROVIDER_XSARD))))
{
result = PROVIDER_XSARD;
}
else if (Contains(value, (EnumToString(PROVIDER_XADXTD))))
{
result = PROVIDER_XADXTD;
}
else if (Contains(value, (EnumToString(PROVIDER_XSTR))))
{
result = PROVIDER_XSTR;
}
else if (Contains(value, (EnumToString(PROVIDER_XCHE))))
{
result = PROVIDER_XCHE;
}
else if (Contains(value, (EnumToString(PROVIDER_XTD))))
{
result = PROVIDER_XTD;
}
else if (Contains(value, (EnumToString(PROVIDER_XSI))))
{
result = PROVIDER_XSI;
}
else if (Contains(value, (EnumToString(PROVIDER_XCI))))
{
result = PROVIDER_XCI;
}
else if (Contains(value, (EnumToString(PROVIDER_XMCD))))
{
result = PROVIDER_XMCD;
}
else if (Contains(value, (EnumToString(PROVIDER_XICH))))
{
result = PROVIDER_XICH;
}
else if (Contains(value, (EnumToString(PROVIDER_XHK))))
{
result = PROVIDER_XHK;
}
else if (Contains(value, (EnumToString(PROVIDER_XSMHK))))
{
result = PROVIDER_XSMHK;
}
else if (Contains(value, (EnumToString(PROVIDER_XMRB))))
{
result = PROVIDER_XMRB;
}
else if (Contains(value, (EnumToString(PROVIDER_XSSLC))))
{
result = PROVIDER_XSSLC;
}
else if (Contains(value, (EnumToString(PROVIDER_XHULL))))
{
result = PROVIDER_XHULL;
}
else if (Contains(value, (EnumToString(PROVIDER_XASCT))))
{
result = PROVIDER_XASCT;
}
//
return result;
}
//
// Inputs ...
struct X121SetupInputs
@@ -479,17 +625,17 @@ struct X121SetupConditions
);
//
string matdSummary = matdConditions.GenerateSummary(false, true, false);
string adxtdSummary = adxtdConditions.GenerateSummary(false, true, false);
string strSummary = strConditions.GenerateSummary(false, true, false);
string cheSummary = cheConditions.GenerateSummary(false, true, false);
string asctSummary = asctConditions.GenerateSummary(false, true, false);
string tdSummary = tdConditions.GenerateSummary(false, true, false);
string ichSummary = ichConditions.GenerateSummary(false, true, false);
string hkSummary = hkConditions.GenerateSummary(false, true, false);
string mrbSummary = mrbConditions.GenerateSummary(false, true, false);
string sslcSummary = sslcConditions.GenerateSummary(false, true, false);
string hullSummary = hullConditions.GenerateSummary(false, true, false);
string matdSummary = matdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string adxtdSummary = adxtdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string strSummary = strConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string cheSummary = cheConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string asctSummary = asctConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string tdSummary = tdConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string ichSummary = ichConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string hkSummary = hkConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string mrbSummary = mrbConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string sslcSummary = sslcConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
string hullSummary = hullConditions.GenerateSummary(false, true, false, ignoreFalseConditions);
//
string conditionsStr =
@@ -628,7 +774,8 @@ struct X121SignalGenerator
// Check Market Conditions for Long Signals ...
bool HasLongConditions(
X121SetupConditions &conditions, // Conditions
int &pusher // Pushers
int &pusher, // Pushers
string &provider // Provider
)
{
//
@@ -654,6 +801,7 @@ struct X121SignalGenerator
);
//
// XMATD ...
bool long1 =
//
// Starting Conditions ...
@@ -675,10 +823,13 @@ struct X121SignalGenerator
;
if (long1)
{
//
pusher++;
provider = ToString(PROVIDER_XMATD);
}
//
// XSARD ...
bool long2 =
//
// Starting Conditions ...
@@ -700,10 +851,13 @@ struct X121SignalGenerator
;
if (long2)
{
//
pusher++;
provider = ToString(PROVIDER_XSARD);
}
//
// XADXTD ...
bool long3 =
//
// Starting Conditions ...
@@ -723,10 +877,13 @@ struct X121SignalGenerator
;
if (long3)
{
//
pusher++;
provider = ToString(PROVIDER_XADXTD);
}
//
// XSTR ...
bool long4 =
//
// Starting Conditions ...
@@ -747,10 +904,13 @@ struct X121SignalGenerator
;
if (long4)
{
//
pusher++;
provider = ToString(PROVIDER_XSTR);
}
//
// XCHE ...
bool long5 =
//
// Starting Conditions ...
@@ -771,10 +931,13 @@ struct X121SignalGenerator
;
if (long5)
{
//
pusher++;
provider = ToString(PROVIDER_XCHE);
}
//
// XTD ...
bool long6 =
//
// Starting Conditions ...
@@ -795,10 +958,13 @@ struct X121SignalGenerator
;
if (long6)
{
//
pusher++;
provider = ToString(PROVIDER_XTD);
}
//
// XSI ...
bool long7 =
//
// Starting Conditions ...
@@ -821,10 +987,13 @@ struct X121SignalGenerator
;
if (long7)
{
//
pusher++;
provider = ToString(PROVIDER_XSI);
}
//
// XCI ...
bool long8 =
//
// Starting Conditions ...
@@ -847,10 +1016,13 @@ struct X121SignalGenerator
;
if (long8)
{
//
pusher++;
provider = ToString(PROVIDER_XCI);
}
//
// XMCD ...
bool long9 =
//
// Starting Conditions ...
@@ -873,10 +1045,13 @@ struct X121SignalGenerator
;
if (long9)
{
//
pusher++;
provider = ToString(PROVIDER_XMCD);
}
//
// XICH ...
bool long10 =
//
// Starting Conditions ...
@@ -898,10 +1073,13 @@ struct X121SignalGenerator
;
if (long10)
{
//
pusher++;
provider = ToString(PROVIDER_XICH);
}
//
// XHK ...
bool long11 =
//
// Starting Conditions ...
@@ -922,10 +1100,13 @@ struct X121SignalGenerator
;
if (long11)
{
//
pusher++;
provider = ToString(PROVIDER_XHK);
}
//
// XSMHK ...
bool long12 =
//
// Starting Conditions ...
@@ -946,10 +1127,13 @@ struct X121SignalGenerator
;
if (long12)
{
//
pusher++;
provider = ToString(PROVIDER_XSMHK);
}
//
// XMRB ...
bool long13 =
//
// Starting Conditions ...
@@ -970,10 +1154,13 @@ struct X121SignalGenerator
;
if (long13)
{
//
pusher++;
provider = ToString(PROVIDER_XMRB);
}
//
// XSSLC ...
bool long14 =
//
// Starting Conditions ...
@@ -994,10 +1181,13 @@ struct X121SignalGenerator
;
if (long14)
{
//
pusher++;
provider = ToString(PROVIDER_XSSLC);
}
//
// XHULL ...
bool long15 =
//
// Starting Conditions ...
@@ -1018,7 +1208,37 @@ struct X121SignalGenerator
;
if (long15)
{
//
pusher++;
provider = ToString(PROVIDER_XHULL);
}
//
// XASCT ...
bool long16 =
//
// Starting Conditions ...
conditions.asctConditions.isLongSignal &&
//
// Verifications ...
conditions.tdConditions.isBullish &&
conditions.matdConditions.isBullish &&
conditions.adxtdConditions.isStrong &&
conditions.adxtdConditions.isBullish &&
conditions.strConditions.isTrendBullish &&
conditions.cheConditions.isStrongBullish &&
conditions.hkConditions.isHKBullish &&
conditions.hkConditions.isSMHKBullish &&
conditions.mrbConditions.isFastOverSlow &&
conditions.hullConditions.isBullish &&
conditions.sslcConditions.isBullish
//
;
if (long16)
{
//
pusher++;
provider = ToString(PROVIDER_XASCT);
}
//
@@ -1026,7 +1246,6 @@ struct X121SignalGenerator
//
pusher >= 1 &&
!isOSCShortVerified &&
conditions.asctConditions.isLongSignal &&
bullishScore > bearishScore * 2 &&
(
//
@@ -1088,6 +1307,10 @@ struct X121SignalGenerator
//
long15
//
||
//
long16
//
)
//
;
@@ -1100,7 +1323,8 @@ struct X121SignalGenerator
// Check Market Conditions for Short Signals ...
bool HasShortConditions(
X121SetupConditions &conditions, // Conditions
int &pusher // Pushers
int &pusher, // Pushers
string &provider // Provider
)
{
//
@@ -1126,6 +1350,7 @@ struct X121SignalGenerator
);
//
// XMATD ...
bool short1 =
//
// Starting Conditions ...
@@ -1147,10 +1372,13 @@ struct X121SignalGenerator
;
if (short1)
{
//
pusher++;
provider = ToString(PROVIDER_XMATD);
}
//
// XSARD ...
bool short2 =
//
// Starting Conditions ...
@@ -1172,10 +1400,13 @@ struct X121SignalGenerator
;
if (short2)
{
//
pusher++;
provider = ToString(PROVIDER_XSARD);
}
//
// XADXTD ...
bool short3 =
//
// Starting Conditions ...
@@ -1195,10 +1426,13 @@ struct X121SignalGenerator
;
if (short3)
{
//
pusher++;
provider = ToString(PROVIDER_XADXTD);
}
//
// XSTR ...
bool short4 =
//
// Starting Conditions ...
@@ -1219,10 +1453,13 @@ struct X121SignalGenerator
;
if (short4)
{
//
pusher++;
provider = ToString(PROVIDER_XSTR);
}
//
// XCHE ...
bool short5 =
//
// Starting Conditions ...
@@ -1243,10 +1480,13 @@ struct X121SignalGenerator
;
if (short5)
{
//
pusher++;
provider = ToString(PROVIDER_XCHE);
}
//
// XTD ...
bool short6 =
//
// Starting Conditions ...
@@ -1267,10 +1507,13 @@ struct X121SignalGenerator
;
if (short6)
{
//
pusher++;
provider = ToString(PROVIDER_XTD);
}
//
// XSI ...
bool short7 =
//
// Starting Conditions ...
@@ -1293,10 +1536,13 @@ struct X121SignalGenerator
;
if (short7)
{
//
pusher++;
provider = ToString(PROVIDER_XSI);
}
//
// XCI ...
bool short8 =
//
// Starting Conditions ...
@@ -1319,10 +1565,13 @@ struct X121SignalGenerator
;
if (short8)
{
//
pusher++;
provider = ToString(PROVIDER_XCI);
}
//
// XMCD ...
bool short9 =
//
// Starting Conditions ...
@@ -1345,10 +1594,13 @@ struct X121SignalGenerator
;
if (short9)
{
//
pusher++;
provider = ToString(PROVIDER_XMCD);
}
//
// XICH ...
bool short10 =
//
// Starting Conditions ...
@@ -1370,10 +1622,13 @@ struct X121SignalGenerator
;
if (short10)
{
//
pusher++;
provider = ToString(PROVIDER_XICH);
}
//
// XHK ...
bool short11 =
//
// Starting Conditions ...
@@ -1394,10 +1649,13 @@ struct X121SignalGenerator
;
if (short11)
{
//
pusher++;
provider = ToString(PROVIDER_XHK);
}
//
// XSMHK ...
bool short12 =
//
// Starting Conditions ...
@@ -1418,10 +1676,13 @@ struct X121SignalGenerator
;
if (short12)
{
//
pusher++;
provider = ToString(PROVIDER_XSMHK);
}
//
// XMRB ...
bool short13 =
//
// Starting Conditions ...
@@ -1438,15 +1699,17 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.sslcConditions.isBearish &&
conditions.hullConditions.isBearish
//
;
if (short13)
{
//
pusher++;
provider = ToString(PROVIDER_XMRB);
}
//
// XSSLC ...
bool short14 =
//
// Starting Conditions ...
@@ -1463,15 +1726,17 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.hullConditions.isBearish
//
;
if (short14)
{
//
pusher++;
provider = ToString(PROVIDER_XSSLC);
}
//
// XHULL ...
bool short15 =
//
// Starting Conditions ...
@@ -1488,12 +1753,41 @@ struct X121SignalGenerator
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.sslcConditions.isBearish
//
;
if (short15)
{
//
pusher++;
provider = ToString(PROVIDER_XHULL);
}
//
// XASCT ...
bool short16 =
//
// Starting Conditions ...
conditions.asctConditions.isShortSignal &&
//
// Verifications ...
conditions.tdConditions.isBearish &&
conditions.matdConditions.isBearish &&
conditions.adxtdConditions.isStrong &&
conditions.adxtdConditions.isBearish &&
conditions.strConditions.isTrendBearish &&
conditions.cheConditions.isStrongBearish &&
conditions.hkConditions.isHKBearish &&
conditions.hkConditions.isSMHKBearish &&
conditions.mrbConditions.isFastUnderSlow &&
conditions.hullConditions.isBearish &&
conditions.sslcConditions.isBearish
//
;
if (short15)
{
//
pusher++;
provider = ToString(PROVIDER_XASCT);
}
//
@@ -1501,7 +1795,6 @@ struct X121SignalGenerator
//
pusher >= 1 &&
!isOSCLongVerified &&
conditions.asctConditions.isShortSignal &&
bearishScore > bullishScore * 2 &&
(
//
@@ -1563,6 +1856,10 @@ struct X121SignalGenerator
//
short15
//
||
//
short16
//
)
//
;
@@ -1577,6 +1874,7 @@ struct X121SignalGenerator
X121SetupConditions &conditions, // Conditions
XSignal &signal, // Signal if Exists
int &pusher, // Pushers
string &provider, // Signal Provider Name
bool _allowLong, // Allow Long Signals
bool _allowShort, // Allow Short Signals
double _volume = 0.01, // Volume
@@ -1603,7 +1901,8 @@ struct X121SignalGenerator
? false
: HasLongConditions(
conditions,
pusher //
pusher,
provider //
);
//
@@ -1612,7 +1911,8 @@ struct X121SignalGenerator
? false
: HasShortConditions(
conditions,
pusher //
pusher,
provider //
);
//
@@ -1622,6 +1922,12 @@ struct X121SignalGenerator
return result;
}
//
string mProvider =
IsValid(provider)
? provider
: GetTag();
//
// Prepare Signals ...
ENUM_POSITION_TYPE mType =
@@ -1658,7 +1964,7 @@ struct X121SignalGenerator
//
result = signal.Prepare(
conditions.symbol,
GetTag() + ToString(pusher),
mProvider,
conditions.period,
mType,
X_ORDER_MODE_MARKET,
+233 -33
View File
@@ -42,9 +42,12 @@ struct XSignalInfo
datetime time; // Issue Time (Open Position)
//
double profit; // Profit on Close
datetime endTime; // End Time
string message; // Close Reason
double profit; // Profit on Close
double commission; // Commission
double swap; // Swap
double volume; // Volume
datetime endTime; // End Time
string message; // Close Reason
//
double bullishScore; // Bullish Score On Signal Time
@@ -72,8 +75,13 @@ struct XSignalInfo
ticket = 0;
symbol = NULL;
period = NULL;
provider = NULL;
pushers = 0;
time = NULL;
profit = 0;
commission = 0;
swap = 0;
volume = 0;
endTime = NULL;
message = NULL;
bullishScore = 0;
@@ -86,6 +94,8 @@ struct XSignalInfo
bool Fill(
int _pushers,
XSignal &_signal,
double _bullishScore,
double _bearishScore,
X121SetupConditions &_conditions //
)
{
@@ -117,6 +127,10 @@ struct XSignalInfo
signal = _signal;
conditions = _conditions;
//
bullishScore = _bullishScore;
bearishScore = _bearishScore;
//
return result;
}
@@ -186,6 +200,44 @@ struct XSignalInfo
return result;
}
//
int GetAge()
{
//
int result = -1;
//
if (!IsValid(symbol) ||
!IsValid(time) ||
!IsValid(endTime) ||
!IsValid(period))
{
return result;
}
//
int startIndex = iBarShift(
symbol,
period,
time,
false //
);
//
int endIndex = iBarShift(
symbol,
period,
endTime,
false //
);
//
result = MathAbs(startIndex - endIndex);
//
return result;
}
//
string GetFileName()
{
@@ -205,7 +257,7 @@ struct XSignalInfo
provider + "_" +
ToString(ticket) + "_" +
ToString(period) + "_" +
ToString(time)
ToFormatString(time)
//
;
@@ -214,7 +266,7 @@ struct XSignalInfo
}
//
string ToModelString()
string ToString()
{
//
string result = NULL;
@@ -225,24 +277,34 @@ struct XSignalInfo
false, // Only Commons ...
true, // Only Conditions ...
false, // Include Score ...
false // Include False Conditions ...ّ
false // Include False Conditions ...
);
//
int age = GetAge();
//
result =
//
ToString("Ticket", ticket) +
ToString("Symbol", symbol) +
ToString("Period", period) +
ToString("Pushers", pushers) +
ToString("Provider", provider) +
ToString("Time", time) +
ToString("BullishScore", bullishScore) +
ToString("BearishScore", bearishScore) +
ToString("Volume", volume) +
ToString("Profit", profit) +
ToString("Commission", commission) +
ToString("Swap", swap) +
ToString("End Time", endTime) +
ToString("Age", age) +
ToString("Message", message) +
"-------------" + "\n" +
ToString("Signal", signal.ToModelString()) +
ToString("Conditions", conditionsStr) +
ToString("Signal", "\n" + signal.ToString()) +
"-------------" + "\n" +
ToString("Conditions", "\n" + conditionsStr) +
//
""
//
@@ -315,7 +377,7 @@ public:
}
//
string content = item.ToModelString();
string content = item.ToString();
result = IsValid(content);
if (!result)
{
@@ -368,7 +430,7 @@ private:
//
result =
//
mPath + "\\" + fileName
mPath + "\\" + fileName + ".x121.log"
//
;
@@ -517,6 +579,63 @@ public:
mAllowShort = value;
}
//
double Volume()
{
return mVolume;
}
//
void Volume(double value)
{
//
if (value < 0.01)
{
value = 0.01;
}
//
mVolume = value;
}
//
double TPPoint()
{
return mTPPoint;
}
//
void TPPoint(double value)
{
//
if (value < 0)
{
value = 0;
}
//
mTPPoint = value;
}
//
double SLPoint()
{
return mSLPoint;
}
//
void SLPoint(double value)
{
//
if (value < 0)
{
value = 0;
}
//
mSLPoint = value;
}
//
bool IsEnable()
{
@@ -584,25 +703,39 @@ public:
string separator = "\n";
//
X121SetupConditions cConditions;
X121SetupConditions sConditions;
X121SetupConditions mConditions;
X121SetupConditions lConditions;
X121SetupConditions hConditions;
//
// Current ...
XSignal cSignal;
XSignal sSignal;
XSignal mSignal;
XSignal lSignal;
XSignal hSignal;
int cPusher = 0;
string cProvider = NULL;
X121SetupConditions cConditions;
//
int cPusher = 0;
// Short ...
XSignal sSignal;
int sPusher = 0;
string sProvider = NULL;
X121SetupConditions sConditions;
//
// Medium ...
XSignal mSignal;
int mPusher = 0;
string mProvider = NULL;
X121SetupConditions mConditions;
//
// Long ...
XSignal lSignal;
int lPusher = 0;
string lProvider = NULL;
X121SetupConditions lConditions;
//
// Hind ...
XSignal hSignal;
int hPusher = 0;
string hProvider = NULL;
X121SetupConditions hConditions;
//
X121SignalGenerator signalGenerator;
@@ -661,8 +794,12 @@ public:
cConditions,
cSignal,
cPusher,
cProvider,
mAllowLong,
mAllowShort //
mAllowShort,
mVolume,
mSLPoint,
mTPPoint //
);
//
@@ -714,8 +851,12 @@ public:
sConditions,
sSignal,
sPusher,
sProvider,
mAllowLong,
mAllowShort //
mAllowShort,
mVolume,
mSLPoint,
mTPPoint //
);
//
@@ -767,8 +908,12 @@ public:
mConditions,
mSignal,
mPusher,
mProvider,
mAllowLong,
mAllowShort //
mAllowShort,
mVolume,
mSLPoint,
mTPPoint //
);
//
@@ -820,8 +965,12 @@ public:
lConditions,
lSignal,
lPusher,
lProvider,
mAllowLong,
mAllowShort //
mAllowShort,
mVolume,
mSLPoint,
mTPPoint //
);
//
@@ -873,8 +1022,12 @@ public:
hConditions,
hSignal,
hPusher,
hProvider,
mAllowLong,
mAllowShort //
mAllowShort,
mVolume,
mSLPoint,
mTPPoint //
);
//
@@ -907,6 +1060,8 @@ public:
AddNewSignal(
cPusher,
cSignal,
mBullishScore,
mBearishScore,
cConditions //
);
}
@@ -925,6 +1080,8 @@ public:
AddNewSignal(
sPusher,
sSignal,
mBullishScore,
mBearishScore,
sConditions //
);
}
@@ -943,6 +1100,8 @@ public:
AddNewSignal(
mPusher,
mSignal,
mBullishScore,
mBearishScore,
mConditions //
);
}
@@ -961,6 +1120,8 @@ public:
AddNewSignal(
lPusher,
lSignal,
mBullishScore,
mBearishScore,
lConditions //
);
}
@@ -979,6 +1140,8 @@ public:
AddNewSignal(
hPusher,
hSignal,
mBullishScore,
mBearishScore,
hConditions //
);
}
@@ -1083,6 +1246,7 @@ public:
// Tools For Signal Info Collect ...
//
// Used for Signal Info States ...
void OnDealsChangedHandler(int count)
{
//
@@ -1090,6 +1254,8 @@ public:
bool hasDeal = mTrader.GetLastDeal(deal);
if (hasDeal)
{
//
// Update Signal Info State ...
UpdateSignalState(deal);
}
}
@@ -1115,10 +1281,9 @@ private:
//
bool mAllowLong; // Allow Long
bool mAllowShort; // Allow Short
//
// TODO:
// Add Volume and TP SL Points as Properties here ...
double mVolume; // Volume
double mTPPoint; // TP Point
double mSLPoint; // SL Point
//
XSignalInfo mSignalInfos[];
@@ -1242,6 +1407,8 @@ private:
void AddNewSignal(
int pusher,
XSignal &signal,
double bullishScore,
double bearishScore,
X121SetupConditions &conditions //
)
{
@@ -1250,6 +1417,8 @@ private:
bool isFilled = info.Fill(
pusher,
signal,
bullishScore,
bearishScore,
conditions //
);
@@ -1286,11 +1455,42 @@ private:
//
mSignalInfos[infoIDX].time = deal.time;
mSignalInfos[infoIDX].ticket = deal.positionId;
Print("Open Position: " + ToString(deal.positionId));
mSignalInfos[infoIDX].commission = deal.commission;
mSignalInfos[infoIDX].signal.positionId = deal.positionId;
}
else if (deal.entry == DEAL_ENTRY_OUT)
{
Print("Close Position: " + ToString(deal.positionId));
//
mSignalInfos[infoIDX].swap = deal.swap;
mSignalInfos[infoIDX].endTime = deal.time;
mSignalInfos[infoIDX].profit = deal.profit;
//
string message =
//
deal.reason == DEAL_REASON_TP
? "TP"
: deal.reason == DEAL_REASON_SL
? "SL"
: IsValid(deal.comment)
? deal.comment
: "Force Close ..."
//
;
mSignalInfos[infoIDX].message = message;
//
// Now we can Save Signal Info and Remove it from mSignal Infos ...
bool isSaved = mSignalCollector.Save(mSignalInfos[infoIDX]);
if (isSaved)
{
//
ArrayRemove(
mSignalInfos,
infoIDX,
1 //
);
}
}
}