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

 
Bon après-midi. Est-il possible de fixer des limites de profit dans MetaTrader 4. Exactement en limites de devises, pas en pips. Si oui, comment
 
   for(i=0;i<limit;i++) /*вопрос: еще использовал и такую последовательность for(i=Bars-1; i>=0; i--), есть ли разница с какой 
   "стороны" заполнять массив и рассматривать значения?*/
   
   RSI=iRSI(0,0,8,PRICE_CLOSE,i); 
   
   // задаем пустое значение буфера 
   RSIBuffer3[i]=0.0
   /* вроде так, мысль такая, что буфер должен быть пустым в цикле for(int i=0;i<limit;i++), до момента достижения 
   RSI заданных значений. Вопрос: так ли? и где он должен находится? */ 
   
   //ставим условие при котором пока RSI >= 70                     
   {
    while RSI>=70    
     {
       i++; //вопрос: где то видел эту часть кода в конце цикла, есть ли разница?
             
       // заполняем буфер значениями RSI
        
       RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,i);
             
     }
        
     // определяем позицию максимального значения в массиве      
        
     int RSI_max = ArrayMaximum (RSIBuffer3[i], int count=WHOLE_ARRAY, int start=0); /* тут выдает ошибку на значениях count и start отсюда вопрос: нужно ли определять размер массива через ArraySize? и какое начальное значение должно быть, не i ли?*/
             
     //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
     if RSI=RSIBuffer3[RSI_max];
                
     // рисуем стрелку на этом значении
        
     ExtMapBuffer2[i]=High[i]+5*Point;
            
     else 
                
     ExtMapBuffer2[i]=0.0;
           
   }
      //ставим условие при котором пока RSI <= 30                     
   { 
    while RSI<=30
        {    
        i++;
        // заполняем буфер значениями RSI
        
        RSIBuffer3[i]=iRSI(0,0,8,PRICE_CLOSE,i);
        
        {        
                
        // определяем позицию минимального значения в массиве  
            
        int RSI_min = ArrayMinimum (RSIBuffer3[i], int count=WHOLE_ARRAY, int start=0);
        
                
        //ищем бар со значением RSI равным максимальному значению RSI в массиве 
        
        if RSI=RSIBuffer3[RSI_min];
                
        // рисуем стрелку на этом значении
             
        ExtMapBuffer1[i]=Low[i]-5*Point;
             
        else 
             
        ExtMapBuffer1[i]=0.0;            
          
        }
                   
   return(0);
   }

Aidez-moi à traiter la logique, je n'arrive pas à traduire la logique simple dans le programme (pouvez-vous me recommander de la littérature).

Le défi : Calculer le RSI maximal (minimal) à des valeurs supérieures à 70 (inférieures à 30) et dessiner une flèche vers le bas (vers le haut) au-dessus de la barre.

à ces valeurs.

Mise en œuvre (première partie, la deuxième partie est similaire) :

1. calculer la valeur RSI pour chaque barre

2. si RSI est supérieur à 70, remplissez le tampon RSI avec ses valeurs.

3. trouver la position de la valeur maximale dans le tableau

4. recherchez la barre dont la valeur RSI est égale à la valeur RSI maximale du tableau.

5. Dessinez une flèche au-dessus de cette barre.

Eh bien, il y a quelque chose comme ça, mais en écrivant le code, j'ai beaucoup de questions, d'erreurs et je suis dans le pétrin ((

Et voici l'implémentation dans le code.

 
j'ai mélangé le texte et le code, désolé
 

Messieurs, veuillez m'indiquer comment coder l'algorithme suivant en utilisant une boucle.

si (iLow (Symbole (),0,1) > iLow (Symbole (),0,10))// si le MINIMUM de la première bougie > MINIMUM de la dixième bougie

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point, "jfh",123 ) ; // ouvre l'ordre.

JE DOIS DEVOIR DEVOIR

Si Low 1 et simultanément Low 2 et simultanément Low 3...... . ...et simultanément bougie basse 9> bougie basse 10 ( c'est-à-dire bougie basse de 1 à 9)

/ /ouverture de la commande.

Merci.

 
solnce600:

Messieurs, veuillez m'indiquer comment coder l'algorithme suivant en utilisant une boucle.

si (iLow (Symbole (),0,1) > iLow (Symbole (),0,10))// si le MINIMUM de la première bougie > MINIMUM de la dixième bougie

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point, "jfh",123 ) ; // ouvre l'ordre.

JE DOIS DEVOIR DEVOIR

Si Low 1 et simultanément Low 2 et simultanément Low 3...... . ...et simultanément bougie basse 9> bougie basse 10 ( c'est-à-dire bougie basse de 1 à 9)

/ /ouverture de la commande.

Merci.


Nous créons un drapeau de condition de succès, le mettons en tru, passons le nombre requis de bougies dans la boucle, si à l'une d'entre elles la condition n'est pas remplie, mettons le drapeau en faux et sortons de la boucle.
 
FAQ:

Créez un drapeau de réussite de condition, mettez-le dans le tuyau, passez le nombre requis de bougies dans la boucle, si à l'une d'elles la condition n'est pas remplie, mettez le drapeau dans le faux et sortez de la boucle.

Merci beaucoup. Désolé pour l'amour de Dieu.... je suis toujours un peu lent à comprendre ce que vous avez écrit.

Je vous serais très reconnaissant si vous pouviez écrire le code..... et alors je comprendrais tout.

 

bool have = true;

for(int i=0;i<10;i++){

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

 
FAQ:

bool have = true;

for(int i=0;i<10;i++){

   if(Low[i]<=Low[i+1]){have=false; break;} 

if(have){

// действия если условие соблюдено 

}else{

 // действия если условие не соблюдено

}

Merci beaucoup. Merci à vous .... et des gens comme vous... J'ai fait quelques progrès dans l'apprentissage de la sagesse de la programmation.....
 

Messieurs, comment fermer un ordre en suspens en n, nombre de pips s'il n'a pas été déclenché ?

 
dyxaa:

mesdames et messieurs, comment fermer un ordre en suspens en n, nombre de pips s'il ne s'est pas déclenché ?

Il ne peut pas être fermé, mais il peut être supprimé.

Raison: