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
+64 -244
View File
@@ -70,6 +70,40 @@ enum ENUM_X_ORDER_MODES
X_ORDER_MODE_STOP_LIMIT, // Pending Stop Limit Order
};
//
string ToString(ENUM_X_ORDER_MODES value)
{
//
string result = NULL;
//
switch (value)
{
//
case X_ORDER_MODE_MARKET:
result = "Market";
break;
//
case X_ORDER_MODE_LIMIT:
result = "Limit";
break;
//
case X_ORDER_MODE_STOP:
result = "Stop";
break;
//
case X_ORDER_MODE_STOP_LIMIT:
result = "StopLimit";
break;
}
//
return result;
}
//
// Select Positions Type ...
enum ENUM_X_POSITION_SELECT_METHODS
@@ -1282,250 +1316,6 @@ struct XSignal
return result;
}
//
// Data Collecotr ...
//
// Check this instance is Same os Given instance or not ...
bool IsSameAs(
const XSignal &value // instance for Compare
)
{
//
bool result = false;
//
result =
//
type == value.type &&
mode == value.mode &&
entry == value.entry &&
period == value.period &&
symbol == value.symbol &&
provider == value.provider &&
positionId == value.positionId
//
;
//
return result;
}
//
// Find index in a Collection ...
int FindIndex(
const XSignal &values[] // Collection to Find
)
{
//
return FindIndex(
this,
values
//
);
}
//
// Check Items Passed Specific Filters or not ...
bool IsFiltersPassed(
string mSymbol = NULL, // Trading Symbol
string mProvider = NULL, // Signal Provider
ENUM_TIMEFRAMES mPeriod = NULL, // Trading Timeframe
ENUM_POSITION_TYPE mType = NULL, // Long (Buy), Short (Sell)
ENUM_X_ORDER_MODES mMode = NULL // Execution Mode
)
{
//
bool result = false;
//
result =
//
// Symbol Filter ...
IsSymbolFilterPassed(
mSymbol,
this
//
)
//
&&
//
// Provider Filter ...
IsProviderFilterPassed(
mProvider,
this
//
)
//
&&
//
// Period Filter ...
IsPeriodFilterPassed(
mPeriod,
this
//
)
//
&&
//
// Type Filter ...
IsTypeFilterPassed(
mType,
this
//
)
//
&&
//
// Mode Filter ...
IsModeFilterPassed(
mMode,
this
//
)
//
;
//
return result;
}
//
string GetToken()
{
return GetToken(this);
}
//
bool IsModelValid()
{
return IsValid();
}
//
// To String Representation ...
string ToModelString()
{
//
string result = NULL;
//
if (!IsValid())
{
return result;
}
//
// For Modeling a Signal we Only Used:
// - Period;
// - Provider;
// - Type;
// - Mode;
// - Symbol;
// - PositionID;
// - Entry;
// - Volume;
// - TPS;
// - SLS;
// - Issue Time;
//
int iPeriodInt = (int)period;
//
string tpsStr = Surround(XTPToken, tp);
string slsStr = Surround(XSLToken, sl);
string typeStr = Surround(XTypeToken, type);
string modeStr = Surround(XModeToken, mode);
string timeStr = Surround(XTimeToken, time);
string entryStr = Surround(XEntryToken, entry);
string SymbolStr = Surround(XSymbolToken, symbol);
string volumeStr = Surround(XVolumeToken, volume);
string positionIdStr = Surround(XIDToken, positionId);
string periodStr = Surround(XPeriodToken, iPeriodInt);
string providerStr = Surround(XProviderToken, provider);
//
result =
//
GetToken() +
"[" +
//
periodStr +
providerStr +
typeStr +
modeStr +
SymbolStr +
positionIdStr +
entryStr +
volumeStr +
tpsStr +
slsStr +
timeStr +
//
"]"
//
;
//
return result;
}
//
// Parse String Model and Fill Available
// Items ...
bool ParseModel(string value)
{
//
bool result = false;
//
Clean();
//
if (!IsValid(value))
{
return false;
}
//
// For Modeling a Signal we Only Used:
// - Period;
// - Provider;
// - Type;
// - Mode;
// - Symbol;
// - PositionID;
// - Entry;
// - Volume;
// - TP;
// - SL;
// - Issue Time;
//
tp = ParseDoubleSurrounded(value, XTPToken);
sl = ParseDoubleSurrounded(value, XSLToken);
positionId = ParseLongSurrounded(value, XIDToken);
entry = ParseDoubleSurrounded(value, XEntryToken);
volume = ParseDoubleSurrounded(value, XVolumeToken);
//
time = ParseTimeSurrounded(value, XTimeToken);
symbol = ParseStringSurrounded(value, XSymbolToken);
provider = ParseStringSurrounded(value, XProviderToken);
type = ((ENUM_POSITION_TYPE)ParseIntSurrounded(value, XTypeToken));
mode = ((ENUM_X_ORDER_MODES)ParseIntSurrounded(value, XModeToken));
period = ((ENUM_TIMEFRAMES)ParseIntSurrounded(value, XPeriodToken));
//
// Validate ...
result = IsValid();
;
//
return result;
}
//
// Draw Signal on Chart ...
bool Draw(
@@ -1681,6 +1471,36 @@ struct XSignal
//
return result;
}
//
// Retrieve String Representation of Signal ...
string ToString()
{
//
string result = NULL;
//
result =
//
ToString("Symbol", symbol) +
ToString("Period", period) +
ToString("Provider", provider) +
ToString("Type", type) +
ToString("Mode", mode) +
ToString("Volume", volume) +
ToString("Entry", entry) +
ToString("TP", tp) +
ToString("SL", sl) +
ToString("Time", time) +
ToString("Comment", comment) +
//
""
//
;
//
return result;
}
};
//