포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 877

 
evillive :
맞습니다. Bollinger Bands를 사용할 때는 iCustom을 호출할 필요가 없지만 각 표시줄에 대해 별도로 iBands를 호출해야 합니다. 표시기를 호출하지 않는 대안으로("버퍼, 배열, 루프를 사용하지 않음") - Expert Advisor에서 이 표시기를 계산하는 알고리즘을 구현하고 필요할 때 필요한 값을 읽습니다(예: 원하는 값만 읽을 수 있습니다. 결론만). 그러나 사이클과 배열 없이는 여전히 작동하지 않습니다.

좋은. 그런 다음 올바르게 작성하는 방법은 무엇입니까?:

MB_2=iBands(NULL,0,10,0,2.0,PRICE_CLOSE,2);
Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

ExtUpperBuffer[0]과 ExtUpperBuffer[1], 그리고 낮은 값을 각각 어떻게 추출하나요?

 
rapid_minus :

좋은. 그런 다음 올바르게 작성하는 방법은 무엇입니까?:

MB_2=iBands(NULL,0,10,0,2.0,PRICE_CLOSE,2);
Delta_0=iBands(ExtUpperBuffer[0]-ExtLowerBuffer[0]);

ExtUpperBuffer[0]과 ExtUpperBuffer[1], 그리고 낮은 값을 각각 어떻게 추출하나요?

여기서도 표시기 호출이 잘못 녹음되었습니다.

정확하게, 나는 그것이 어떻게 여기에 있을 것인지 이미 썼습니다. 스스로 발명할 필요가 없으며 모든 것이 가이드에 있습니다.

다시:

High_2= iBands ( NULL , 0 , 20 , 2 , 0 , PRICE_CLOSE ,MODE_UPPER, 2 ); //это и есть ExtUpperBuffer[2]
High_1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,1); //ExtUpperBuffer[1]
High_0=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,0); //ExtUpperBuffer[0]
Low_2=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,2); //ну и нижние соответственно, ExtLowerBuffer[2]
Low_1=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,1); //ExtLowerBuffer[1]
Low_0=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0); //ExtLowerBuffer[0]
 
evillive :

여기서도 표시기 호출이 잘못 녹음되었습니다.

정확하게, 나는 그것이 어떻게 여기에 있을 것인지 이미 썼습니다. 스스로 발명할 필요가 없으며 모든 것이 가이드에 있습니다.

다시:

글쎄, 나는 그것을 세 번째로 얻었다. 보인다.

그래서 MB_2에서는 호출된 회선의 지정이 없다는 오류가 발생합니다. 그러나 중간 볼린저 라인을 호출하는 방법을 아직 찾지 못했습니다. 아니면 이동 평균처럼? MODE_SMA?

 
rapid_minus :

글쎄, 나는 그것을 세 번째로 얻었다. 보인다.

그래서 MB_2에서는 호출된 회선의 지정이 없다는 오류가 발생합니다. 그러나 중간 볼린저 라인을 호출하는 방법을 아직 찾지 못했습니다. 아니면 이동 평균처럼? MODE_SMA?

Mid=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,0); - 제로 바(괄호 안의 마지막 숫자는 필요한 바에 대한 오프셋임).

서두를 필요가 없습니다. 도움말을 주의 깊게 읽으십시오.

 
evillive :

Mid=iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,0); - 제로 바(괄호 안의 마지막 숫자는 필요한 바에 대한 오프셋임).

서두를 필요가 없습니다. 도움말을 주의 깊게 읽으십시오.

고맙습니다!

질문을 공식화하는 방법을 모를 때 도움말에서 찾는 방법 - 그것이 질문입니다!

다시 한번 감사합니다. 뒹굴뒹굴 하러 갔다.

 
rapid_minus :

고맙습니다!

질문을 공식화하는 방법을 모를 때 도움말에서 찾는 방법 - 그것이 질문입니다!

