[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 307

 

On utilise généralement <=. Ou >=. Dans les deux cas, la mise en œuvre est matérielle, Metaquotes n'a rien à voir avec cela.

Les développeurs d'autres langues n'y sont pour rien non plus. Fonctionnement de base. Comme le + et le -.

 
drknn:

Puisque la condition n'est pas une disjonction stricte (et qu'elle est toujours vraie si au moins un élément est vrai), la façon la plus logique de traiter cette condition serait de diviser d'abord la molécule(a>b || c>d) en atomes "a>b" et "c>d", puis de boucler sur les atomes séquentiellement pour vérifier la vérité. Et si l'atome suivant est vrai, alors on interrompt immédiatement la boucle, permettant au programme d'effectuer l'action qui se trouve juste après les parenthèses - c'est-à-dire de ne pas chercher dans le reste des atomes, car ce n'est pas nécessaire. Et il importe peu que nous cherchions du début à la fin ou de la fin au début de la liste d'atomes créée. Seul le développeur peut vous montrer la direction de la recherche (méta-citations). Mais pourquoi en avez-vous besoin ? Vous écrivez votre propre compilateur?
Il m'est venu à l'esprit que si, en logique TC, la condition a>b est vraie beaucoup plus souvent que c>d==vrai, alors l'ordre de vérification de la vérité de ces deux conditions peut être important pour accélérer le programme.
 
artmedia70:
Il me vient à l'esprit que si, dans la logique TC, la condition a>b est vraie beaucoup plus souvent que c>d==vrai, alors la façon dont ces deux conditions sont vérifiées peut avoir de l'importance pour accélérer le programme.

En fait, l'expression ressemble à ceci : if(a>b || (a<=b && c>d)). Si le contrôle de vérité est effectué de gauche à droite, l'expression a<=b sera superflue du point de vue de la vitesse du programme. La question était de savoir exactement si c'est de gauche à droite ou vice versa, ou différemment selon les cas.
 
AndEv:

En fait, l'expression ressemble à ceci : if(a>b || (a<=b && c>d)). Si le contrôle de vérité est effectué de gauche à droite, l'expression a<=b sera superflue du point de vue de la rapidité du programme. La question était juste de savoir si c'est de gauche à droite ou vice versa, ou différemment selon les cas.

Pouvez-vous s'il vous plaît expliquer la raison pour laquelle l'EA n'ouvre pas les ordres et écrit l'erreur 133.
 
paladin80:

Il est nécessaire de comparer le temps d'ouverture de la position avec le temps d'ouverture de la barre actuelle Time[0]. Si l'heure d'ouverture d'une position est supérieure ou égale à l'heure d'ouverture de la barre - le conseiller expert n'ouvre pas de nouvelles positions. Lorsqu'une nouvelle barre apparaît, Time[0] change sa valeur à un moment ultérieur et cette comparaison montrera que la position n'a pas encore été ouverte sur la (nouvelle) barre actuelle et que nous pouvons négocier.

À propos, votre question peut également être décomposée en deux sous-questions :
1. A la barre actuelle, une position a été ouverte et a réussi à être fermée, mais nous attendons toujours une nouvelle barre.
2. Sur la barre actuelle, une position a été ouverte et a réussi à se fermer, alors nous pouvons ouvrir une position à nouveau sur la même barre (c'est-à-dire qu'une position peut être ouverte sur la même barre simultanément).

c'est-à-dire que dans une seule et même barre, la condition pour ouvrir une position devient Vrai pendant quelques minutes et la position est ouverte. ensuite, elle devient Faux puis Vrai à nouveau et une deuxième position est ouverte. comment faire ? j'ai seulement pensé à ouvrir une position une fois par barre peut-être y a-t-il d'autres options ?
 
Qu'est-ce que la déstratification? Est-ce comme "arrêter de parler" ?
 
GarKain:
j'ai un problème avec ceci : dans une seule et même barre pendant quelques minutes, la condition pour ouvrir un ordre devient vraie et l'ordre s'ouvre. ensuite, il échoue et ouvre à nouveau un deuxième ordre. comment puis-je combattre ceci ? j'ai seulement essayé d'ouvrir un ordre une fois par barre peut-être y a-t-il d'autres options ?

Je vois que vous utilisez un drapeau qui autorise/refuse l'ouverture d'une position. Sans connaître la condition du drapeau, il est impossible de vous dire quoi que ce soit. Dans mon EA, j'utilise 2 approches pour ouvrir une position et je peux proposer le code suivant :

if (OrdersTotal()>0)
{  for (i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()==Symbol())
         {  if (OrderMagicNumber()==MagNum) // Проверка соответствия позиции по магик-номеру
            {  Closed_bar=OrderOpenTime();
               if (Closed_bar>=iTime(NULL,PERIOD_H1,0))
               return(0);
         }  }
}  }  }
 
moskitman:
Qu'est-ce que la déstratification? Est-ce comme "arrêter de parler" ?

Appliquer un filtre passe-bas à une série == soustraire la composante de tendance (pente). L'exemple le plus simple : appliquer un muwing au prix, puis afficher la différence dans une fenêtre séparée.
 
paladin80:

Je vois que vous utilisez un drapeau qui autorise/refuse l'ouverture d'une position. Sans connaître la condition du drapeau, il est impossible de vous dire quoi que ce soit. Dans mon EA, j'utilise 2 approches lors de l'ouverture d'une position et je peux proposer le code suivant :



if (OrdersTotal()>0)
{  for (i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()==Symbol())
         {  if (OrderMagicNumber()==MagNum) // Проверка соответствия позиции по магик-номеру
            {  Closed_bar=OrderOpenTime();
               if (Closed_bar>=iTime(NULL,PERIOD_H1,0))
               return(0);
         }  }
}  }  }

Je ne comprends pas bien ce qui va où et à partir de quoi.

 
Je l'ai écrit comme ça :

si ceci et cela, alors c'est "égal à".

S'il est égal à "True", l'ordre s'ouvre.



Si j'écris si ceci et cela, la commande s'ouvre. Cela résoudra-t-il le problème ?