[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 471

 
Axmed писал(а) >>


CSV - 쉼표 로 구분된 값. 기본 구분 기호인 ","입니다. ";"으로 구분 훨씬 덜 일반적이며 MQL4에서 일반적으로 지원되는지 확실하지 않습니다.


int 파일열기 ( 문자열 파일 이름, int 모드, int 구분 기호=';')
입력 및/또는 출력을 위해 파일을 엽니다. 열린 파일의 파일 설명자를 반환하거나 실패 시 -1을 반환합니다. 오류에 대한 자세한 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다.
참고: 파일은 terminal_dir\experts\files 폴더(Expert Advisor를 테스트하는 경우에는 terminal_dir\tester\files ) 또는 그 하위 폴더에서만 열 수 있습니다.
FILE_BIN 및 FILE_CSV 모드를 동시에 사용할 수 없습니다.
FILE_WRITE가 FILE_READ와 결합되지 않으면 길이가 0인 파일이 열립니다. 파일을 열기 전에 파일에 데이터가 있더라도 파기됩니다. 기존 파일에 데이터를 추가해야 하는 경우 FILE_READ | 파일_쓰기.
FILE_READ가 FILE_WRITE와 결합되지 않으면 파일이 이미 있는 경우에만 파일이 열립니다. 파일이 존재하지 않으면 FILE_WRITE 모드를 사용하여 생성할 수 있습니다.
단일 실행 모듈 내에서 최대 32개의 파일을 동시에 열 수 있습니다. 한 모듈에서 열린 파일 디스크립터는 다른 모듈(라이브러리)로 전달할 수 없습니다.
옵션:
파일 이름 - 파일 이름.
방법 - 개봉방법. 하나의 값 또는 FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE의 조합일 수 있습니다.
구분자 - csv 파일의 구분 문자입니다. 기본 문자는 ';'입니다.
예시:
 정수 핸들;
  handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');
  if(핸들<1)
    {
     Print("my_data.dat 파일을 찾을 수 없습니다, 마지막 오류 ", GetLastError());
     반환(거짓);
    }

또한 도움말을 읽어야 합니다.
 
Axmed >> :


내가 쓴 글에서 구체적으로 어떤 점이 마음에 들지 않았습니까?

네, 그게 아닙니다.
";" - 이것은 기본 구분 기호로 간주되는 문자입니다.
FileReadString - 전체 줄을 읽지 않고 파일에서 포인터의 현재 위치에서 다음 구분 기호까지 읽습니다.

 

안녕하세요! 커스텀 인디케이터 에서 필요한 변수를 호출하는 방법을 알려주세요, GlobalVariableSet() / GlobalVariableGet() 을 시도했는데 다른 Expert Advisor에서 호출되는 것으로 나타났지만 인디케이터에서는 작동하지 않습니다. 미리 감사합니다. ..

 
kara100 писал(а) >>

안녕하세요! 커스텀 인디케이터에서 필요한 변수를 어떻게 호출하는지 알려주세요, GlobalVariableSet() / GlobalVariableGet() 을 시도했는데 다른 Expert Advisor에서 호출한 것으로 나타났는데 인디케이터에서는 작동하지 않습니다. 미리 감사합니다. ..


어떤 변수와 어떤 지표를 원하십니까?
 

+MP의 가격(228행) - (가격) 수준의 값이 필요합니다.

파일:
ymp_1.mq4  6 kb
 
kara100 писал(а) >>

+MP의 가격(라인 228) - (가격) 수준의 값이 필요합니다.


상금 변수를 전역 수준으로 이동하고 GlobalVariableSet("55", Prise); start() 함수의 시작 부분과 다른 프로그램에서 즉시 다음과 같이 가져옵니다. double x=GlobalVariableGet("55");

 
Techno писал(а) >>


상금 변수를 전역 수준으로 이동하고 GlobalVariableSet("55", Prise); start() 함수의 시작 부분과 다른 프로그램에서 즉시 다음과 같이 가져옵니다. double x=GlobalVariableGet("55");


일종의 시도 ... 전역 변수가 설명되지 않은 것으로 기록됩니다. 전역변수는 인디케이터를 종료하지 않습니다.. 다시 시도하겠습니다.

 
kara100 писал(а) >>


like try ... 전역 변수가 설명되지 않았다고 기록합니다. 전역변수는 인디케이터를 종료하지 않습니다.. 다시 시도하겠습니다.


여기에 코드를 게시하는 방법을 수정합니다.
 
친구 여러분, 응답해 주셔서 대단히 감사합니다. 문자열을 이중으로 변환하는 방법에 대한 설명
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] );

문자열 배열은 일반적으로 파일에서 채워집니다. 그러나 이러한 문자열을 이중으로 변환해야 합니다.
이렇게 하는 것:
x1[k]=StrToDouble(ss1[k]);
그러나 Alert에 표시될 때 x1[0] = 0, 이는 잘못된 것입니다. 즉, 어딘가에 유형 변환에 오류가 있습니다 ...

이 상황을 해결하는 방법?
 
Morzh09 >> :

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

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

전체 스크립트를 게시할 수 있습니까? 배열 변수 선언 등과 함께 의미합니다.

사유: