[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 429

[Deleted]  

안녕하세요.

코드에 어떤 변경이 필요한지 알려주세요. 히스토그램이 약세 막대에 대한 값만 표시하도록 합니다.

지표 자체 https://www.mql5.com/en/code/8920

 int start()
{
     if (OpenTime != iOpen ( Symbol (), PERIOD_M1 , 0 ))
    {
        OpenTime = iOpen ( Symbol (), PERIOD_M1 , 0 );

         int n, MaxVolume;
         double max = iHigh ( Symbol (), PERIOD_M1 , iHighest ( Symbol (), PERIOD_M1 , MODE_HIGH, MinutesCount, 0 ));
         double min = iLow ( Symbol (), PERIOD_M1 , iLowest ( Symbol (), PERIOD_M1 , MODE_LOW, MinutesCount, 0 ));
         int items = MathRound ((max-min) / PricePoint);

         if (max == 0 )
        {
             Alert ( "There is no minutes data. Please download M1." );
             return ( 0 );
        }

         ArrayResize (Hist, items);      
         ArrayInitialize (Hist, 0 );
         for ( int i = 1 ; i <= MinutesCount; i++)
        {
            n = MathRound (( iClose ( Symbol (), PERIOD_M1 , i)-min) / PricePoint);
            Hist[n] += ( iVolume ( Symbol (), PERIOD_M1 , i));    
        }

        MaxVolume = Hist[ ArrayMaximum (Hist)];
        DeleteObjects();
         for (i = 0 ; i <= items; i++)
        {
            DrawLine(i, min + i*PricePoint, Hist[i], MaxVolume);
        }
    }
         return ( 0 );
}
[Deleted]  

안녕하세요. 파일 포인터에 대한 질문... MQL4에 있는 MQL 4에 대한 책에서. 커뮤니티 "표준 기능" 장의 "파일 작업" 섹션에 파일에서 데이터를 읽고 기호 창에 그래픽 개체를 표시하기 위한 timetablenews.mq4 스크립트의 예가 있습니다.

 //--------------------------------------------------------------------
// timetablenews.mq4
// Предназначен для использования в качестве примера в учебнике MQL4.
//--------------------------------------------------------------- 1 --
int start()                             // Спец. функция start
  {
//--------------------------------------------------------------- 2 --
   int Handle,                         // Файловый описатель
       Stl;                             // Стиль вертикальной линии
   string File_Name= "News.csv" ,         // Имя файла
          Obj_Name,                     // Bмя объекта
          Instr,                       // Название валюты
          One,Two,                     // 1я и 2я чать названия инстр.
          Text,                         // Текст описания события
          Str_DtTm;                     // Дата и время события(строка)
   datetime Dat_DtTm;                   // Дата и время события(дата)
   color Col;                           // Цвет вертикальной линии
//--------------------------------------------------------------- 3 --
   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()      
     }
//--------------------------------------------------------------- 4 --
   while ( FileIsEnding (Handle)==false) // До тех пор, пока файловый ..
     {                                 // ..указатель не в конце файла
       //--------------------------------------------------------- 5 --
      Str_DtTm = FileReadString (Handle); // Дата и время события(дата)
      Text     = FileReadString (Handle); // Текст описания события
       if ( FileIsEnding (Handle)==true)   // Файловый указатель в конце
         break ;                         // Выход из чтения и рисования
       //--------------------------------------------------------- 6 --
      Dat_DtTm = StrToTime (Str_DtTm);   // Преобразование типа данных
      Instr    = StringSubstr (Text, 0 , 3 ); // Извлекаем первые 3 символа
      One= StringSubstr ( Symbol (), 0 , 3 ); // Извлекаем первые 3 символа
      Two= StringSubstr ( Symbol (), 3 , 3 ); // Извлекаем вторые 3 символа
      Stl= STYLE_DOT ;                   // Для всех - стиль пунктир
      Col= DarkOrange ;                   // Для всех - цвет такой
       if (Instr==One || Instr==Two)     // А для событий по нашему ..
        {                             // .. финансовому инструменту..
         Stl= STYLE_SOLID ;               // .. такой стиль..
         Col= Red ;                       // .. и такой цвет верт. линии
        }
       //--------------------------------------------------------- 7 --
      Obj_Name= "News_Line  " +Str_DtTm;     // Имя объекта
       ObjectCreate (Obj_Name, OBJ_VLINE , 0 ,Dat_DtTm, 0 ); //Создаем объект..
       ObjectSet (Obj_Name, OBJPROP_COLOR , Col);       // ..и его цвет,..
       ObjectSet (Obj_Name, OBJPROP_STYLE , Stl);       // ..стиль..
       ObjectSetText (Obj_Name,Text, 10 );               // ..и описание 
     }
//--------------------------------------------------------------- 8 --
   FileClose ( Handle );                 // Закрываем файл
   PlaySound ( "bulk.wav" );               // Звуковое сопровождение
   WindowRedraw ();                     // Перерисовываем объекты
   return ;                             // Выход из start()
  }
