mirror of
https://github.com/alexcercos/AlgoMasterNNFX-V1.git
synced 2025-07-30 07:27:50 +00:00
140 lines
No EOL
4.1 KiB
MQL5
140 lines
No EOL
4.1 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| FUNCTIONS FOR BOTH TESTERS |
|
|
//+------------------------------------------------------------------+
|
|
|
|
void ProcessSymbolArray(string custom_string, int pair_preset, string &symbols_to_trade[], int &total_symbols)
|
|
{
|
|
string newSymbolString;
|
|
|
|
if (pair_preset == ALL_SYMBOLS || pair_preset == ALL_SUBSTITUTE || pair_preset == ALL_SUFFIX)
|
|
{
|
|
newSymbolString = "EURJPY,EURCHF,EURCAD,EURUSD,EURNZD,EURAUD,EURGBP,GBPJPY,GBPCHF,GBPCAD,GBPUSD,GBPNZD,GBPAUD,AUDJPY,AUDCHF,AUDCAD,AUDUSD,AUDNZD,NZDJPY,NZDCHF,NZDCAD,NZDUSD,USDJPY,USDCHF,USDCAD,CADJPY,CADCHF,CHFJPY";
|
|
}
|
|
else if (pair_preset == BT_ONLY)
|
|
{
|
|
newSymbolString = "AUDCAD,AUDNZD,CHFJPY,EURGBP,EURUSD";
|
|
}
|
|
else if (pair_preset == ACTIVE_ONLY)
|
|
{
|
|
newSymbolString = Symbol();
|
|
}
|
|
else if (pair_preset == ALL_AND_CUSTOM)
|
|
{
|
|
newSymbolString = "EURJPY,EURCHF,EURCAD,EURUSD,EURNZD,EURAUD,EURGBP,GBPJPY,GBPCHF,GBPCAD,GBPUSD,GBPNZD,GBPAUD,AUDJPY,AUDCHF,AUDCAD,AUDUSD,AUDNZD,NZDJPY,NZDCHF,NZDCAD,NZDUSD,USDJPY,USDCHF,USDCAD,CADJPY,CADCHF,CHFJPY";
|
|
if (custom_string != "")
|
|
newSymbolString = newSymbolString + ","+custom_string;
|
|
}
|
|
else if (pair_preset == SYMBOL_FILE)
|
|
{
|
|
int file_handle = FileOpen(custom_string, FILE_TXT|FILE_COMMON|FILE_READ|FILE_ANSI|FILE_SHARE_READ);
|
|
|
|
if (file_handle != INVALID_HANDLE)
|
|
{
|
|
FileReadArray(file_handle, symbols_to_trade);
|
|
FileClose(file_handle);
|
|
}
|
|
else
|
|
{
|
|
Print("SYMBOL FILE \"" + custom_string + "\" NOT FOUND");
|
|
}
|
|
}
|
|
else //ACTIVE_ONLY
|
|
{
|
|
newSymbolString = custom_string;
|
|
}
|
|
|
|
if (pair_preset!=SYMBOL_FILE)
|
|
{
|
|
StringReplace(newSymbolString, " ", "");
|
|
StringSplit(newSymbolString, ',', symbols_to_trade);
|
|
}
|
|
|
|
total_symbols = ArraySize(symbols_to_trade);
|
|
int i;
|
|
|
|
for (i=0; i<total_symbols; i++)
|
|
{
|
|
TRIM_STRING_LEFT(symbols_to_trade[i]);
|
|
TRIM_STRING_RIGHT(symbols_to_trade[i]);
|
|
}
|
|
|
|
|
|
|
|
if (pair_preset == ALL_SUBSTITUTE)
|
|
{
|
|
string substitutions = custom_string;
|
|
StringReplace(substitutions, " ", "");
|
|
|
|
string subsPairs[];
|
|
StringSplit(substitutions, ',', subsPairs);
|
|
|
|
for (i=0; i<ArraySize(subsPairs); i++)
|
|
{
|
|
string swapPair[];
|
|
StringSplit(subsPairs[i], '/', swapPair);
|
|
|
|
if (ArraySize(swapPair) != 2) continue;
|
|
|
|
for (int k=0; k<total_symbols; k++)
|
|
{
|
|
if (symbols_to_trade[k] == swapPair[0])
|
|
{
|
|
if (swapPair[1]=="")
|
|
{
|
|
for (int d=k; d<total_symbols-1; d++)
|
|
{
|
|
symbolsToTrade[d] = symbolsToTrade[d+1];
|
|
}
|
|
total_symbols--;
|
|
ArrayResize(symbolsToTrade, total_symbols); //Delete last
|
|
}
|
|
else
|
|
symbols_to_trade[k] = swapPair[1];
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (pair_preset == ALL_SUFFIX)
|
|
{
|
|
string sufix = custom_string;
|
|
TRIM_STRING_LEFT(sufix);
|
|
TRIM_STRING_RIGHT(sufix);
|
|
|
|
for (int k=0; k<total_symbols; k++)
|
|
{
|
|
symbolsToTrade[k] = symbolsToTrade[k] + sufix;
|
|
}
|
|
}
|
|
|
|
string symbolsError[];
|
|
int starting = total_symbols;
|
|
|
|
for (int k=total_symbols-1; k>=0; k--)
|
|
{
|
|
|
|
#ifdef __MQL5__
|
|
SymbolSelect(symbols_to_trade[k], true);
|
|
bool isCustom;
|
|
if (!SymbolExist(symbolsToTrade[k], isCustom))
|
|
#else
|
|
MqlRates array[];
|
|
if (CopyRates(symbolsToTrade[k], PERIOD_CURRENT, 0, 1, array)<0)
|
|
#endif
|
|
{
|
|
int err=ArraySize(symbolsError);
|
|
ArrayResize(symbolsError, err+1, starting);
|
|
symbolsError[err]=symbols_to_trade[k];
|
|
|
|
symbols_to_trade[k] = symbols_to_trade[total_symbols-1];
|
|
total_symbols--;
|
|
ArrayResize(symbolsToTrade, total_symbols); //Delete last
|
|
}
|
|
}
|
|
|
|
for (int e=0; e<ArraySize(symbolsError); e++)
|
|
{
|
|
Print("SYMBOL NOT FOUND: \"", symbolsError[e], "\" (check if it is available with a different name)");
|
|
}
|
|
} |