초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 195

 
Artyom Trishkin :

가격이 마샤를 넘어선 지점을 찾으십시오. 이것은 검색 범위의 시작이 됩니다.

가격이 마샤를 넘어선 지점을 찾으십시오. 이것은 범위의 중지가 됩니다.

이 범위에서만 iHighest()를 가져옵니다.

그리고 MA 포인트에 대한 검색을 구현하여 광고 무한이 아닌 2개의 극점만 검색하도록 구현하는 방법. 한마디로 이것도 이해하지만 코드로 구현하는 방법이 어렵지 않다면 말이다.
 
GlaVredFX :
그리고 MA 포인트에 대한 검색을 구현하여 광고 무한이 아닌 2개의 극점만 검색하도록 구현하는 방법. 한마디로 이것도 이해하지만 코드로 구현하는 방법이 어렵지 않다면 말이다.

방법 중 하나: 어드바이저의 전역 프로그램 수준에서 변수 생성(어드바이저의 "헤더"에 변수 선언) - 이 변수에서 마지막 교차가 발생한 막대의 여는 시간을 기록합니다. 이것은 CopyBuffer 를 호출하는 세 번째 형식을 사용하는 데 도움이 됩니다.

필요한 시간 간격의 시작 날짜와 종료 날짜로 호출

 int    CopyBuffer (
   int        indicator_handle,     // handle индикатора
   int        buffer_num,           // номер буфера индикатора
   datetime   start_time,           // с какой даты
   datetime   stop_time,             // по какую дату
   double     buffer[]               // массив, куда будут скопированы данные
   );

여기서 start_time은 변수의 시간이고 stop_time은 마지막으로 알려진 서버 견적의 시간입니다.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
GlaVredFX :
그리고 MA 포인트에 대한 검색을 구현하여 광고 무한이 아닌 2개의 극점만 검색하도록 구현하는 방법. 한마디로 이것도 이해하지만 코드로 구현하는 방법이 어렵지 않다면 말이다.

MA에 대한 치료가 발견될 때까지 루프에서 검색을 수행해야 합니다.

잠시 후 이것은 노란색 사각형으로 강조 표시된 영역이며 가격과 MA의 두 번째 교차점에 도달하기 전에 사이클을 중단합니다. 결과적으로 오른쪽 첫 번째 교차점에서 최대값을 찾을 수 있습니다.


추신: 선택한 두 사이트의 차이점은 무엇입니까?

 
Vitaly Muzichenko :

추신: 선택한 두 사이트의 차이점은 무엇입니까?

그들은 다를 수 있습니다. 즉, 첫 번째 포인트가 두 번째 포인트보다 높거나 낮을 수 있습니다.

이 예는 방금 일어났습니다. 그러나 이것이 그들이 항상 동일하다는 것을 의미하지는 않습니다.



유사한 조건의 코드 예제를 게시할 수 있는 사람:

현재 MA 값 > 0 bar
Bar의 번호를 찾고 있습니다. Price < MA, Bar의 번호 1을 찾았고 버퍼 2에 값을 씁니다.
우리는 다음 숫자를 찾고 있습니다. Price > MA는 숫자 2를 찾았고, 버퍼 1의 값에 씁니다.
검색을 중지합니다.
다음으로 버퍼 값 1과 2 사이에서 가장 낮은 저가를 찾습니다.
현재 MA 값< 0 bar인 경우
우리는 Bar의 수를 찾고 있습니다. Price > MA, 우리는 Bar의 숫자 1을 찾았고, 버퍼 2에 값을 씁니다.
우리는 다음 숫자를 찾고 있습니다. Price < MA는 숫자 2를 찾았고, 버퍼 1의 값에 씁니다.
검색을 중지합니다.
다음으로 버퍼 값 1과 2 사이에서 가장 높은 High 가격을 찾습니다.

 
GlaVredFX :

그들은 다를 수 있습니다. 즉, 첫 번째 포인트가 두 번째 포인트보다 높거나 낮을 수 있습니다.

이 예는 방금 일어났습니다. 그러나 이것이 그들이 항상 동일하다는 것을 의미하지는 않습니다.



유사한 조건의 코드 예제를 게시할 수 있는 사람:

