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

 
artmedia70:
La réponse devrait être donnée d'elle-même. Trier les postes ouverts en fonction de leur date d'ouverture. Et ensuite les fermer par la liste du tableau trié.

Compliqué pour moi, pensera) il y a un codepour fermer les ordres dans l'ordre où ils ont été ouverts.

//+------------------------------------------------------------------+
//|                 Закрыть все ордера                               |
//+------------------------------------------------------------------+


double ClossAllOrders ()

{
  for(int i=0; i<OrdersTotal(); )
  {
    if ( !OrderSelect(i, SELECT_BY_POS) )
      break;
    
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, Lime );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, Lime );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
    
    if(result == false)
    {
      Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      i++;
      Sleep(500);
    }  
  }
}

// End

Si je comprends bien, le tri se fait au détrimentde OrderTicket.

comment le mettre dans le code)

 
_new-rena:

138 - "Le prix demandé n'est pas à jour, ou l'offre et la demande sont mélangées.

Le prix d'ouverture/fermeture ne peut pas être recalculé, car il est là, mais il y a un problème ici(vous devez interroger le prix et lui donner une valeur en utilisant MarketInfo, et réaffecter celle-ci à une autre variable) :

Merci pour le conseil) Mais il s'est avéré que mon problème se situe dans l'EA lui-même et non dans cette fonction.
 
Comment se souvenir d'un certain niveau. Disons que c'était le maximum d'une bougie. Mais l'affectation de cette valeur à une variable se faisait par le biais de if. et dans une autre situation, cette variable est nulle. c'est-à-dire que je dois me souvenir d'un certain prix d'une manière ou d'une autre.
 
305:
Comment mémoriser un certain niveau. Supposons que ce soit le maximum d'une bougie. Mais l'affectation de cette valeur à une variable se faisait par le biais de if. et dans une autre situation, cette variable est nulle. c'est-à-dire que je dois me souvenir d'un certain prix d'une manière ou d'une autre.
Peut-être quehttps://book.mql4.com/ru/variables/arrays pourrait aider. Je pense qu'il y a quelque chose dont vous avez besoin ci-dessous.

Tableaux de séries chronologiques

 
Ça ne marche pas. Je vais essayer la ligne horizontale.
 
305:
Ça ne marche pas. Je vais essayer la ligne horizontale.

kim a de nombreuses fonctions différentes pour mémoriser n'importe quoi, il faut environ 3 minutes pour parcourir les noms, peut-être que vous pouvez trouverhttps://www.mql5.com/ru/forum/131859.

 
7Konstantin7:

Compliqué pour moi, pensera) il y a un codepour fermer les ordres dans l'ordre où ils ont été ouverts.

Si je comprends bien, le tri se fait au détrimentde OrderTicket.

Je voudrais le mettre dans le code)

S'il vous plaît, dites-moi quel est le secret de la fermeture des ordres dans un certain ordre et non dans une rangée ? Comment quelques secondes peuvent-elles changer la vie du compte ?

Merci.

 
Roger:

Dites-moi, quel est le secret pour clôturer les ordres dans un certain ordre et non à la suite ? Comment quelques secondes peuvent-elles faire la différence dans la vie d'un compte ?

Merci.

Prenons ce chalut : je n'ai jamais réussi à réécrire la fonction(, qui ferme les ordres dans l'ordre où ils ont été ouverts : shuffle

Cette fonction ferme d'abord tous les ordres rentables, puis tous les ordres perdants, ce qui donne un graphique d'équilibre moche dans la pile, ainsi que des données erronées : drawdown maximal, série maximale d'ordres perdants, profit maximal et série maximale d'ordres rentables.

Si je ferme les ordres en mode mixte , il n'y aurait pas de si grandes valeurs.

Si vous utilisez les ordres de clôture dans l'ordre dans lequel ils ont été ouverts, le tableau des soldes sera plus régulier, les informations sur les données dans le relevé seront plus adéquates.

Supposons que nous négocions beaucoup de paires, si nous les couvrons toutes une par une, le prix peut disparaître pour une paire avant que nous ne l'atteignions,

Si nous couvrons dans l'ordre d'ouverture, nous clôturerons sur une paire, puis sur une autre et ainsi de suite, c 'est donc plus diversifié.

Je pense que MT4 peut envoyer jusqu'à 8 ordres simultanément, mais je ne suis pas sûr, dans ce cas nous pouvons fermer encore plus rapidement.

 
7Konstantin7:

Prenons ce chalut où je n'ai pas pu modifier la fonction( pour qu'elle ferme les ordres dans l'ordre où ils ont été ouverts : Shuffle

dans cette fonction, tous les ordres rentables puis tous les ordres perdants sont fermés en premier, ce qui donne un graphique d'équilibre moche dans la pile plus des données erronées : drawdown maximal, série maximale d'ordres perdants, profit maximal et série maximale d'ordres rentables.

Ensuite, il s'avère être une montagne russe décente et stupide, par exemple, il a augmenté de 500 $ puis a chuté de 400 $. Si nous devions clôturer les ordres en mode mixte , de telles valeurs n'existeraient pas.

Si nous utilisons les ordres de clôture dans l'ordre dans lequel ils ont été ouverts, le graphique de la balance sera plus lisse et les informations sur les données dans le relevé seront plus adéquates.

Supposons que nous négocions un grand nombre de paires et que nous les fermions toutes une par une, le prix peut disparaître pour une paire avant que nous ne l'atteignions,

Si nous couvrons dans l'ordre d'ouverture, nous clôturerons sur une paire, puis sur une autre et ainsi de suite, c 'est donc plus diversifié.

Je pense que MT4 peut envoyer jusqu'à 8 ordres simultanément, mais je ne suis pas sûr, dans ce cas nous pouvons fermer encore plus rapidement.

Cycle inverse. Chercher la position ouverte la plus proche, la fermer, aller au début du cycle. Continuez jusqu'à ce que vous n'ayez plus de positions à fermer.
 
artmedia70:
Cycle inverse. Cherchez la position ouverte la plus tôt, fermez-la, allez au début du cycle. Continuez de la sorte jusqu'à ce que vous n'ayez plus de positions à fermer.

Merci, je ne peux pas le faire, j'ai juste pensé que quelqu'un pourrait griffonner quelques lignes dans cette fonction ou pourrait déposer un hibou, la version finale. Je ne pense pas que ce soit difficile, mais il est peu probable que quelqu'un m'aide.

Il y a 4 crédits sur mql5 pourrait donner) si c'est possible de transférer entre les membres.