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

 
mila.com :

나는 내 사이클롭스로 그것을 알아낼 수 없고 그것의 지시자를 정확하게 입력한다.

스크립트는 모든 설정에 대해 0을 반환합니다. 이제 첫 번째 막대와 세 번째 막대의 차이가 0.005이기 때문에 이론적으로 3개를 반환해야 합니다.

아마도 그것은 불분명했습니다. 나는 이렇게 루프하고 싶다


double ma_etalon=iMA(NULL,0,...,i+1);

double ma_curr;

int shift;

for(shift=2;shift<5;shift++) {

    ma_curr=iMA(NULL,0,...,i+shift);

    if (ma_etalon-ma_curr<0.005) break; // ах ты чёрт, значение близко

}

if (shift==5) {

   // цикл досчитал до конца, то есть все значение довольно далеко
   // ... развернись плечо ...

}

 
mila.com :

고마워, 하지만 뭔가 잘못됐어


0.005는 무엇을 측정합니까? (분명히 _Point를 곱해야 함)
 

도움을 주신 모든 분들께 감사드립니다.

 
mila.com :

도움주신 모든 분들께 감사드립니다.)

이것이 필요한지 궁금하십니까?

 double prevMA= 0 ,currMA= 0 ;
 for ( int i= 1 ;i<= 5 ;i++) {
   if (i== 1 ) currMA= iMA ( Symbol (), 0 , 14 , 0 , MODE_EMA , PRICE_CLOSE ,i);
  prevMA= iMA ( Symbol (), 0 , 14 , 0 , MODE_EMA , PRICE_CLOSE ,i);
   if ( MathAbs (prevMA-currMA)> 0.0005 ) {
   // сюда пишем в буфер
   break ;
  }
 }
 
Vitaly Muzichenko :

이것이 필요한지 궁금하십니까?

예, 하지만 이 구성을 기본 표시기 루프에 맞추는 방법은 무엇입니까?

 
Vladimir Pastushak :

나는 0 대신에 당신의 후행 베팅에서 분명히 당신에게 썼습니다.

이 옵션을 확인하십시오


모든 것이 작동합니다!!! :)))) .... 우리를 참아 주셔서 대단히 감사합니다. 평범한))))))). 매우 감사합니다!)

 

안녕하세요.

iCustom을 사용하여 시프트가 있는 다른 시간대의 표시기 값을 어떻게 얻을 수 있습니까?

저것들. 저는 M5에서 작업하고, M15에서 이전 양초를 사용하여 M15에서 표시기의 값을 얻고 싶습니다.

 int start() 
{ 
  HistBar = History;
   int i,counted_bars = IndicatorCounted ();
   if (counted_bars < 0 ) return (- 1 );
   if (counted_bars > 0 ) counted_bars--;
   int limit = MathMin ( Bars -counted_bars,HistBar+ 100 );

   for (i=limit; i>= 0 ; i--)
   {  
   int HT1,HT2; 
         if ( _Period == PERIOD_M1 )  
            {HT1 = PERIOD_M5 ;
            HT2 = PERIOD_M15 ;}
         else
           {
           if ( _Period == PERIOD_M5 )  
            {HT1 = PERIOD_M15 ;
            HT2 = PERIOD_M30 ;}
           else
              {
               if ( _Period == PERIOD_M15 )  
               {HT1 = PERIOD_M30 ;
               HT2 = PERIOD_H1 ;}
               }
            }
   //MFI
   long Volume_0_0 = iVolume ( NULL , 0 ,i);
   long Volume_0_1 = iVolume ( NULL , 0 ,i+ 1 );
   double BWMFI_0_0 = iBWMFI ( NULL , 0 ,i);
   double BWMFI_0_1 = iBWMFI ( NULL , 0 ,i+ 1 );

   ///////// вопрос как тут указать правильно
   long Volume_1_0 = iVolume ( NULL ,HT1,i);
   long Volume_1_1 = iVolume ( NULL ,HT1,i+ 1 );
   double BWMFI_1_0 = iBWMFI ( NULL ,HT1,i);
   double BWMFI_1_1 = iBWMFI ( NULL ,HT1,i+ 1 );
   ....
}
 
LSM :

안녕하세요.

iCustom을 사용하여 시프트가 있는 다른 시간대의 표시기 값을 어떻게 얻을 수 있습니까?

저것들. 저는 M5에서 작업하고, M15에서 이전 양초를 사용하여 M15에서 표시기의 값을 얻고 싶습니다.

설명서를 주의 깊게 읽으십시오.

 double    iCustom (
   string        symbol,           // имя символа
   int           timeframe,         // таймфрейм
   string        name,             // папка/имя_пользовательского индикатора
   ...                             // список входных параметров индикатора
   int           mode,             // источник данных
   int           shift             // сдвиг
   );
 
Alexey Viktorov :

설명서를 주의 깊게 읽으십시오.

내 질문을 수정하고 코드를 추가했습니다. 주기가 있습니다. 이것이 루프에서 일어날 때 내가 무엇을 얻을 것인지는 분명하지 않습니다.
 
LSM :
내 질문을 수정하고 코드를 추가했습니다. 주기가 있습니다. 이것이 루프에서 일어날 때 내가 무엇을 얻을 것인지는 분명하지 않습니다.

누군가에게 유용한 경우를 대비하여 내 질문에 답하겠습니다.

   
   !!!!
   int y = iBarShift ( NULL ,HT1, Time [i]);
   
   long Volume_1_0 = iVolume ( NULL ,HT1,y);
   long Volume_1_1 = iVolume ( NULL ,HT1,y+ 1 );
   double BWMFI_1_0 = iBWMFI ( NULL ,HT1,y);
   double BWMFI_1_1 = iBWMFI ( NULL ,HT1,y+ 1 );