현재 MA 값 > 0 bar
Bar의 번호를 찾고 있습니다. Price < MA, Bar의 번호 1을 찾았고 버퍼 2에 값을 씁니다.
우리는 다음 숫자를 찾고 있습니다. Price > MA는 숫자 2를 찾았고, 버퍼 1의 값에 씁니다.
우리는 검색을 중지합니다.
다음으로 버퍼 값 1과 2 사이에서 가장 낮은 저가를 찾습니다.
현재 MA 값< 0 bar인 경우
우리는 Bar의 수를 찾고 있습니다. Price > MA, 우리는 Bar의 숫자 1을 찾았고, 버퍼 2에 값을 씁니다.
우리는 다음 숫자를 찾고 있습니다. Price < MA는 숫자 2를 찾았고, 버퍼 1의 값에 씁니다.
우리는 검색을 중지합니다.
다음으로 버퍼 값 1과 2 사이에서 가장 높은 High 가격을 찾습니다.

이미지를 따라가면 루프를 실행하고 조건 MA<Price가 발견될 때까지 검색을 수행해야 합니다.

이 장소를 찾으면 배열을 High price로 채웁니다 . 조건 MA> Price가 발견될 때까지 루프를 돌고, 이 장소를 찾는 즉시 루프를 끊습니다(break).

음, 어레이에서 우리는 최고 가격을 찾고 있습니다.

 
Vitaly Muzichenko :

이미지를 따라가면 루프를 실행하고 조건 MA<Price가 발견될 때까지 검색을 수행해야 합니다.

이 장소를 찾으면 배열을 High price로 채웁니다 . 조건 MA> Price가 발견될 때까지 루프를 돌고, 이 장소를 찾는 즉시 루프를 끊습니다(break).

음, 어레이에서 우리는 최고 가격을 찾고 있습니다.

맞습니다. 저도 썼지만 코드에서 구현하는 방법은 최소한 다음 코드의 예를 가질 수 있습니다.


루프를 실행하고 MA<Price 조건을 찾을 때까지 검색합니다.

이 장소를 찾으면 배열을 High price로 채웁니다.

Документация по MQL5: Операции с массивами / ArrayFill
Документация по MQL5: Операции с массивами / ArrayFill
  • www.mql5.com
При вызове функции ArrayFill() всегда подразумевается обычное направление индексации – слева направо, то есть изменение порядка доступа к элементам массива с помощью функции ArraySetAsSeries() не принимается во внимание. Многомерный массив при обработке функцией ArrayFill() представляется одномерным, например...
 
GlaVredFX :

맞습니다. 저도 썼지만 코드에서 구현하는 방법은 최소한 다음 코드의 예를 가질 수 있습니다.


루프를 실행하고 MA<Price 조건을 찾을 때까지 검색합니다.

이 장소를 찾으면 배열을 High price로 채웁니다.

지금은 코드를 작성할 수 없습니다. 다른 사람이 작성할 수도 있습니다. 간단합니다.

 

이것이 당신이 필요로 하는 것입니다. 누군가 이 코드를 도와줄 수 있습니까?

 int start()                           

  {

   int     i;

   double No_1;

   double No_2;

   double k= iClose ( NULL , 0 ,i);
   double h= iHigh ( NULL , 0 ,i);

   if (ma>k) ma= iMA ( NULL , 0 , 24 , 0 , 1 , 0 ,i);

   for (i= 0 ; i< Bars ; i++) {

   //---- Код поиска номер крайнего бара где  iHigh>ma

   //---- Если нашли то возвращаем номер бара No_1

            

          }

그런 다음 iLow>ma인 다음 값을 찾고 막대 번호 No_2를 반환해야 합니다.
검색을 중지 하고 iHighest 기능을 사용하여 이 막대 사이의 상단을 찾으십시오.
int val_index=iHighest(NULL,0,MODE_HIGH,No_2,No_1);

 
GlaVredFX :

 if (ma>k) ma= iMA ( NULL , 0 , 24 , 0 , 1 , 0 ,i);

이것은 MQL5 코드가 아닙니다.

 
Vladimir Karputov :

이것은 MQL5 코드가 아닙니다.

이것은 레이아웃이며 4와 5의 차이가 없습니다.

:)