Почему SymbolName() ничего не возвращает?

В сценарии, предназначенном для перебора всех доступных символов и регистрации доступной информации:

int i, j, file_handle;
string InpDirectoryName, InpFileName, Textwrite, mySymbol;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
int MIIds[29]; // 0-28 market information type IDs
int ST;
MIIds[0] = 1;
MIIds[1] = 2;
MIIds[2] = 5;
for(i=3;i<=28; i++)
    MIIds[i] = i+6;
ST = SymbolsTotal(false);
InpDirectoryName = "";
InpFileName = "Test.csv";
Textwrite = "";
file_handle=FileOpen(InpDirectoryName+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV); 
if(file_handle!=INVALID_HANDLE) 
   {
   for(i=1;i<=ST; i++)
      Print(i);

Пока все хорошо, я получаю список распечатанных позиций списка символов. Однако при попытке вызвать соответствующий SymbolName(),

    mySymbol = SymbolName(i, false); 

нет дальнейшего вывода на печать со следующей строки:

    Print(mySymbol);

Результат выглядит следующим образом:

0   12:29:56.630    Script test EURUSD,H4: loaded successfully
0   12:29:56.667    test EURUSD,H4: initialized
0   12:29:56.669    test EURUSD,H4: 1
...
0   12:29:56.670    test EURUSD,H4: 68
0   12:29:56.670    test EURUSD,H4: 
0   12:29:56.670    test EURUSD,H4: uninit reason 0
0   12:29:56.676    Script test EURUSD,H4: removed

Как видите, кодов ошибок нет, только пустая строка вывода перед деинициализацией... Это остальная часть кода для полноты картины, хотя сейчас она не является актуальной:

    SymbolSelect(mySymbol,true);
    Textwrite = mySymbol;
    for(j=0;i<=28; j++)
        Textwrite = Textwrite + "," + MarketInfo(mySymbol,j);
    FileWrite(file_handle,Textwrite);
   FileClose(file_handle);
   }
else Print("Operation FileOpen failed, error ",GetLastError()); 
  }

Любые мысли с благодарностью получены


person Andy Thompson    schedule 15.10.2020    source источник


Ответы (1)


Просто мысль, взгляните на:

https://docs.mql4.com/files/filereadstring

Похоже, вы открываете файл, но затем вам нужно использовать команду FileReadString, чтобы извлечь Symbolname из файла CSV. Конечно, Symbolname должен быть в CSV.

person Mike    schedule 24.12.2020
comment
лол - конечно - спасибо - person Andy Thompson; 08.01.2021