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

 
dzhini:

Super, tout est là. Posté hier soir, mais le fil a déjà été assez loin avec des explications sur ce qu'est un magicien et comment il est préparé ;)))

Veuillez me donner une réponse à ma question.

Mon EA définit BUYLIMIT et SELLLIMIT à certains moments. Je voudrais qu'il supprime les ordres en attente (OP_BUY ou OP_SELL) dans un sens lorsque l'ordre est ouvert.

C'était ma variante :


C'est mieux comme ça :

void start(){
  .....

  for(int i=OrdersTotal() -1;i>=0;i--) 
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
     {
      if(CalculateCurrentOrders(Symbol())>0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_SELLLIMIT);} // (1) 
      if(CalculateCurrentOrders(Symbol())<0) {Alert(CalculateCurrentOrders(Symbol()));ClosePendingOrder(OP_BUYLIMIT);} //(2) 
      if(TimeCurrent() - OrderOpenTime()>=HowManyHours*60*60) {ClosePendingOrder(OP_BUYLIMIT);ClosePendingOrder(OP_SELLLIMIT);} //(3) 
     } 
   ....

}

Sans entrer dans la logique, l'absence de crochets et l'organisation incorrecte de OrderSelect() sont immédiatement apparents

 
eddy:

pourquoi ne pas regrouper ces questions par thème et ajouter la possibilité de poser des questions directement à cet endroit ? ce serait un questionnaire normal.

Et si vous ajoutez la possibilité d'ajouter non seulement des questions mais aussi des tâches, avec des codes/articles comme réponses, vous obtenez ce que je propose - une structure de site différente qui inclut tout son contenu existant.

Roman, le travail préparatoire a été fait depuis longtemps, l'idéologie de la FAQ a été préalablement élaborée et sera affichée dans une branche spéciale, la base technique a été convenue avec l'administration.
Attendez la sortie de la branche pour voir si elle coïncide avec vos idées et, si nécessaire, vous pouvez développer et mettre en œuvre votre projet si cela est en votre pouvoir.
 
Sergey_Rogozin:

C'est mieux comme ça :

Sans entrer dans la logique, l'absence d'accolades et l'organisation incorrecte de OrderSelect() sont immédiatement visibles.

Pouvez-vous expliquer ce qui ne va pas avec OrderSelect() . Car, comme je l'ai déjà écrit, si je retire des ordres dans le sens de la transaction déjà ouverte, tout se passe sans problème. De même, il n'y a aucun problème à retirer toutes les commandes dans un délai strictement défini.
 
dzhini:
Pourriez-vous expliquer ce qui ne va pas avec OrderSelect() . Car, comme je l'ai déjà écrit, si je retire des ordres dans le sens de la transaction déjà ouverte, tout se passe sans problème. Nous n'avons pas non plus de problème à supprimer toutes les commandes à un moment donné.
Sans voir le code, il est difficile de l'affirmer. Peut-être que OrderSelect() fonctionnera tel quel, si vous n'avez pas besoin de sélectionner par symbole, magicien, type d'opération, etc.
 

Il s'agit essentiellement d'une tentative de faire une pratique pour l'avenir, de travailler avec différents ensembles d'ordres (et pas seulement deux).

Lorsque le cycle de visualisation des ordres est en cours, l'EA fonctionne assez bien jusqu'à l'alerte, mais il ne veut pas fonctionner correctement avec la fonction de suppression :

void ClosePendingOrder(int ORDERType)
{
 while(!IsTradeAllowed()) Sleep(100);
 if(OrderType()==ORDERType)
 {
 if(OrderSymbol()==Symbol())
 { 
 if(!OrderDelete(OrderTicket(),CLR_NONE))
   Print("Order close error",GetLastError());
return;
      }
    }
}
 
granit77:
l'idéologie de la FAQ est préconçue et la base technique a été convenue avec l'administration.
voir comment il correspond à vos idées et, si nécessaire, vous pouvez développer votre propre projet
Ai-je eu la réponse : "tout a déjà été pensé et convenu avec l'administration (c'est-à-dire qu'il n'y a aucun moyen de le changer), si quelque chose ne correspond pas à vos idées, vous pouvez faire les vôtres" ?
 
eddy:
J'ai bien compris la réponse : "Tout a déjà été pensé et convenu avec l'administration (c'est-à-dire qu'il n'y a pas moyen de le changer), si quelque chose ne correspond pas à vos idées - vous pouvez faire les vôtres" ?
"Tout a déjà été volé avant vous"))))
 
dzhini:

Il s'agit essentiellement d'une tentative de faire une pratique pour l'avenir, de travailler avec différents ensembles d'ordres (et pas seulement deux).

Lorsque le cycle de visualisation des ordres est en cours, l'EA fonctionne assez bien jusqu'à l'alerte, mais il ne veut pas fonctionner correctement avec la fonction de suppression :

On dirait que tout est en place. Je ne sais pas.
 
Sergey_Rogozin:

Comment cela fonctionne-t-il ? ClosePendingOrder(OP_SELLLIMIT);} // (1) ?

Son code.

Le code de la fonction permettant de supprimer un ordre est donné dans le message même... Peut-être n'ai-je pas compris la question, mais je vais essayer de l'expliquer comme je l'ai compris :

Une boucle for établit une énumération de tous les ordres ouverts et en attente disponibles. ClosePendingOrder(OP_SELLLIMIT) - sélectionne dans cette liste celles qui correspondent au symbole de la devise et au paramètre OP_SELLLIMIT . Dès qu'il trouve ces correspondances, il supprime cet ordre en attente.

 
dzhini:

J'ai donné le code de la fonction de suppression de l'ordre dans ce même message... Peut-être n'ai-je pas compris la question, mais je vais essayer de l'expliquer comme je l'ai compris :

Une boucle for établit une énumération de tous les ordres ouverts et en attente disponibles. ClosePendingOrder(OP_SELLLIMIT) - sélectionne dans cette liste celles qui correspondent au symbole de la devise et au paramètre OP_SELLLIMIT . Dès qu'il trouve ces correspondances, il supprime cet ordre en attente.

J'ai déjà compris. Je l'ai juste regardé inattentivement au début.

Je ne vois pas l'erreur.

Raison: