MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 174

 
mila.com :

안녕하세요.

파일의 데이터를 히스토그램 형태로 표시할 수 있도록 도와주세요.

"file.txt" 파일에서 날짜는 다음과 같이 특정 숫자에 해당합니다.

2017년 3월 29일. 574391

2017년 3월 30일. 741308

2017년 3월 31일. 614367

파일에서 데이터를 가져와 다음과 같이 인쇄합니다.


막대의 크기로 히스토그램을 설정하여 인디케이터처럼 보이게 합니다)

따라서 데이터를 그래픽 버퍼에 넣고 인쇄하지 않습니다. 히스토그램을 작성하고 거기에 데이터를 게시해야 하는 날짜를 결정하십시오.
 
-Aleks- :

따라서 데이터를 그래픽 버퍼에 넣고 인쇄하지 않습니다. 히스토그램을 작성하고 거기에 데이터를 게시해야 하는 날짜를 결정하십시오.

거기에 어려움이 있습니다.

나는 일반적으로 파일에서 데이터를 수신한다는 것을 분명히 하기 위해 인쇄용으로 가져왔습니다.

적절한 할당 방법   날짜, 나는 전혀 모른다.

 
mila.com :

거기에 어려움이 있습니다.

나는 일반적으로 파일에서 데이터를 수신한다는 것을 분명히 하기 위해 인쇄용으로 가져왔습니다.

적절한 할당 방법   날짜, 나는 전혀 모른다.

파일에서 날짜를 가져 와서 날짜별로 막대 번호를 찾아 그립니다 ...
 
Alexey Viktorov :
파일에서 날짜를 가져 와서 날짜별로 막대 번호를 찾아 그립니다 ...

정확히 어떻게 할까요?

보여주세요.

 
mila.com :

정확히 어떻게 할까요?

보여주세요.

문자열 함수를 사용합니다. 특히

 string    StringSubstr (
   string   string_value,     // строка
   int      start_pos,         // с какой позиции начать
   int      length= 0            // длина извлекаемой строки
   );

0 위치에서 10자를 뽑아 문자열을 날짜로 변환합니다.

그러나 선에 막대 여는 시간 이 없으면 D1이 아닌 차트에서 히스토그램을 실행하면 모든 막대에 히스토그램이 표시되지 않습니다.

Строковые функции - Справочник MQL4
Строковые функции - Справочник MQL4
  • docs.mql4.com
Строковые функции - Справочник MQL4
 

친구! 주문이 열린 막대부터 시작하여 막대의 수 를 세는 함수를 작성하는 데 도움을 주세요.

예를 들어: 5번 막대에 미결 주문이 있는 경우 함수는 값 5를 반환해야 합니다.

 
Bek001 :

친구! 주문이 열린 막대부터 시작하여 막대의 수 를 세는 함수를 작성하는 데 도움을 주세요.

예를 들어: 5번 막대에 미결 주문이 있는 경우 함수는 값 5를 반환해야 합니다.

 int shift= iBarShift ( NULL ,PERIOD_СURRENT, OrderOpenTime ());
 
Alexey Viktorov :

문자열 함수를 사용합니다. 특히

0 위치에서 10자를 뽑아 문자열을 날짜로 변환합니다.

그러나 선에 막대 여는 시간 이 없으면 D1이 아닌 차트에서 히스토그램을 실행하면 모든 막대에 히스토그램이 표시되지 않습니다.

감사합니다 따로 날짜와 값을 따로 뽑습니다.

이제 이것으로 버퍼를 채우는 방법은 무엇입니까?

 for ( int i= 0 ; i<limit;i++){

string InpFileName= "file.txt" ;
 ResetLastError (); 
   int file_handle= FileOpen (InpFileName, FILE_TXT | FILE_READ );
   
   if (file_handle!= INVALID_HANDLE ) 
     { 
       PrintFormat ( "Файл %s открыт для чтения" ,InpFileName); 
       PrintFormat ( "Путь к файлу: %s\\Files\\" , TerminalInfoString ( TERMINAL_DATA_PATH )); 
       //--- вспомогательные переменные 
       int     str_size; 
       string str,str_b1,str_dat1; 
       //--- прочитаем данные из файла 
       while (! FileIsEnding (file_handle)) 
        { 
         //--- узнаем сколько символов использовано для записи времени 
         str_size= FileReadInteger (file_handle, INT_VALUE ); 
         //--- прочитаем строку 
         str= FileReadString (file_handle,str_size); 
         str_dat1= StringSubstr (str, 0 , 10 );
         str_b1= StringSubstr (str, 12 , 6 );
         //--- распечатаем строку 
         PrintFormat(str_dat1); 
         PrintFormat(str_b1);
        } 
       //--- закроем файл 
       FileClose (file_handle); 
       PrintFormat ( "Данные прочитаны, файл %s закрыт" ,InpFileName); 
     } 
   else 
       PrintFormat ( "Не удалось открыть файл %s, Код ошибки = %d" ,InpFileName, GetLastError ()); 
     //}
   
      Range_Buffer[i]= //???
      }
 
mila.com :

감사합니다, 따로 날짜와 을 따로 빼드립니다.

이제 이것으로 버퍼를 채우는 방법은 무엇입니까?

Range_Buffer[i]= значение //???

루프에 있어야 합니다. 헛되이 while 루프는 for 루프에서 만들어집니다. 한 줄을 읽고 날짜와 값을 추출하고 작업해야 합니다. 시간별로 막대 번호를 찾고 결과 값을 거기에 넣으십시오. 그리고 그 후에야 다음 레코드로 넘어갑니다.

 
mila.com :

거기에 어려움이 있습니다.

나는 일반적으로 파일에서 데이터를 수신한다는 것을 분명히 하기 위해 인쇄용으로 가져왔습니다.

적절한 할당 방법   날짜, 나는 전혀 모른다.

하나의 막대에 해당하는 하나의 레코드가 있습니까?