[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 204

 
Allis:

Vous êtes un magicien)) Merci !
Exactement, en programmation je suis loin d'être un "magicien", je suis juste en train d'apprendre, mais dans d'autres branches, peut-être !)) Merci !
 

Bonsoir à tous. Il y a un indicateur (supérieur dans la figure) qui dessine ses valeurs (+1, 0, -1) sur la barre numéro 0, mais le calcul est effectué par la barre numéro 1. J'ai besoin d'écrire un indicateur qui compterait le nombre de barres dans chaque bloc continu séparé de l'indicateur supérieur +1 et -1 et tout l'historique (la moyenne dans la figure, la hauteur du graphique à barres en unités correspondant au nombre de barres).J'ai fait un indicateur (en bas dans la figure), mais il ne commence à être dessiné qu'au moment de l'installation dans la fenêtre (ligne verticale bleue).Aidez qui peut !


Code

int start()
  {
    
    int i;
      
    for(i=1;i<Bars-34-1;i++)                                               
     {
      double AO_Sig_Sig_1 =iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i);                           
      double AO_Sig_Sig_2 = iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i+1);
      
                                  
      if((AO_Sig_Sig_1!=AO_Sig_Sig_2)) break;                                                                
     }
         
    i=i*(AO_Sig_Sig_1);         
               
    if(i>0)            
     {
      UpMapBuffer[0]=i;
     }
    else
     {
      UpMapBuffer[0]=0;
     } 
         
    if(i<0)         
     {
      DnMapBuffer[0]=i;
     }
    else
     {
      DnMapBuffer[0]=0;
     }          
                 
      
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
borilunad:

C'est le reste de la division ! Regardez dans les étapes arithmétiques et dans votre imprimante !

Mettez-le et vous ne verrez que les deux résultats en alternance :

 int x = MathRand() % 2;
  Print("x =",x);


Je ne comprends pas la logique. Dans le livre que j'ai lu :

Si vous voulez calculer le reste de la division de la variablea par la variable bet écrire le résultat dans la variable ostatok, l'opérateur d'affectation se présente comme suit :

ostatok = a % b;

Ils'avère que dans notre cas, lorsqueMathRand() estdivisé par 2, la valeur de x doit être 0 ou 1. Pourquoi devrait-il être 0 ou 1 tout d'un coup ? Par exemple, un numéro aléatoire 9 apparaîtra. 9 % 2 = 4.5. Le reste de est égal à 4.
 
hoz:


Quelque chose dont je ne comprends pas la logique. Dans le livre que j'ai lu :

Ils'avère que dans notre cas, lorsqueMathRand() estdivisé par 2, il devrait y avoir une valeur de x égale à 0 ou 1. Pourquoi devrait-il être 0 ou 1 tout d'un coup ? Par exemple, un numéro aléatoire 9 apparaîtra. 9 % 2 = 4.5. Le reste de est égal à 4.

Lorsque quelque chose ne colle pas, il suffit de quelques clics pour répondre...

P.S. ostatok = 9 % 2 = 1.

 
TarasBY:

Lorsque quelque chose ne colle pas, il suffit de quelques clics pour répondre...

P.S. ostatok = 9 % 2 = 1.


Eh bien, c'est écrit :

"La division avec un reste(division modulo,trouver le reste de la division,le reste de la division) est uneopérationarithmétique aboutissant à deuxentiers:un quotient incomplet etle reste de la division d'un nombre entier par un autreentier."

9 : 2 = 4,5 Ce sont des nombres doubles.

Si tu enlèves la partie fractionnaire, ça fait 4. Où as-tu trouvé 1 ?

 
hoz:


Il y a quelque chose dans cette logique que je ne comprends pas. Dans le livre que j'ai lu :

Il s'avère que dans notre cas, lorsqueMathRand() estdivisé par 2, la valeur de x doit être 0 ou 1. Pourquoi devrait-il sortir 0 ou 1 tout d'un coup ? Par exemple, un numéro aléatoire 9 apparaîtra. 9 % 2 = 4.5. Le reste de est égal à 4.

Victor, ne confondez pas int et double ! Doncint x = MathRand() % 2; donne 0 ou 1 ! Il ne peut pas donner 0,1 ou 0,9, ni 1,1 ou 1,9, car les décimales dans int sont arrondies et les moins de 0,5 sont rejetées ! Et le signe % signifie le reste de la division, pas le signe de division. Le signe de division est /.

Je mets votre exemple avec 9 et j'obtiens un seul résultat, 1, car il n'y a pas de hasard :

  int x = 9 % 2;//MathRand()
  Print("x =",x);

Vous demandez :

9 : 2 = 4,5 Ce sont des nombres doubles.

Si on enlève la partie fractionnaire, on obtient 4. Où avez-vous trouvé 1 ?

Je réponds : Donc 0,5 est arrondi à 1 !

Ce qui est intéressant, c'est que lorsque j'ai mis un point et zéro (2.0) à 2, le compilateur m'a donné une erreur disant que % ne nécessite qu'un entier !

Ainsi, même si vous mettez un double x, il en sortira toujours un entier int. Merci, Victor, pour vos doutes ! Grâce à eux et à vous, j'ai fait une recherche intéressante, qui élargira mes possibilités de transformations mathématiques ! Je vous dois un verre (virtuel) ! :))

 
hoz:


Eh bien, c'est ce que ça dit :

" Ladivision avec un reste(division modulo,trouver le reste de la division,reste de la division) est uneopérationarithmétique qui aboutit à deuxentiers:un quotient incomplet etle reste de la division d'un nombre entier par un autrenombre entier."

9 : 2 = 4,5 Ce sont des nombres doubles.

Si tu enlèves la partie fractionnaire, ça fait 4. Où as-tu trouvé 1 ?

Quel est le nombre entier le plus proche de 9 qui est divisible par 2 sans reste ? Puis soustrayez ce nombre du diviseur (9). Qu'avez-vous obtenu ?

P.S. Si vous avez échoué, vous pouvez imprimer le résultat : Print ("ostatok = ", 9 % 2) ;

 

laveosa 07.03.2013 21:15

Pouvez-vous me dire comment remplacer Symbol() par "EURUSD" dans Ordersend() ? ou quoi ?

 
Mathemat:

laveosa 07.03.2013 21:15

Bonjour. Pouvez-vous me dire comment remplacer Symbol() par "EURUSD" dans Ordersend(). ou quoi ?

NULL
 

Pouvez-vous me dire comment remplacer Symbol() par "EURUSD" dans Ordersend()? ou quoi ?

ticket=OrderSend("EURUSD",OP_SELL,Lot,op,3,sl,tp,comm,magic,0,Red) ; écrivez-le simplement comme ceci. Dites-moi ce qui ne va pas avec le 4106.

Raison: