Unknown Symbols in Strategy Tester but not Live Data in Metatrader

Unknown Symbols in Strategy Tester but not Live Data in Metatrader

Manage alerts

Loading saved threads...

Jake Bickle · External communityPost link
External question — Stack Overflow Stack Exchange Author: Jake Bickle Original post: https://stackoverflow.com/questions/63551652 License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/ Adaptation: HTML converted to plain text; contact email addresses removed. In the strategy tester there are many symbols that I cannot select or get information from in my expert advisor (EA). In fact, it seems as if there's a bug within MQL4 itself. I'm attempting to automatically buy and sell in my EA, and it's important that I'm able to get symbol info from other symbols to calculate the correct amount of lots I need. This doesn't seem to be possible inside the strategy tester. The following EA provides different results when ran in the debugger vs a strategy tester (both using the GBPCAD chart). int OnInit(){ if (!SymbolSelect("USDCAD", true)) Print("Couldn't select USDCAD"); if (SymbolInfoInteger("USDCAD", SYMBOL_VISIBLE)) Print("USDCAD visible"); else Print("USDCAD isn't visible"); double e; if (SymbolInfoDouble("USDCAD", SYMBOL_ASK, e)) Print("It worked"); else Print("It didn't work, ", GetLastError()); return(INIT_SUCCEEDED); } On the debugger in live data, the following is printed: 2020.08.23 11:25:20.011 Exit Backtester GBPCAD,Daily: USDCAD visible 2020.08.23 11:25:20.011 Exit Backtester GBPCAD,Daily: It worked On the strategy tester near the beginning of 2017, the following is printed: 2020.08.23 11:26:01.200 2017.02.09 00:00:00 Exit Backtester GBPCAD,Daily: Couldn't select USDCAD 2020.08.23 11:26:01.200 2017.02.09 00:00:00 Exit Backtester GBPCAD,Daily: USDCAD isn't visible 2020.08.23 11:26:01.200 2017.02.09 00:00:00 Exit Backtester GBPCAD,Daily: It didn't work, 4106 Where error code 4106, according to the documentation , states that the symbol is not selected in Market Watch or found in the list of "available ones". However, running the following code: void PrintSymbols(){ for (int i = 0; i < SymbolsTotal(true); ++i){ Print(i, " ", SymbolName(i, true)); } } int OnInit(){ PrintSymbols(); return(INIT_SUCCEEDED); } Prints the same results in both cases, among them being USDCAD: 2020.08.23 11:38:03.235 Exit Backtester GBPCAD,Daily: 18 USDCAD So SymbolName proves that USDCAD is available, while SymbolSelect, SymbolInfoInteger, and SymbolInfoDouble prove otherwise. Why is this the case?
Quote
Report
Jake Bickle · External communityPost link
External answer — Stack Overflow Stack Exchange Author: Jake Bickle Original post: https://stackoverflow.com/a/63570107 License: CC BY-SA 4.0 — https://creativecommons.org/licenses/by-sa/4.0/ Adaptation: HTML converted to plain text; contact email addresses removed. I don't believe it's possible. The strategy tester only loads tick data from the current chart and not another market's data. Because of this, all other markets don't exist and thus not able to be selected.
Quote
Report

Post Reply

Checking account access…