다시 한번 감사합니다. 뒹굴뒹굴 하러 갔다.

질문을 올바르게 하는 법을 배우는 것은 답을 찾는 데 절반입니다. 왜냐하면 어떻게든 ;)
 
mario065 :
다음은 2개의 이동을 교차한 후 막대의 수를 측정하는 방법을 보여준 예입니다.

귀하의 코드를 시도

질문 ef는 막대 번호입니까?

값을 주석 처리하면 0을 포함하여 시계에 다른 숫자가 표시됩니다.

테스터를 통해 같은 넌센스를 몰아봤어

그런 다음 하나의 값이 다른 값과 같으면 ef가 필요한 것과 같은 숫자를 그리기 시작했습니다.

고맙습니다

 
sannin :

당신의 코드를 시도

질문 ef는 막대 번호입니까?

값을 주석 처리하면 0을 포함하여 시계에 다른 숫자가 표시됩니다.

테스터를 통해 같은 넌센스를 몰아봤어

그런 다음 하나의 값이 다른 값과 같으면 ef가 필요한 것과 같은 숫자를 그리기 시작했습니다.

고맙습니다

예 f는 이동 평균을 넘은 후 막대의 수입니다.

잘 봤습니다 :)

코드는 다음과 같습니다.

 //+------------------------------------------------------------------+
//|                                                    count bar.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link        ""

extern int limit = 300 ;
//+------------------------------------------------------------------+
int init(){ return ( 0 );}
int deinit(){ Comment ( "" ); return ( 0 );}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
     static datetime time,timeup,timedn;
     double spread=MarketInfo( Symbol (),MODE_SPREAD);
     double maslow1,mafast1,maslow2,mafast2;
     int     shift,shift1,shift2,f,j;
    
     for (shift=limit;shift> 0 ;shift--){
        shift1=shift+ 1 ;shift2=shift+ 2 ;
        maslow1 = iMA ( NULL , 0 , 20 , 0 , MODE_SMA , PRICE_OPEN ,shift1);
        mafast1 = iMA ( NULL , 0 , 5 , 0 , MODE_SMA , PRICE_OPEN ,shift1);
        maslow2 = iMA ( NULL , 0 , 20 , 0 , MODE_SMA , PRICE_OPEN ,shift2);
        mafast2 = iMA ( NULL , 0 , 5 , 0 , MODE_SMA , PRICE_OPEN ,shift2);
 
     if (mafast2<maslow2 && mafast1>maslow1){
        timeup=Time[shift1];
       } 
     if (mafast2>maslow2 && mafast1<maslow1){
        timedn=Time[shift1];
       } 
     
     if (timeup > timedn){
        time = timeup;
       } else {
        time = timedn;
       }
     }
 
      int b1=iBarShift( Symbol (), 0 , time);      
      int b2=iBarShift( Symbol (), 0 , TimeCurrent ());
//Преброяване на баровете-от нулевия до началната дата
     for (j=b2;j<=b1;j++){
        f=b1-b2;
       }
      
   Comment ( "\n Време на брокера: " ,TimeToStr( TimeCurrent (), TIME_SECONDS ), " Локално време: " +TimeToStr( TimeLocal (), TIME_SECONDS ),
           "\n Текущ спред: " ,DoubleToStr(spread/ 10 , 1 ),
           "\n=====================" ,
           "\n Начална дата:           " ,TimeToStr(time, TIME_DATE | TIME_SECONDS ), 
           "\n Брой барове:            " ,f,
           "\n=====================" 
             ); 
   return ( 0 );
  }
//+------------------------------------------------------------------+

 
mario065 :

예 f는 이동 평균을 교차한 후 막대의 수입니다.

잘 봤습니다 :)

코드는 다음과 같습니다.

정말 감사합니다

부자가 되다

 
sannin :

정말 감사합니다

부자가 되다

커피를 대접하고 부자가 된 후에는 그것으로 충분합니다 ;)