В сценарии, предназначенном для перебора всех доступных символов и регистрации доступной информации:
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());
}
Любые мысли с благодарностью получены