[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 - 2. - page 485

 
FOReignEXchange:


Je ne comprends pas ? Je regarde juste dans l'aide, là OrderSelect() utilise une condition. Et je ne l'ai vu nulle part sans vrai.

if est une instruction de condition. Et il devrait y avoir une condition entre parenthèses. Cela me semble plus logique. Même s'il n'y a pas de différence.


spécification :

bool OrderSelect( int index, int select, int pool=MODE_TRADES) 

renvoie à vrai ou faux

voir https://docs.mql4.com/ru/basis/operators/if.

Si l'expression est vraie, l'opérateur1 est exécuté, et le contrôle est donné à l'opérateur suivant l'opérateur2 (c'est-à-dire que l'opérateur2 n'est pas exécuté). Si l'expression est fausse, l'opérateur2 est exécuté.

if (expression) operator1 else operator2

La partie else de l'opérateur if peut être omise. Par conséquent, les instructions if imbriquées dont la partie else est omise peuvent être source d'ambiguïté. Dans ce cas, else est lié à l'opérateur if précédent le plus proche dans le même bloc qui n'a pas de partie else.

c'est-à-dire que la comparaison avec OrderSelect()==true n'est pas nécessaire - il suffit d'utiliser OrderSelect() ou !OrderSelect() au lieu de OrderSelect()==false

 

Ce n'est pas ce que je veux dire.

C'est juste que lorsque je sélectionne une commande, je l'écris toujours en entier.

if(OrderSelect(count,SELECT_BY_POS,MODE_TRADES)==true)

Je ne l'ai jamais vu sans vrai.

abolk:
то есть сравнение OrderSelect()==true делать не обязательно - достаточно просто использовать OrderSelect() или !OrderSelect() вместо OrderSelect()==false

Je l'ai.

 
FOReignEXchange:

Je n'en ai jamais vu un sans vrai.


Vous regardez les codes des mauvaises personnes.
 
FOReignEXchange:

Ce n'est pas ce que je veux dire.

C'est juste que lorsque je sélectionne une commande, je l'écris toujours en entier.

Je ne l'ai jamais vu sans vrai.

Je l'ai.


deux participations parfaitement égales - une participation n'est ni pire ni meilleure que l'autre - chacun fait comme il veut, comme il comprend, comme il a l'habitude de faire.
 
sergeev:

Vous regardez les codes des mauvaises personnes.


Au fait, je dois féliciter FOReignEXchange.

J'ai ouvert "Moving Average.mq4" et je l'ai vu :

      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
 
abolk:


Print() pour sortir la valeur de la variable global_trailing_SP directement dans la fonction que vous avez définie.

Où lisez-vous la valeur de cette variable ?


Wow ! )) Si j'imprime() la valeur de la variableglobal_trailing_SP à partir de la fonction présentée, je vois une valeur complètement inattendue dans le journal (surlignée en jaune). Alors qu'avant de sortir de cette fonction, il est imprimé correctement (à l'opposé du point rouge).

global_trailing_SP est une variable globale. Il est déclaré en dehors de la fonction Start(),

double global_trailing_SP = 0.0; 

Une fois que la fonction de stop suiveur a réussi à modifier la valeur de la position principale, la valeur de la perte de stop de la position principale est affectée dans une boucle séparée à la variableglobal_trailing_SP .

   for(count = OrdersTotal()-1; count >= 0; count--)
      {  OrderSelect(count,SELECT_BY_POS,MODE_TRADES);
         if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_Source_SP)
            {  global_trailing_SP = NormalizeDouble(OrderStopLoss(),dgt); Print("global_trailing_SP: ",DoubleToStr(global_trailing_SP,5));  }
      }
Il s'agit de la valeur indiquée par le point rouge ci-dessus.

Cette valeur est ensuite transmise à la fonction où diverses modifications de l'ordre sont effectuées. Mais en conséquence, le journal affiche une valeur à laquelle je ne m'attendais pas et la valeur du Stop Loss n'est certainement pas modifiée. Comment résoudre ce problème ? Il s'avère que tout n'est pas toujours aussi logique qu'il n'y paraît à première vue).

 

N'est-il pas préférable de le faire ici, là où se trouve le SELLSTOP ?

if((global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)) 
{  OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP,0,0,DeepPink);
Print("Условие ModifyOrder исполнилось: global_trailing_SP: ",global_trailing_SP,", Stop Loss: ",OrderStopLoss());  }
else   Print("Условие не выполняется!");

Pour que tout soit exactement comme dans VENDRE.

 
FOReignEXchange:

N'est-il pas préférable de le faire ici, là où se trouve le SELLSTOP ?

Pour que tout soit exactement comme dans VENDRE.


Cela ne semble pas être le problème dans ce cas. Lire la suite ci-dessus.
 
tol64:


Wow ! )) Si j'imprime() la valeur de la variable global_trailing_SP à partir de la fonction présentée, je vois une valeur absolument inattendue dans le journal (surlignée en jaune). Alors qu'avant de sortir de cette fonction, il est imprimé correctement (à l'opposé du point rouge).

global_trailing_SP est une variable globale. Il est déclaré en dehors de la fonction Start(),

Une fois que la fonction de stop suiveur a réussi à modifier la valeur de la position principale, dans une boucle séparée, la variable global_trailing_SP est affectée à la valeur de la perte de stop de la position principale.

Il s'agit de la valeur indiquée par le point rouge ci-dessus.

Cette valeur est ensuite transmise à la fonction où diverses modifications de l'ordre sont effectuées. Mais le résultat est que le journal affiche une valeur que je n'attendais pas alors que la valeur du Stop Loss n'est certainement pas modifiée. Comment résoudre ce problème ? Il s'avère que tout n'est pas toujours aussi logique qu'il n'y paraît à première vue))).


montrer comment lire la variable global_trailing_SP
 

Donc je ne comprends pas. L'ordre en attente existe-t-il au moment de la modification de l'ordre principal ?

S'il existe, alors la modification de l'ordre principal et la modification de l'ordre en attente sont dans le même bloc. Et si l'ordre principal est modifié, l'ordre en attente devrait faire de même, si telle est votre idée.

Une autre chose est que notre idée ne fonctionne pas. Cela signifie une erreur dans la condition. Essayez de tout faire de la même manière que dans la condition de modification de l'ordre principal, comme je l'ai montré ci-dessus. Il me semble que l'erreur est dans la logique. Je ne suis pas surpris. Tout est très compliqué ici. Vous devriez le rendre plus simple.