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

 

안녕하세요! mkuel4를 이해하기 시작했습니다. 양초의 최대 및 최소 가격을 계산하고 두 개의 버퍼를 사용하여 화면에 양초 극값을 기반으로 선을 표시 하는 간단한 표시기의 예를 사용하여 제 질문을 설명하겠습니다.

 #property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
SetIndexBuffer ( 0 ,Buf_0); // Назначение массива буферу
SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 ); // Стиль линии
SetIndexBuffer ( 1 ,Buf_1); // Назначение массива буферу
SetIndexStyle ( 1 , DRAW_LINE , STYLE_DOT , 1 ); // Стиль линии
return ; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
int i, // Индекс бара
Counted_bars; // Количество просчитанных баров 
//--------------------------------------------------------------------
Counted_bars= IndicatorCounted (); // Количество просчитанных баров 
i= Bars -Counted_bars- 1 ;
// Индекс первого непосчитанного
while (i>= 0 ) // Цикл по непосчитанным барам
{
Buf_0[i]=High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i]=Low[i]; // Значение 1 буфера на i-ом баре

i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------
return ; // Выход из спец. ф-ии start()
}

그렇다면 버퍼 라인이 각 양초가 아닌 두 개(세 개 등) 양초를 통과하도록 하는 방법은 무엇입니까?

 
wolf05632 :

그렇다면 버퍼 라인이 각 양초가 아닌 두 개(세 개 등) 양초를 통과하도록 하는 방법은 무엇입니까?

먼저 "SRC" 버튼을 사용하여 메시지를 코드에 올바르게 삽입하여 MetaEditor에서와 같이 읽을 수 있는 모양을 갖도록 하는 방법을 배우십시오.


두 번째 단계는 Counted_bars 변수를 if 문에 바인딩하려는 시도입니다.

예를 들어:

매 초마다 표시기 계산을 입력합니다(홀수는 건너뛰고 짝수는 그대로 둡니다).

 if ( MathMod (Counted_bars, 2 ) == 0 )
{
   // расчёт для буферов индикатора
}
else return ( 0 );

여기에서 MathMod() 함수에 대해 읽을 수 있습니다. 그러나 당신은 그것을 사용할 필요가 없습니다. if 문에 모든 조건을 삽입할 수 있습니다.

그러나 이러한 코드 수정으로 인해 버퍼에서 일부 값이 손실되기 시작한다는 것을 잊지 마십시오. 당신이 그것을 필요로하는지 여부, 나는 모릅니다. 모든 것은 귀하의 작업에 달려 있습니다.

 

잘 이해하지 못했습니다. 나는 주기 단계를 2와 같게 만들려고 노력했지만(내 생각에 당신의 의미는 같을 것입니다), 작동하지 않습니다. 나는 특별히 하나가 아니라 임의의 수의 양초를 통해 필요합니다. 구조가 다음과 같아야 함을 이해합니다.

버퍼 배열[1]= 양초 배열[1]

버퍼 배열[2]= 양초 배열[2]

버퍼 배열[3]= 양초 배열[4]

...

버퍼 배열[5]= 양초 배열[x] 등 하지만 작동하지 않습니다

 
wolf05632 :

버퍼 지수와 촛대 지수 사이에 패턴이 보이지 않습니다...

그리고 받고 싶은 사진을 첨부해주시면 더욱 좋습니다.

 

이렇게 나온다

그리고 다음과 같이 필요합니다.

그러나 선이 양초를 통해 그려졌다는 사실에 특별히 집착하지 마십시오. 2 후, 3 등으로 그릴 수 있습니다.

 
sergeev :

여기가 아니라 텔레파시로 주제를 부숴야 했던 것 같습니다.

그는 단지 우리를 조롱하고 있습니다.


예, 이미 코드를 살펴보십시오 . 주문을 보낸 결과가 공백 없이 표시되는 것을 볼 수 있습니다. 오류 코드 및 기기의 숫자입니다.
 

그런 다음 다음과 같은 지그재그 표시기를 사용해야 합니다(내 관점).

 #property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[], Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
   SetIndexBuffer ( 0 , Buf_0); // Назначение массива буферу
   SetIndexStyle ( 0 , DRAW_SECTION );
   SetIndexBuffer ( 1 , Buf_1); // Назначение массива буферу
   SetIndexStyle ( 1 , DRAW_SECTION );
   return ; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
   int i, // Индекс бара
   Counted_bars; // Количество просчитанных баров 
   //--------------------------------------------------------------------
   Counted_bars= IndicatorCounted (); // Количество просчитанных баров 
   if ( MathMod ( Bars , 2 ) != 0 && Counted_bars == 0 )
       return ( 0 );
   i = Bars -Counted_bars- 1 ;
   // Индекс первого непосчитанного
   while (i >= 0 ) // Цикл по непосчитанным барам
   {
       if ( MathMod (i, 2 ) == 0 )
      {
         Buf_0[i] = High[i]; // Значение 0 буфера на i-ом баре
         Buf_1[i] = Low[i]; // Значение 1 буфера на i-ом баре
      }
   
      i--; // Расчёт индекса следующего бара
   }
   //--------------------------------------------------------------------
   return ; // Выход из спец. ф-ии start()
}

나는 당신이 변화를 이해할 것이라고 생각합니다. 내가 잘못 알고 있었던 유일한 것은 IndicatorCounted()보다 Bars 매개변수를 계산된 막대의 인덱스로 사용하는 것이 더 낫다는 것입니다.

이제 할 일은 제수를 외부 매개변수로 이동하는 것입니다. 건너뛴 양초의 수와 같습니다.

 
grell :

예, 이미 코드를 보면 주문을 보낸 결과, 오류 코드 및 기기의 숫자가 공백 없이 표시됩니다.

그게 다야 따라서 연설은 또한 Telepaths에 대해 갔다.

이전에는 다음 코드를 제공했습니다.

 Alert ( "Ordersend_Number" ,res,err);

그리고 몇 번이나 코드를 보지 않았는지, 불행히도 오류를 찾을 수 없었습니다... 저는 다중 통화 Expert Advisors 를 작성한 경험이 없습니다. 나는 몇 가지 원칙만 알고 그 이상은 모릅니다.

 
따라서 -1129가 오류 코드 라는 것은 생각할 필요가 없습니다. 어디서 오류 번호 1292를 보았습니까?
 
grell :
따라서 -1129가 오류 코드라는 것은 당연합니다. 오류 번호 1292는 어디에서 보았습니까?

무슨 일이 있어도...

하나의 DC에서만 Expert Advisor를 테스트했습니까? 그리고 오류 129 는 얼마나 오래 발생합니까? 아니면 여러 요청 후에도 주문이 계속 열려 있습니까?