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

 
Escapee : 하십시오.
스크립트는 주문을 열 때 현재 금융 상품에 대해 서버에서 가능한 최소 손절매를 자동으로 설정해야 합니다. 여기에 무엇을 적어야 할까요? OrderSend(Symbol(),OP_BUY,0.01,Ask,10, ? ,0);

독서

보류 주문을 할 때 시가는 시장에 너무 가깝지 않아야 합니다. MODE_STOPLEVEL 매개변수와 함께 MarketInfo() 함수를 사용하여 현재 시장 가격에서 보류 중인 가격의 최소 거리(포인트)도 얻을 수 있습니다. 보류 중인 주문의 시작 가격이 잘못된 경우 오류 130(ERR_INVALID_STOPS)이 생성됩니다.
우리는 얻는다
 OrderSend ( Symbol () , OP_BUY , 0.01 , Ask ,10 , Bid - MarketInfo ( Symbol () , MODE_STOPLEVEL ) * Point , 0 ) ;
 

В документации есть 2 момента касательно индикаторов.

특수 상수에서는 다음과 같습니다.

" indicator_buffers 표시기 계산을 위한 버퍼 수, 최대 8 "

사용자 지정 지표 섹션에서:

" 사용자 지정 지표를 계산하는 데 사용되는 버퍼에 대한 메모리를 할당합니다. 버퍼 수는 8을 초과할 수 없고 indicator_buffers 속성에 지정된 값보다 작아야 합니다. 사용자 지정 지표에 계산을 위해 추가 버퍼가 필요한 경우 이 함수를 사용하여 총 버퍼."

버퍼의 수가 표시되면 내 생각에 이것은 이미 버퍼에 메모리를 할당하는 것을 의미합니다. 이것이 다른 의미라면 정정해 주십시오.

[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 --

아래에서 MQL 4 Book에서 이 스크립트를 분석할 때 다음 구문이 제공됩니다. " 지정된 검사(블록 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]  

제 프로그램이 서버에 여러 명령을 보내는 두 틱 사이에 경험이 없습니다. 모두 실행될까요, 아니면 첫 번째 명령만 실행될까요? 이 주제에 대한 정보는 어디에서 찾을 수 있습니까?

 
cubus :

제 프로그램이 서버에 여러 명령을 보내는 두 틱 사이에 경험이 없습니다. 모두 실행될까요, 아니면 첫 번째 명령만 실행될까요? 이 주제에 대한 정보는 어디에서 찾을 수 있습니까?


독서:

https://book.mql4.com/ru/basics/common

[Deleted]  
정말 감사합니다 !
 
Vladero :

안녕하세요! MQL4의 지표에 대한 한 가지 질문에 대해 우려하고 있으며 완전히 이해할 수 없습니다. 예를 들어 간단한 프랙탈 지표가 있습니다.

이 형식으로 컴파일하면 차트의 왼쪽 테두리를 확장하고 기록을 로드할 때 실패하기 시작하고 표시되지 않아야 하는 위치에 표시가 표시됩니다(첨부 파일의 스크린샷 참조). 코드의 일부를 주석 처리하는 경우:

그런 다음 그러한 결함이 사라집니다... 표시기 배열의 "비어 있지 않은" 요소만 채워지고 표시기 값이 레이블이 없는 곳에서 0으로 설정되지 않은 경우 기록이 로드될 때 동일한 결함이 나타납니다...

왜 이런 일이 발생합니까? 기록을 로드할 때 전체 지표를 다시 계산해야 하는 이유는 무엇입니까? 그리고 "빈"요소 ind의 값을 무효화해야 하는 이유. 정렬?

막대가 왼쪽에서 오른쪽으로 인덱싱된 경우 히스토리를 로드할 때 막대 인덱스가 변경되고 재계산 없이 표시기가 잘못 표시되면 이러한 글리치는 이해할 수 있을 것입니다... 그러나 MT4에서는 막대가 인덱싱됩니다. 오른쪽에서 왼쪽으로, 이는 기록을 로드할 때 해당 막대의 인덱스가 동일하게 유지되어야 함을 의미합니다(및 표시기 값도 마찬가지). 그렇다면 표시기를 다시 계산하는 이유는 무엇이며 이러한 레이블 이동은 어디에서 오는 것입니까?


기록을 로드할 때 전체 지표를 다시 계산해야 하는 이유는 무엇입니까? 그리고 "빈"요소 ind의 값을 무효화해야 하는 이유. 정렬? 그리고 이것이 완료되지 않으면 표시기가 잘못 표시됩니다 ...
 
hoz :
#property indicator_buffers 는 표시할 버퍼 수를 지정합니다.
IndicatorBuffers 는 사용 중인 총 버퍼 수를 나타냅니다.

예시.
#속성 표시기_버퍼 2
...........................................................
표시기 버퍼 3

우리는 두 개의 선을 그립니다. 세 번째 버퍼는 표시되지 않지만 중간 계산에 사용됩니다.
 
1개의 값과 이미 다시 그린 인디케이터 값을 별도의 인디케이터에 다시 그리는 2개의 라인 형태로 표시하는 방법을 알려주세요. 알 수 없고 마지막으로 다시 그린 값을 지속적으로 표시합니다.
 
불행히도 빌드 438 https://www.mql5.com/ru/forum/138609/page425 를 설치하려고 할 때 오류에 대해 아무도 대답하지 않았습니다.