[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 273

 
gince:

Il y a une division. Et la fonction CMM (bien qu'elle soit complète) indique qu'il n'y a pas assez de données dans le tableau résultant de la fonction. Je n'arrive pas à comprendre pourquoi. A cause de cela, j'obtiens une division par zéro.
Je suis assis au même endroit depuis des jours et je ne trouve pas l'erreur.
 
gince:
Je suis assis au même endroit depuis des jours et je ne trouve pas l'erreur.


quelle ligne exactement, où se trouve la division par 0 ? et à quelle valeur de l'indice
 

cette fonction ArrayChLR(C, y, max) donne une erreur ---ArrayChLR() : Not enough row elements ! n=0 ----.

void ArrayChLR(double& x[], double& y[], double& max) {
  double a, b, c, sx=0, sx2=0, sxy=0, sy=0;
  int    i, n=ArraySize(x);

  if (n>1) {
    for (i=0; i<n; i++) {
      sx+=i+1;
      sy+=x[i];
      sxy+=(i+1)*x[i];
      sx2+=(i+1)*(i+1);
    }
    a=sx*sy-n*sxy;
    c=sx*sx-n*sx2;
    if (c!=0) a=a/c; else a=0;
    b=(sy-a*sx)/n;
    ArrayResize(y, n);
    max = 0; 
    double dif[];
    ArrayResize(dif, n);
    for (i=0; i<n; i++) 
    {
      y[i]=a*(i+1)+b;
      dif[i] = MathAbs(Close[i] - y[i]);
      if(dif[i] > max) max = dif[i];      
    }
  } else Print("ArrayLR(): едостаточное количество элементов ряда n=", n);
}

Ainsi, le tableau s est vide et ses éléments sont vides.

08.04.2013 16:57:03 29.03.20:45 naktinis fletas EURUSD,M15 : division par zéro
2013.04.08 16:57:03 2013.03.29 20:45 naktinis fletas EURUSD,M15 : ArrayLR() :not enough elements in the array! n=0

 

Plus de questions

Quel est le meilleur ou le plus correct des filtres horaires ?

comme ceci

extern int     startHourFlatMA        =  16;    
extern int     startMinFlatMA        =  00;

int start(){
if(Hour() >= startHourFlatMA && Minute() >= startMinFlatMA)
.
.
.
retorn
}

ou

extern string  startstartFlatMA       = "16:00";
extern string  endstartFlatMA       = "00:00";

int start(){
if(TimeCurrent()>= StrToTime(startstartFlatMA) && TimeCurrent()<= StrToTime(endstartFlatMA)+24*60*60)
.
.
.
return
}
 
Pouvez-vous me dire si, parmi les ordres fermés, OrderSelect() commence à vérifier à partir de quel moment, de la fin ou du début ? Eh bien, ou de 0 ou quoi que ce soit... ?
 
CYBOPOB:
Pouvez-vous me dire si, parmi les ordres fermés, OrderSelect() commence à vérifier à partir de quel moment, de la fin ou du début ? Eh bien, ou de 0 ou quoi que ce soit... ?

Si vous définissez la boucle, c'est de là qu'elle part. Lisez attentivement la description de cette fonction dans F1 de l'éditeur ME.
 

Bonne journée.

Pourriez-vous me dire si mql4 permet à l'indicateur de dessiner une ligne horizontale sur l'autre graphique (pas sur celui sur lequel il plane) ?

 
Roman.:

Si vous définissez la boucle, c'est de là qu'elle proviendra. Lisez attentivement la description de cette f-fi à travers F1 dans l'éditeur MU.


Eh bien, s'il était écrit en langage humain ... Donc, dans toute entreprise, il semble d'abord que tout est clair, mais un peu plus tard, vous commencez à devenir fou ...)))

O.K. Un exemple concret :


L'ordre est fermé à la fin du mouvement TP, mais comme le signal SELL n'a pas été annulé, un nouvel ordre est ouvert, ce qui est inacceptable.

Je mesure 720 sec, après quoi nous pouvons ouvrir une nouvelle commande. Donc, dans ce cas, à partir de quel ordre ces secondes seront mesurées, à partir du premier ordre dans l'histoire ou du dernier ?

Et ensuite : Et si c'est le cas, que se passe-t-il ensuite ? Puisque j'ai ajouté z, cela revient à compter depuis le début ? Brrrr :))


