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

 
PolarSeaman :

그런 사이클이 3개 있는데 교체했는데 터미널이 멈춥니다.

나는 네 가지를 세었다.

   int i;

   SetIndexDrawBegin ( 0 , Bars -cb);
   SetIndexDrawBegin ( 1 , Bars -cb);

   double avg;

   ki= 2.0 /(p+ 1 );

   int total;
   int limit = GetRecalcIndex(total,rates_total,prev_calculated);

   for (i=limit; i>= 0 ; i--) 
      fx1[i]= Close [i];

   for ( int m= 0 ; m<=s; m++)
     {
      z1=fx1[ 0 ];
       for (i= 0 ; i<=limit; i++) {z1=z1+(fx1[i]-z1)*ki; hp[i]=z1;}

      z2=fx1[limit];
       for (i=limit; i>= 0 ; i--) {z2=z2+(fx1[i]-z2)*ki; fx1[i]=(hp[i]+z2)/ 2 ;}
     }

   fs= 0 ;
   for (i=limit; i>= 0 ; i--)
     {
       if (fx1[i]>fx1[i+ 1 ]) fs= 1 ;
       if (fx1[i]<fx1[i+ 1 ]) { if (fs== 1 ) fx2[i+ 1 ]=fx1[i+ 1 ]; fs= 2 ;}
       if (fs== 2 ) fx2[i]=fx1[i]; else fx2[i]= 0.0 ;

      avg= iATR ( NULL , 0 ,ATR,i+ 10 );
      upper[i] = hp[i] + distance*avg;
      lower[i] = hp[i] - distance*avg;

       if ( Close [i+ 1 +barsig]<upper[i+ 1 +barsig] && Close [i+barsig]>upper[i+barsig])
         dnar[i]= High [i]+arrots* Point ; else dnar[i]= EMPTY_VALUE ;

       if ( Close [i+ 1 +barsig]>lower[i+ 1 +barsig] && Close [i+barsig]<lower[i+barsig])
         upar[i]= Low [i]-arrots* Point ; else upar[i]= EMPTY_VALUE ;
     }

아무 것도 걸리지 않습니다. 범위를 벗어난 배열 이 없어야 합니다. 제 생각에는 0 막대의 값만 잘못 계산됩니다.

 
Ihor Herasko :

나는 네 가지를 세었다.

아무 것도 걸리지 않습니다. 범위를 벗어난 배열 이 없어야 합니다. 제 생각에는 0 막대의 값만 잘못 계산됩니다.

고마워, 주문. 0에서 필요하지 않고 첫 번째 막대에서 가져오고 싶지만 위치는 무작위로 열립니다.

sell_1_B= NormalizeDouble ( iCustom ( Symbol (), 0 , "HiLo" , 1 , 1 ), Digits );
sell_1_1_B= NormalizeDouble ( iCustom ( Symbol (), 0 , "HiLo" , 1 , 2 ), Digits );

if (sell_1_1_B== 0.0 &&sell_1_B!= 0.0 )
{открываю sell}
if (sell_1_1_B!= 0.0 &&sell_1_B== 0.0 )
{открываю buy}

왜요?

 
Ihor Herasko :

테스터에서 시각화에서 이것이 무엇입니까?

죄송합니다

첫 번째 휴식, 테스트의 시작, 오류가 있는 지표는 테스트 시작 후 차트에 떨어뜨리면 직선을 그립니다.

우리깨뜨린 것)

 

전문가의 버튼에 그래픽 도구의 "선택"을 두는 방법을 알려주십시오. 커서 아래에 있는 버튼을 클릭하면 도구 아이콘이 나타나고 끌어올 수 있습니다.

또한 이미 지정된 속성을 갖도록

 
PolarSeaman :

테스터에서 시각화에서 이것이 무엇입니까?

첫 번째 휴식, 테스트의 시작, 오류가 있는 지표는 테스트 시작 후 차트에 떨어뜨리면 직선을 그립니다.

우리깨뜨린 것)

