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

 
STARIJ :

쓰기 위해 파일을 열 때 TXT 또는 CSV를 지정했습니다. 이것은 당신의 텍스트 파일입니다. 문자열로 읽고 StringSubstr을 추출하고 필요한 것으로 변환

 void Write_File()
{
     int handle;
     static double BlueL,RedL;
     string B_level= DoubleToStr (BlueLine, Digits );
     string R_level= DoubleToStr (RedLine, Digits );
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
    
       if (BlueLine!=BlueL||RedLine!=RedL)
       {
       Sleep ( 10000 ); //подождем 10 сек, пока оператор меняет уровни
       
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_CSV | FILE_READ | FILE_WRITE , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
       FileSeek (handle, 0 , SEEK_END );

       // Если новый файл - записать имя файла и строку заголовков колонок
       if ( FileSize (handle)== 0 )
      {
         FileWrite (handle,f_name);
         FileWrite (handle, "Изменение Уровней   BlueLine   RedLine" );
      }
       // Сбор информации и запись в файл
       FileWrite (handle, TimeToStr ( TimeCurrent ()), "  " ,B_level, "  " ,R_level);
       FileClose (handle);
      BlueL=BlueLine;RedL=RedLine;
      }
       return ;
   }

그가 그렇게 썼습니다! TXT

죄송합니다. 지금 B_level 및 R_level을 꺼내는 방법을 이해하지 못합니다. 날짜와 시간은 필요없어! 하지만 나는 그것들을 기록하고 싶다

 
Rewerpool :

그가 그렇게 썼습니다! TXT

죄송합니다. 지금 B_level 및 R_level을 꺼내는 방법을 이해하지 못합니다. 날짜와 시간은 필요없어! 하지만 나는 쓰고 싶다

문자열로 읽고 StringSubstr을 할당 하고 필요한 것으로 변환하십시오. 문자열로 읽고 StringSubstr을 추출하고 필요한 것으로 변환

 
STARIJ :

문자열로 읽고 StringSubstr을 할당하고 필요한 것으로 변환하십시오. 문자열로 읽고 StringSubstr을 할당하고 필요한 것으로 변환하십시오.

아 아 아 아 알았어요!! 모든 것 !!! @STARIJ 감사합니다! 노력하겠습니다)

 

@STARIJ 가 작동하지 않습니다. 아직 어디가 틀렸는지 알 수 없습니다! 돕다!

 double BlueLine,RedLine;

void Read_File()
{
     int handle;
     string B_level;
     string R_level;
     static double BlueL= StrToDouble (B_level);
     static double RedL= StrToDouble (R_level);
    
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
     if (BlueL!=BlueLine||RedL!=RedLine)
     {
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_CSV | FILE_READ | FILE_WRITE , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
       FileSeek (handle, 0 , SEEK_END );
      
       // Чтение информации из файла
       FileReadString (handle,B_level= StringSubstr (f_name, 16 , 7 ),R_level= StringSubstr (f_name, 23 , 7 ));
       FileClose (handle);
      
      BlueLine=BlueL;RedLine=RedL;
      }
       return ;
   }
하나 이건 실수인데 내가 뭘 잘못했지?
 

그는 왜 이것을 좋아하지 않습니까?

2

 
Rewerpool :

그는 왜 이것을 좋아하지 않습니까?


함수에 어떤 매개변수를 전달하고 얼마나 많은 매개변수를 반환하는지 살펴보십시오.

f1을 클릭하고 먼저 이 기능에 커서를 놓습니다.

 
Rewerpool :

@STARIJ 가 작동하지 않습니다. 아직 어디가 틀렸는지 알 수 없습니다! 돕다!

이건 실수인데 내가 뭘 잘못했지?
먼저 마지막 줄을 읽으십시오.
   int handla = FileOpen ( "1111.txt" , FILE_TXT | FILE_READ , " " );   // TXT !!!!!!!
   string s;
   while (! FileIsEnding (handla))  s= FileReadString (handla, 100 );
   Alert (s);
   FileClose (handla);

2018.02.26 12:49 1.24368 1.22581 이제... StringSubstr을 추출하고 원하는 대로 변환합니다. 모든 것은 단계적으로 이루어져야 합니다. 조급함은 프로그래머의 적이다

   double Синяя= StrToDouble ( StringSubstr (s, 20 , 7 ));
   double Красн= StrToDouble ( StringSubstr (s, 31 , 7 ));
   Alert ( DoubleToStr (Синяя, 5 ), "   " , DoubleToStr (Красн, 5 ));

