[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 속성에 지정된 값보다 작아야 합니다. 사용자 지정 지표에 계산을 위해 추가 버퍼가 필요한 경우 이 함수를 사용하여 총 버퍼."

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

 

안녕하세요. 파일 포인터에 대한 질문... 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로 이전됩니다. "

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

 

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

 
cubus :

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


독서:

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

 
정말 감사합니다 !
 
Vladero :

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

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

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

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

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


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

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

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