Merci beaucoup !

 

J'ai trouvé le point d'erreur.

int start()
 {
   double volMA11, volMA12, volMA21, volMA22;  
   double x[], y[]; 
   
   Print("******************STARTAS*****************************************");
   
   if(!TF_F_NewBar())return(0);
 
   volMA11 = iCustom(NULL, 15, "volumeMA",  2, 1);         
   volMA12 = iCustom(NULL, 15, "volumeMA",  2, 2);
   volMA21 = iCustom(NULL, 15, "volumeMA",  3, 1);
   volMA22 = iCustom(NULL, 15, "volumeMA",  3, 2);
    
   if(DayOfWeek()==1 || DayOfWeek()==2 || DayOfWeek()==3 || DayOfWeek()==4)                             //jei pirmadienis antradienis ar treciadienis, ar ketvirtadienis
   {         
      if(TimeCurrent()>= StrToTime(startstartFlatMA) && TimeCurrent()<= StrToTime(endstartFlatMA)+24*60*60)
      {
         //Print("fleto starto ieskojimo laikas prasidejo  "+TimeToStr(TimeCurrent())+" >= "+TimeToStr(StrToTime(startstartFlatMA))+
               //"  &&  "+TimeToStr(TimeCurrent())+" <= "+TimeToStr(StrToTime(endstartFlatMA)+24*60*60));
         bool laikas = true;
         Print("laikas = "+laikas);         
         if(volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0)
         {                                                                                   //jei buvo susikirtimas
            susikirtimas = true;           
         }
         if(susikirtimas == true) 
         {
            if(zvakes_pabaiga)
            {
               if(iTime(NULL, BarEnd, 1)!= LastTime)
               {            
                  LastTime = iTime(NULL, BarEnd, 1);
                  flat = true;           
                  LastTime = iTime(NULL, BarEnd, 1);
              }
              else return(0);            
           }
           else flat = true;
           if(flat == true)
           {
               i++; 
             //Zinodami indekso eiles numeri galim keisti masyvo ilgi
            
            ArrayResize(avgPriceH,i); 
            ArrayResize(avgPriceL,i);
            ArrayResize(avgPriceO,i); 
            ArrayResize(avgPriceC,i);        
           Print("ArraySize     "+ArraySize(avgPriceC));
            //jei fletas prasidejo renkam duomenis i masyva zvakiu HL ir OC skaiciavimui
            
            avgPriceH[i] = High[1];    
            avgPriceL[i] = Low[1];     
            avgPriceO[i] = Open[1];   
            avgPriceC[i] = Close[1];
         
            j++; 
            
            ArrayResize(chPriceC,j); 
            ArrayResize(chTime,j);    
           } 
         for(int a=0; a<=i; a++)Print("avgPriceC["+a+"]="+avgPriceC[a]);
         
        }        
     }
  }
    
  return(0);
}

Ces pages impriment des zéros. POURQUOI ?

2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[21]=0.00000000
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[20]=0.00000000
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[19]=0.00000000
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[18]=0.00000000
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[17]=0.00000000

.

.

.
08.04.2013 19:06:05 28.03.20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[2]=0.00000000
08.04.19:06:05 28.03.20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[1]=0.00000000
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : avgPriceC[0]=0.00000000
2013.04.08 19:06:05 2013.03.28 20:00 testavimas naktini fleta EURUSD,M15 : ArraySize 21

 
CYBOPOB:


Eh bien, si seulement il avait été écrit humainement... Tout semble être clair au début, mais un peu plus tard, on commence à perdre la tête...)).

O.K. Un exemple concret :


L'ordre est fermé à la fin du mouvement TP, mais comme le signal SELL n'a pas été annulé, un nouvel ordre est ouvert, ce qui est inacceptable.

Je mesure 720 sec, après quoi nous pouvons ouvrir une nouvelle commande. Donc, dans ce cas, à partir de quel ordre ces secondes seront mesurées, à partir du premier ordre dans l'histoire ou du dernier ?

Et ensuite : Et si c'est le cas, que se passe-t-il ensuite ? Puisque j'ai ajouté z, cela revient à compter depuis le début ? Brrrrr :))


Merci beaucoup !


Cette fonction renvoie le nombre de secondes écoulées depuis la dernière position fermée.