[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 471

 
Axmed писал(а) >>


CSV - Comma Separated Values. Именно "," является используемым по умолчанию разделителем. Разделение с помощью ";" распространено гораздо реже, и я не уверен, что в MQL4 оно вообще поддерживается.


int FileOpen( string filename, int mode, int delimiter=';')
Открывает Файл для ввода и/или вывода. Возвращает файловый описатель открытого файла или -1 в случае неудачи. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
Замечания: файлы могут открываться только в папке каталог_терминала\experts\files (каталог_терминала\tester\files в случае тестирования эксперта) или ее подпапках.
Нельзя одновременно использовать режимы FILE_BIN и FILE_CSV.
Если FILE_WRITE не комбинируется с FILE_READ, то будет открыт файл нулевой длины. Даже если до открытия в файле были данные, то они будут уничтожены. Если необходимо дописывать данные в существующий файл, то его нужно открывать, используя комбинацию FILE_READ | FILE_WRITE.
Если FILE_READ не комбинируется с FILE_WRITE, то файл будет открыт только в том случае, если он уже существует. Если файл не существует, то создать его можно, используя режим FILE_WRITE.
Одновременно может быть открыто не более 32 файлов в пределах одного исполняемого модуля. Описатели файлов, открытых в одном модуле, нельзя передавать в другие модули (библиотеки).
Параметры:
filename - Имя файла.
mode - Способ открытия. Это может быть одна величина или их комбинация: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE.
delimiter - Знак разделителя для csv-файлов. По умолчанию применяется символ ';'.
Пример:
  int handle;
  handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');
  if(handle<1)
    {
     Print("Файл my_data.dat не обнаружен, последняя ошибка ", GetLastError());
     return(false);
    }

Справку читать тоже надо.
 
Axmed >>:


Что конкретно Вам не понравилось в том что я пишу?..

Да всё не то.
";" - именно этот символ считается разделителем по умолчанию.
FileReadString - читает не всю строку, а от текущего положения указателя в файле до следующего разделителя.

[Deleted]  

Здравствуйте! Подскажите, пожалуйста, как можно вызвать необходимую переменную из пользовательского индикатора, пробовал GlobalVariableSet() / GlobalVariableGet() - получается вызвать из другого эксперта, а из индикатора не получается.. Заранее благодарен...

 
kara100 писал(а) >>

Здравствуйте! Подскажите, пожалуйста, как можно вызвать необходимую переменную из пользовательского индикатора, пробовал GlobalVariableSet() / GlobalVariableGet() - получается вызвать из другого эксперта, а из индикатора не получается.. Заранее благодарен...


какую именно переменную хочешь получить и из какого индикатора?
[Deleted]  

Price из +MP (228 строка) - мне нужны значения (ценовые) уровней

Файлы:
ymp_1.mq4  6 kb
 
kara100 писал(а) >>

Price из +MP (228 строка) - мне нужны значения (ценовые) уровней


попробуй переменную prise переместить на глобальный уровнь, а строчку GlobalVariableSet("55", prise); сразу в начале функции start() а из другой проги доставай вот так double x=GlobalVariableGet("55");

[Deleted]  
Techno писал(а) >>


попробуй переменную prise переместить на глобальный уровнь, а строчку GlobalVariableSet("55", prise); сразу в начале функции start() а из другой проги доставай вот так double x=GlobalVariableGet("55");


вроде пробовал... пишет, что глобальная переменная не описана, т.е. из индикатора глобальные переменные не выходят.. Ещё раз попробую..

 
kara100 писал(а) >>


вроде пробовал... пишет, что глобальная переменная не описана, т.е. из индикатора глобальные переменные не выходят.. Ещё раз попробую..


как поправишь код выложи его сюда
[Удален]  
Друзья, спасибо большое, что откликнулись. уточнение, как преобразовать string в double?
StrToDouble() - не прокатывает :(

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
if(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..
Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера
else // При любой другой ошибке..
Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
PlaySound("Bzrrr.wav"); // Звуковое сопровождение
return; // Выход из start()
}
k=0;
while(FileIsEnding(Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла
//--------------------------------------------------------- 5 --
ss1[k] = (FileReadString(Handle));
x1[k]=StrToDouble(ss1[k]);//
ss2[k] = (FileReadString(Handle));
rr1[k] = (FileReadString(Handle));
rr2[k] = (FileReadString(Handle));
k=k+1;
if(FileIsEnding(Handle)==true) // Файловый указатель в конце
break; // Выход из чтения и рисования
}
FileClose( Handle ); // Закрываем файл
PlaySound("bulk.wav"); // Звуковое сопровождение
//-----------------------------------------------
Alert(" ", ss1[0], " ", ss2[0], " ", rr1[0], " ", rr2[0], " x1== ", x1[0] );

Строковые массивы заполняются из файла нормально. Но, необходимо преобразовать эти строки в double.
делаю это:
x1[k]=StrToDouble(ss1[k]);
но, при выводе в Алерте, x1[0] = 0, что неправильно. то есть, где-то тут ошибка в преобразовании типов...

Как такую ситуацию исправить?
 
Morzh09 >>:

Друзья, спасибо большое, что откликнулись. уточнение, как преобразовать string в double?
StrToDouble() - не прокатывает :( 
Строковые массивы заполняются из файла нормально. Но, необходимо преобразовать эти строки в double.
делаю это:
x1[k]=StrToDouble(ss1[k]);
но, при выводе в Алерте, x1[0] = 0, что неправильно. то есть, где-то тут ошибка в преобразовании типов...

Как такую ситуацию исправить?

Вы не моглы бы весь скрипт выложить? Я имею ввиду вместе с объявлениями переменных массивов и т.д.