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

 
Boss11 :

좋은 하루, 친애하는 포럼 사용자.

다음 문제를 해결하도록 도와주세요.

mql을 사용하여 MT4에서 해당 지표의 데이터를 가져와야 합니다(예: MA5 기간이 1일인 어제 14시 30분).

저것들. 내가 어제 14시 30분에 iMA로 스크립트를 실행했다면 질문이 없었을 것입니다. 그러나 오늘 그것을 얻는 방법.

적어도 어디를 파야할지 말해줘

아주 간단합니다. iMA를 계산하려면 7개의 매개변수를 설정해야 합니다. 첫 번째 매개변수인 symbol name 은 분명합니다. 두 번째 시간 프레임으로 M1을 설정합니다. 세 번째 매개 변수인 기간은 하루가 1분 이상인 시간에 필요한 만큼 설정합니다. 네 번째 매개변수는 shift = 0입니다. 다음 두 매개변수는 평균화 방법과 가격 유형입니다. 마지막 매개 변수 - 막대 수 - 필요한 시간을 알고 계산합니다. 그게 다야! M5 및 M15 기간을 계산하여 이를 다시 확인하십시오. M30도 가능합니다.

 
STARIJ :

아주 간단합니다. iMA를 계산하려면 7개의 매개변수를 설정해야 합니다. 첫 번째 매개변수인 symbol name 은 분명합니다. 두 번째 시간 프레임으로 M1을 설정합니다. 세 번째 매개 변수인 기간은 하루가 1분 이상인 시간에 필요한 만큼 설정합니다. 네 번째 매개변수는 shift = 0입니다. 다음 두 매개변수는 평균화 방법과 가격 유형입니다. 마지막 매개 변수 - 막대 수 - 필요한 시간을 알고 계산합니다. 그게 다야! M5 및 M15 기간을 계산하여 이를 다시 확인하십시오. M30도 가능합니다.

불행히도, 그것은 그렇게 간단하지 않습니다. 어쨌든 나에게는 분명하지 않습니다. MA5, 타임프레임 1440(1일), 막대 번호 2(어제 전날)를 선택하면 마지막 캔들을 열거나 닫는 MA5 지표가 표시되지만 14:30에는 표시되지 않습니다. 그리고 지정해야 합니다. 다시. 이러한 지표는 여러 양초에서 계산되며 00.00에 열리고(하루에 대해 이야기하는 경우) 23.59에 닫히지만 마지막 양초(0 bar인 경우)는 닫히지 않지만 0 bar의 마지막 가격은 계산하기 위해 취했습니다. 제로바에 있는 상태에서 MA를 계산하면 별 어려움이 없을 것이고, 제로바가 아니라 전일 중반이라면 어떻게 해야 할까요? TF 1440을 사용하여 전날 중 MA를 계산하는 방법은 무엇입니까?

 
Artyom Trishkin :

정말 감사합니다! 코드 작성을 시작하겠습니다 :) 결과에 대해 구독을 취소하겠습니다.

 
Boss11 :

불행히도, 그것은 그렇게 간단하지 않습니다. 어쨌든 그것은 나에게 분명하지 않습니다. MA5, 타임프레임 1440(1일), 막대 번호 2(어제 전날)를 선택하면 마지막 캔들을 열거나 닫는 MA5 지표가 표시되지만 14:30에는 표시되지 않습니다. 그리고 지정해야 합니다. 다시. 이러한 지표는 여러 양초에서 계산되며 00.00에 열리고(하루에 대해 이야기하는 경우) 23.59에 닫히지만 마지막 양초(0 bar인 경우)는 닫히지 않지만 0 bar의 마지막 가격은 계산하기 위해 취했습니다. 제로바에 있는 상태에서 MA를 계산하면 별 어려움은 없으나 제로바가 아니라 전일 중반이라면 어떻게 해야 할까요? TF 1440을 사용하여 전날 중 MA를 계산하는 방법은 무엇입니까?


모든 것이 간단합니다

 void OnStart ()
  {
// Формируем время  
   Alert ( "14.30  позавчерашнего дня = " , StrToTime ( TimeToStr ( iTime ( NULL , 1440 , 2 ), TIME_DATE )+ " " + "14:30" ));

//14.30  позавчерашнего дня
   datetime time= StrToTime ( TimeToStr ( iTime ( NULL , 1440 , 2 ), TIME_DATE )+ " " + "14:30" );

//Бар 14.30  позавчерашнего дня
   int      shift= iBarShift ( NULL , 0 ,time);

//Машка 14.30  позавчерашнего дня  
   double ma= iMA ( NULL , 0 , 13 , 0 , MODE_SMMA , PRICE_MEDIAN ,shift);

   Alert ( "Машка 14.30  позавчерашнего дня = " , DoubleToString (ma, Digits ));
}

이 같은

 

스크립트로 신호 전송을 구성하는 방법에 대한 아이디어가 있습니까?

 

아는 사람의 도움이 필요하다

요컨대 문제는 이것이다. 2014년 이전에 고문의 소스 코드가 컴파일되었고 모든 것이 정상이었다.

요전날 새 계정을 만들고 그에 대한 고문을 컴파일하기로 결정했지만 컴파일하기를 원하지 않습니다.

23개의 이러한 오류를 제공합니다( } )

2014년 이후로 어디를 파야 하고 무엇이 바뀌었나요?

 
Boss11 :

불행히도, 그것은 그렇게 간단하지 않습니다. 어쨌든 나에게는 분명하지 않습니다. MA5, 타임프레임 1440(1일), 막대 번호 2(어제 전날)를 선택하면 마지막 캔들을 열거나 닫는 MA5 지표가 표시되지만 14:30에는 표시되지 않습니다. 그리고 지정해야 합니다. 다시. 이러한 지표는 여러 양초에서 계산되며 00.00에 열리고(하루에 대해 이야기하는 경우) 23.59에 닫히지만 마지막 양초(0 bar인 경우)는 닫히지 않지만 0 bar의 마지막 가격은 계산하기 위해 취했습니다. 제로바에 있는 상태에서 MA를 계산하면 별 어려움은 없으나 제로바가 아니라 전일 중반이라면 어떻게 해야 할까요? TF 1440을 사용하여 전날 중 MA를 계산하는 방법은 무엇입니까?

아주 간단합니다. iMA를 계산하려면 7개의 매개변수를 설정해야 합니다. 첫 번째 매개변수인 symbol name 은 분명합니다. 두 번째 시간 프레임으로 M1 을 설정 합니다. 세 번째 매개 변수인 기간은 하루가 1분 이상인 시간에 필요한 만큼 설정합니다. 네 번째 매개변수는 shift = 0입니다. 다음 두 매개변수는 평균화 방법과 가격 유형입니다. 마지막 매개 변수 - 막대 수 - 필요한 시간을 알고 계산합니다. 그게 다야! M5 및 M15 기간을 계산하여 이를 다시 확인하십시오. M30도 가능합니다.
 

안녕하세요. 마지막 상담을 위해 STARIJArtyom Trishkin 에게 감사드립니다. 하지만 아직 초보자이기 때문에 다른 질문이 생깁니다. 예를 들어 다음. 한 막대에서 한 위치만 열려면 다음 기능을 사용합니다.

 void Fun_New_Bar()                               // Ф-ия обнаружения нового бара   
  {                                             
   static datetime New_Time= 0 ;                   // Время текущего бара  
   New_Bar= false ;                               // Нового бара нет  
   if (New_Time!= Time [ 0 ])                         // Сравниваем время  
     {  
      New_Time= Time [ 0 ];                         // Теперь время такое  
      New_Bar= true ;                             // Поймался новый бар  
     }  
  }

그리고 즉시 문제가 발생합니다. 함수를 호출할 때마다 정적 변수 를 "시간의 시작 부분으로" 보내는 이유는 무엇입니까? 결국 첫 번째 호출에서 독립적으로 0 값을 가정한 다음 다음 호출까지 이전 0 막대의 값을 저장하고 0으로 재설정되지 않도록 합니다. 아마도 이 이미 간단한 기능을 더 단순화하는 것이 가능할 것입니다. 솔직히 망할까봐. 그리고 같은 함수에 대한 또 다른 질문: 그러나 표현식 New_Time= Time [ 0 ]; 새 막대가 열렸을 때 그 밀리초를 잡지 못합니까? 그러면 어떻게 될까요? 고맙습니다.

 
novichok2018 :

안녕하세요. STARIJ 와 마지막 상담에 감사드립니다. 하지만 아직 초보자이기 때문에 다른 질문이 생깁니다. 예를 들어 다음. 한 막대에서 한 위치만 열려면 다음 기능을 사용합니다.

그리고 즉시 문제가 발생합니다. 함수를 호출할 때마다 정적 변수 를 "시간의 시작 부분으로" 보내는 이유는 무엇입니까? 결국 첫 번째 호출에서 독립적으로 0 값을 가정한 다음 다음 호출까지 이전 0 막대의 값을 저장하고 0으로 재설정되지 않도록 합니다. 아마도 이 이미 간단한 기능을 더 단순화하는 것이 가능할 것입니다. 솔직히 망할까봐. 그리고 같은 함수에 대한 또 다른 질문: 그러나 표현식 New_Time= Time [ 0 ]; 새 막대가 열렸을 때 밀리초가 걸리지 않습니까? 그러면 어떻게 될까요? 고맙습니다.

그리고 정적 변수가 초기화된 횟수를 읽습니다. 그리고 질문 자체는 부조리로 인해 사라집니다.)
 
novichok2018 :

안녕하세요. 마지막 상담을 위해 STARIJArtyom Trishkin 에게 감사드립니다. 하지만 아직 초보자이기 때문에 다른 질문이 생깁니다. 예를 들어 다음. 한 막대에서 한 위치만 열려면 다음 기능을 사용합니다.

그리고 즉시 문제가 발생합니다. 함수를 호출할 때마다 정적 변수 를 "시간의 시작 부분으로" 보내는 이유는 무엇입니까? 결국 첫 번째 호출에서 독립적으로 0 값을 가정한 다음 다음 호출까지 이전 0 막대의 값을 저장하고 0으로 재설정되지 않도록 합니다. 아마도 이 이미 간단한 기능을 더 단순화하는 것이 가능할 것입니다. 솔직히 망할까봐. 그리고 같은 함수에 대한 또 다른 질문: 그러나 표현식 New_Time= Time [ 0 ]; 새 막대가 열렸을 때 그 밀리초를 잡지 못합니까? 그러면 어떻게 될까요? 고맙습니다.


두 번째 질문의 경우,

첫 번째 틱이 걸리지 않으면 두 번째 틱이 잡힙니다.