문자열로 읽고 StringSubstr을 할당하고 필요한 것으로 변환하십시오. 문자열로 읽고 StringSubstr을 추출하고 필요한 것으로 변환

 
STARIJ :
먼저 마지막 줄을 읽으십시오.

2018.02.26 12:49 1.24368 1.22581 이제... StringSubstr을 추출하고 원하는 대로 변환합니다. 모든 것은 단계적으로 이루어져야 합니다. 조급함은 프로그래머의 적이다

문자열로 읽고 StringSubstr을 할당하고 필요한 것으로 변환하십시오. 문자열로 읽고 StringSubstr을 추출하고 필요한 것으로 변환

STARIJ : 분석해주셔서 감사합니다!

리메이크! 이제 어떤 이유로 숫자가 합산되지 않습니다!

파일의 숫자는 다음과 같습니다.

 2018.02 . 26 17 : 44      1.24938      1.22771

그리고 동일한 경고는 다음을 제공합니다.

그는 1.2 이후에 0을 어디서 얻었습니까? 정상화를 시도했습니다. 아니요!

하나

코드는 다음과 같이 작성됩니다.

 void Read_File()
{
     int handle;
     string str;
     static double BlueL;
     static double RedL;
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
     if (BlueL!=BlueLine||RedL!=RedLine)
     {
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_READ | FILE_TXT , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
      
       while (! FileIsEnding (handle)) //Читаем последнюю строку
       str= FileReadString (handle, 60 ); //Чтение строки из файла
       FileClose (handle);
       BlueL= StrToDouble ( StringSubstr (str, 16 , 7 ));
       RedL= StrToDouble ( StringSubstr (str, 23 , 7 ));
       Alert ( DoubleToStr (BlueL, 5 ), "   " , DoubleToStr (RedL, 5 ));
       ObjectSet ( "BlueLine" , OBJPROP_PRICE1 ,BlueL);
       ObjectSet ( "RedLine" , OBJPROP_PRICE1 ,RedL);
      }
       return ;
   }
 
Rewerpool :

STARIJ : 분석해주셔서 감사합니다!
리메이크! 이제 어떤 이유로 숫자가 합산되지 않습니다!
파일의 숫자는 다음과 같습니다.
그리고 동일한 경고는 다음을 제공합니다.
그는 1.2 이후에 0을 어디서 얻었습니까? 정상화를 시도했습니다. 아니요!
코드는 다음과 같이 작성됩니다.

나는 StringSubstr (str, 20,7)을 작성했고 당신은 StringSubstr(str, 16,7)을 작성했습니다. 1.24938에서 마지막 4자리를 삭제하고 1.2를 얻으십시오. 모든 것을 순서대로 수행하십시오. 경고가 있었습니다. - 읽기 라인을 표시하여 올바른지 확인하고, 서둘러 ObjectSet(. 프로그래밍은 인내심, 작은 단계 전진 - 그리고 포럼에 비명 소리가 들립니다. 답변을 기다리는 동안 - 얼마나 많은 작은 당신이 취할 수있는 자신감 단계 !!!
 
Rewerpool :

STARIJ : 분석해주셔서 감사합니다!

리메이크! 이제 어떤 이유로 숫자가 합산되지 않습니다!

파일의 숫자는 다음과 같습니다.

그리고 동일한 경고는 다음을 제공합니다.

그는 1.2 이후에 0을 어디서 얻었습니까? 정상화를 시도했습니다. 아니요!

코드는 다음과 같이 작성됩니다.

이렇게 시도


 void Read_File()
{
     int handle;
     string str;
     static double BlueL;
     static double RedL;
     string f_name = " (" + Symbol () + ")\\" + TimeToStr ( LocalTime (), TIME_DATE ) + ".txt" ;
     
     if (BlueL!=BlueLine||RedL!=RedLine)
     {
       // Открытие или создание файла и перемещение указателя в конец
      handle= FileOpen (f_name, FILE_READ | FILE_TXT , " " );
       if (handle == - 1 ) {   Alert ( "Ошибка при открытии файла " ,handle);   return ; }
      
       while (! FileIsEnding (handle)) //Читаем последнюю строку
       str= FileReadString (handle, 60 ); //Чтение строки из файла
       FileClose (handle);
       BlueL= StrToDouble ( StringSubstr (str, 20 , 7 ));   
       RedL= StrToDouble ( StringSubstr (str, 31 , 7 ));    
       Alert ( DoubleToStr (BlueL, 5 ), "   " , DoubleToStr (RedL, 5 ));
       ObjectSet ( "BlueLine" , OBJPROP_PRICE1 ,BlueL);
       ObjectSet ( "RedLine" , OBJPROP_PRICE1 ,RedL);
      }
       return ;
   }