//--------------------------------------------------------------- 9 --

아래에서 Book on MQL 4에서 이 스크립트를 분석할 때 다음 구가 제공됩니다. " 지정된 검사(블록 5-6의 마지막 2줄)가 삭제되면 프로그램 실행 중에 추가 개체가 생성됩니다. 그 후에야 while 루프 종료 조건이 작동하고 제어가 블록 8-9로 이전됩니다 .

내가 올바르게 이해하고 있습니까???... 파일 포인터가 텍스트 문자 사이가 아닙니다(예: tek | st , 여기서 | 파일 포인터), 그러나 할당이 있는 포인터입니다(예: te k st , 여기서 k 는 파일 포인터에 의해 강조 표시된 문자 " k "). 이것은 선이 있어야 할 필요성을 설명합니다(164페이지 참조).

       if (FileIsEnding(Handle)== true )   // Файловый указатель в конце
         break ;                         // Выход из чтения и рисования
       //--------------------------------------------------------- 6 --

정말로. 두 번째 반복에서 LAST 객체 생성 후

2007.05.11 18:30; 공업 생산

파일 포인터는 마지막 개체의 위치에 있습니다. 즉:

2007.05.11 18:30; 공업 생산

(여기서 o 는 파일 포인터로 강조 표시된 " o " 기호입니다.) 그런 다음 while 문의 헤드에 제어를 전달할 때 FileIsEnding ( handle ) 함수 는 분명히 true 반환합니다 . 파일 포인터는 파일의 끝이 아니라 해당 파일의 LAST CHARACTER에 있습니다. 그런 다음 처음 두 줄을 실행하면 파일 포인터가 EMPTY 위치로 이동하고 줄이 없으면

       if (FileIsEnding(Handle)== true )   // Файловый указатель в конце
         break ;                         // Выход из чтения и рисования
       //--------------------------------------------------------- 6 --

스크립트는 설명이 비어 있고 시간 좌표가 0 에 해당하는 그래픽(즉, 선)을 생성합니다. " 지정된 검사(블록 5-6의 마지막 2줄)가 삭제되면 프로그램 실행 중에 추가 개체가 생성됩니다. "

질문 : 내가 올바르게 이해하고 있습니까?

a) 파일 포인터를 정의하는 단계;

b) 구문의 의미 " 지정된 검사(블록 5-6의 마지막 2줄)가 삭제되면 프로그램 실행 중에 추가 개체가 생성됩니다. 그리고 그 후에만 while 루프 종료 조건이 작업 및 제어가 블록 8-9로 이전됩니다. "

피. 에스. 포럼을 어지럽히지 않기 위해 답변에 미리 감사드립니다.

[Deleted]  
사람들!!! 시간별 막대를 여는 기능을 제공하십시오 (이전 양초의 열림을 결정하는 데 필요합니다) 그렇지 않으면 (TimeMinute( TimeCurrent() )==m && TimeSeconds(TimeCurrent())==n) 어떤 이유로 작동하지 않습니다. 나는 m=1 n =1로 설정합니다. 글쎄, 나는 당신에게 신경 쓰지 않습니다 ...
 
stater :
사람들!!! 시간별 막대를 여는 기능을 제공하십시오 (이전 촛불의 시작을 결정하는 데 필요합니다) 그렇지 않으면 (TimeMinute(TimeCurrent())==m && TimeSeconds(TimeCurrent())==n) 어떤 이유로 작동하지 않습니다. 나는 m=1 n =1을 넣습니다. 글쎄, 나는 당신에게 신경 쓰지 않습니다 ...
https://docs.mql4.com/ru/series
[Deleted]  
응답에 감사하지만 시간별 촛불이 열렸는지 알아내는 기능의 도움으로 이해하지 못했습니다 ....
 
stater :
응답에 감사하지만 시간별 촛불이 열렸는지 알아내는 기능의 도움으로 이해하지 못했습니다 ....

아이타임
[삭제]  
고문은 항상 오류 0을 제공합니다. 알려주십시오. 그가 그것을 제공하는 이유를 확인하는 방법,이 장소를 찾는 방법은 무엇입니까?
[Deleted]  
기다려 주셔서 감사합니다!
 
Egori4 :
고문은 항상 오류 0을 제공합니다. 알려주십시오. 그가 그것을 제공하는 이유를 확인하는 방법,이 장소를 찾는 방법은 무엇입니까?

오류 0은 오류가 없다는 것입니다.

인쇄 중지(경고) =)

 

하나의 방정식이 여러 번 반복되는 경우 수식 작성을 줄이는 방법은 무엇입니까?