네. 결국 이것은 다시 그리기 표시기이며 각 눈금마다 지정된 막대 수에 대한 전체 기록을 다시 계산합니다. 아주 나쁜 결정입니다. 그런 다음 다음을 수행해야 합니다.

   int i;

   SetIndexDrawBegin ( 0 , Bars -cb);
   SetIndexDrawBegin ( 1 , Bars -cb);

   double avg;

   ki= 2.0 /(p+ 1 );

   int total;
   int limit = GetRecalcIndex(total,rates_total,prev_calculated);

   for (i=total; i>= 0 ; i--) 
      fx1[i]= Close [i];

   for ( int m= 0 ; m<=s; m++)
     {
      z1=fx1[ 0 ];
       for (i= 0 ; i<=total; i++) {z1=z1+(fx1[i]-z1)*ki; hp[i]=z1;}

      z2=fx1[total];
       for (i=total; i>= 0 ; i--) {z2=z2+(fx1[i]-z2)*ki; fx1[i]=(hp[i]+z2)/ 2 ;}
     }

   fs= 0 ;
   for (i=total; i>= 0 ; i--)
     {
       if (fx1[i]>fx1[i+ 1 ]) fs= 1 ;
       if (fx1[i]<fx1[i+ 1 ]) { if (fs== 1 ) fx2[i+ 1 ]=fx1[i+ 1 ]; fs= 2 ;}
       if (fs== 2 ) fx2[i]=fx1[i]; else fx2[i]= 0.0 ;

      avg= iATR ( NULL , 0 ,ATR,i+ 10 );
      upper[i] = hp[i] + distance*avg;
      lower[i] = hp[i] - distance*avg;

       if ( Close [i+ 1 +barsig]<upper[i+ 1 +barsig] && Close [i+barsig]>upper[i+barsig])
         dnar[i]= High [i]+arrots* Point ; else dnar[i]= EMPTY_VALUE ;

       if ( Close [i+ 1 +barsig]>lower[i+ 1 +barsig] && Close [i+barsig]<lower[i+barsig])
         upar[i]= Low [i]-arrots* Point ; else upar[i]= EMPTY_VALUE ;
     }

물론 추하지만 작동합니다.

 
왜 그러한 구성이 변수 선언 에서 작동하지 않습니까?
 int K= 20 ;
int TIKET[K];
 
igrok333 :
이 구성이 변수 선언 에서 작동하지 않는 이유는 무엇입니까?

K는 변수이기 때문입니다. 컴파일 타임에 그 값을 알 수 없습니다. 작동하게 하려면 K를 상수로 만들어야 합니다.

 #define K 20
int TIKET[K];
 
Ihor Herasko :

네, 그렇습니다. 결국 이것은 다시 그리기 표시기이며 각 눈금마다 지정된 막대 수에 대한 전체 기록을 다시 계산합니다. 아주 나쁜 결정입니다. 그런 다음 다음을 수행해야 합니다.

물론 추악하지만 작동합니다.

고맙습니다. 우리는 너무 많은 시간을 보냈고 stsuko는 20개(!) 막대를 그립니다.

청원서를 작성해 볼까요?

세 개 이상의 막대를 다시 그리는 지표의 배포를 법으로 금지 하십시오!

국회 심의를 위해서는 1년에 총 10만 명의 서명이 필요하다.

 
PolarSeaman :

고맙습니다. 우리는 너무 많은 시간을 보냈고 stsuko는 20개(!) 막대를 그립니다.

더 낮은 cb 값을 설정하면 다시 그리는 막대가 줄어듭니다.

청원서를 작성해 볼까요?

세 개 이상의 막대를 다시 그리는 지표의 배포를 법으로 금지 하십시오!

국회 심의를 위해서는 1년에 총 10만 명의 서명이 필요하다.

)))

 

특정 날짜를 어드바이저에서 제외/추가하는 방법을 알려주시겠습니까?

예를 들어, 2018년 3월 2일에 거래하지 마십시오. 다른 옵션을 시도했지만 날짜와 혼동되었습니다.

 TimeDayOfYear ( TimeCurrent ()) != StrToTime ( "2018.03.02" )