[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 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 - 전체 줄을 읽지 않고 파일에서 포인터의 현재 위치에서 다음 구분 기호까지 읽습니다.

[Deleted]  

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

 
kara100 писал(а) >>

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


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

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

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

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


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

[Deleted]  
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, что неправильно. то есть, где-то тут ошибка в преобразовании типов...

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

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