Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 133

 
skyjet:


Mais je compare 3, 2 et 1 barres, donc le calcul est limité à x >=1 ?

Et cela signifie-t-il que les bars ayant le même prix ne sont tout simplement pas pris en compte, qu'aucun numéro ne leur est attribué ?

En réglant les paramètres d'optimisation : start 1, step 1, end 4 ; sur H1 et H4 l'onglet des résultats est simplement vide, sur D1 la même rentabilité à un nombre différent de barres analysées.

Peut-être que ce que j'ai compris de votre question est différent de ce que vous vouliez dire. Mon exemple compare les prix d'ouverture entre les barres 3 et 2, et 2 et 1. Les barres 3 et 1 ne sont pas comparées. Si les valeurs comparées sont égales, rien ne se passe, on passe simplement à la comparaison suivante.
Pourquoi x>1 (et non >=). La première itération compare Open[3]==Open[3-1], c'est-à-dire Open[3]==Open[2]. OK. Au deuxième (x=2), Open[2]==Open[1]. OK. Il n'y a pas de troisième itération. A x>=1 il y aura une comparaison Open[1]==Open[0], ce n'est pas OK, car il y aura une comparaison avec 0 barre.
 
T-G:

Les professionnels ne peuvent aller nulle part sans toi.

Aide pour la fonction. Ce qui compte le dernier nombre d'ordres perdants dans l'historique à un ordre plus.

Par exemple, l'historique montre 3 dernières commandes en moins, puis 1 en plus et 2 en moins.

Cette fonction devrait compter les trois derniers (avant l'ordre positif)

int Number=0;
//---
if (OrdersHistoryTotal()>0)
{  for (int i=OrdersHistoryTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {  if (OrderProfit()<0.0)
         Number+=1;
         else break;
}  }  }
Les commandes clôturées uniquement en déficit sont comptabilisées ici. Si le gain = 0 (zéro), le comptage est interrompu.
 
paladin80:
Les commandes clôturées uniquement en déficit sont comptabilisées ici. Si le gain = 0 (zéro), le comptage est interrompu.
Il se peut qu'ils n'aillent pas nécessairement dans l'ordre dans lequel vous les avez lus. Pour être exact et sans ambiguïté, les commandes doivent être additionnées dans un tableau à deux dimensions : dans la première dimension se trouve l'heure de fermeture, et dans la seconde le ticket de commande. Ensuite, il faut trier le tableau selon la première dimension, le réduire à trois et les vérifier (les trois dernières).
 
chief2000:
Je voudrais reformuler et compléter ma question précédente.
Voici le code pour un tableau de 4 éléments. En fait, le nombre d'éléments dans le tableau est une variable.
Comment puis-je modifier le code pour que le nombre de boucles "for" imbriquées devienne variable, un "for" par élément du tableau ?
Merci !

int start() { 

   int Array[4]                                       = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size                                  = ArrayRange(Array,0);


   for(x1=0; x1<Array_Size; x1++) {
      Print("Combination                       = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++) {
         Print("Combination                    = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++) {
            Print("Combination                 = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }


   return(0);
}


En regardant cette situation, j'ai commencé à me poser des questions. Quand un tas de boucles imbriquées sont disponibles. Comment se déroulent les calculs ? À partir de l'emboîtement le plus profond ou vice versa ?

C'est-à-dire le premier à être calculé :

 for(x4=x3+1; x4<Array_Size; x4++) {
               Print("Combination              = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);

Ou de l'autre côté ? Je veux comprendre comment tout cela fonctionne.

 
comment faire en sorte qu'un EA prenne en compte les niveaux des indicateurs techniques. Par exemple cci. Si la ligne est au-dessus du niveau 0, alors effectuez des actions. Comment faire ?
 
webip:
Comment faire en sorte qu'un EA prenne en compte les niveaux des indicateurs techniques. Par exemple cci. Si la ligne est supérieure à 0, alors effectuez des actions. Comment faire ?

Si cci est supérieur à zéro, alors ... Si cci est inférieur à zéro, alors ...

Fonction iCCI() ;

 

Gourous, dites-moi comment résoudre un problème. Nous avons besoin d'un nombre positif pour calculer la différence entre l'ouverture et la fermeture. Par exemple, si le prix augmente et que vous soustrayez le prix de clôture du prix d'ouverture, vous obtenez un nombre négatif.

 
artmedia70:

Si cci est supérieur à zéro, alors ... Si cci est inférieur à zéro, alors ...

Fonction iCCI() ;



Non. Je connais la fonction, mais je ne sais pas comment la refléter dans le code. Que pensez-vous de ça ?

 if(iCCI() > 0)
  {
    //остальной код?
  }
 
Forexman77:

Gourous, dites-moi comment résoudre un problème. Nous avons besoin d'un nombre positif pour calculer la différence entre l'ouverture et la fermeture. Par exemple, si le prix augmente et que je soustrais un nombre négatif du prix d'ouverture, j'obtiens un nombre négatif.


double MathAbs( double valeur)
La fonction renvoie la valeur absolue (valeur modulo) du nombre qui lui est passé.
 
hoz:

En regardant cette situation, j'ai commencé à me poser des questions. Quand un tas de boucles imbriquées sont disponibles. Comment se déroulent les calculs ? À partir de l'emboîtement le plus profond ou vice versa ?

C'est-à-dire le premier à être calculé :

Ou de l'autre côté ? Je veux comprendre comment tout cela fonctionne...


Vous pouvez voir les résultats que j'ai donnés précédemment pour 4 cycles, ici le cycle le plus interne est déclenché une fois pour obtenir 1234.
Raison: