Comment mettre en place la fermeture des positions une par une après N minutes ? - page 7

 
Renat Akhtyamov:

Avez-vous traduit en anglais ?

Et l'onglet des experts est en russe ?


Non, tout est par défaut.

 
Natalya Dzerzhinskaya:

Non, tout est par défaut.

dans l'onglet experts, regardez - les erreurs sont-elles traduites en russe ?

 
Natalya Dzerzhinskaya:

Oui, le code fonctionne.

J'utilise int au lieu de bool pour fermer dans votre code

int fermer ;

Et un seul ticket est utilisé pour toutes les clôtures d'achat et de vente, mais ceci est juste un test. Peut-être qu'à cause de cela, il y a une erreur parce que l'achat est fermé et qu'il n'y a pas de fermeture pour la vente.

Et bien, c'est correct, c'est comme ça que ça doit être.

 
Renat Akhtyamov:

dans l'onglet experts, pouvez-vous vérifier - les erreurs sont-elles diffusées en russe ?


Tout est diffusé en anglais

 
Natalya Dzerzhinskaya:

tout est diffusé en anglais

L'idée originale, selon vos descriptions, était que

J'ai mis le code sur la première page, à la fin de laquelle

if(TicketFirst>0)
{
//ну и пошло-поехало...
}

Il fallait mettre une des 2 fonctions close dans cette condition et fermer l'ordre trouvé par le ticket (j'en ai mis deux), c'est à dire

if(TicketFirst>0)
{
                  if(OrderSelect(TicketFirst, SELECT_BY_TICKET)==true)
                  {
                     close=OrderClose(TicketFirst,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,clrRed);
                     if(close<0){if(Fun_Error(GetLastError())==1)return;}
                  }
                  if(OrderSelect(TicketFirst, SELECT_BY_TICKET)==true)
                  {
                     close=OrderClose(TicketFirst,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0,clrBlue);
                     if(close<0){if(Fun_Error(GetLastError())==1)return;}
                  }

}

et placer la fonction de gestion des erreurs après tout le code

De plus, il devrait y avoir une certaine logique dans la condition d'entrée de la fonction de fermeture, vous ne l'avez pas expliqué jusqu'au bout, j'ai aussi écrit à ce sujet.

Et ce serait bien.

Si on le laissait ainsi, le même ticket serait fermé deux fois. Il y aura une erreur 4108 lors de la fermeture d'une commande avec un ticket déjà fermé la première fois.

 
Renat Akhtyamov:

C'est vrai, c'est comme ça que ça doit être.

Vous ne devez pas y penser, mais utiliser l'aide et écrire une valeur de type bool.

Cependant, vous pouvez utiliser int, cela ne changera rien de toute façon.

Exécutez le script, vous pouvez l'exécuter 50 fois de suite, et la variable close ne sera jamais égale à -1. Cela signifie que les erreurs ne seront traduites dans aucune langue, pas même en chinois.

//+------------------------------------------------------------------+
#property version   "1.00"
#property strict
#property show_inputs

input int MyTicket = 451971753;

int close = -1;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//закрытие по тикету, переделайте под свой

   if(OrderSelect(MyTicket,SELECT_BY_TICKET)==true)
     {
      close=OrderClose(MyTicket,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,clrRed);
      if(close<0) Print("ERROR равен -1: ",close);
      if(close==0) Print("ERROR не может быть -1 НИКОГДА: ",close);
     }
  }


 
Vitaly Muzichenko:

Vous ne devez pas y penser, mais utiliser l'aide et écrire une valeur de type bool.

Cependant, vous pouvez utiliser int, cela ne changera rien de toute façon.

Exécutez le script, vous pouvez l'exécuter 50 fois de suite, et la variable close ne sera jamais égale à -1. Cela signifie que les erreurs ne seront traduites dans aucune langue, pas même en chinois.

Vitaly, vous n'avez pas à m'apprendre.

Je me souviens t'avoir enseigné moi-même il y a un an ou deux comment passer à 5 cercles, donc tu as moins d'expérience jusqu'à présent...

Tu n'as pas fait un seul des miens, mais tu dis...
 
Renat Akhtyamov:

Vitaly, vous n'avez pas à me faire la leçon.

Je me souviens t'avoir appris moi-même il y a un an ou deux comment passer à un 5-crank, donc tu as moins d'expérience jusqu'à présent...

Je t'ai même donné un exemple, ne te fais pas mal voir !

 
Vitaly Muzichenko:

Oui, j'ai même donné un exemple, ne te fais pas mal voir !

Tu n'as pas fait la même chose que moi, tu l'as fait à ta façon, et tu dis...

Quelle est votre construction de toute façon ?

et vous ne me montrez pas l'onglet des experts, vous me montrez le journal. Ce sont deux grandes différences.

Dans mon cas, l'erreur est diffusée par le conseiller expert dans l'onglet Conseillers experts.
 
Renat Akhtyamov:

Vous n'avez pas fait un des miens, vous avez fait un des vôtres, et vous dites...

Quelle est votre construction, de toute façon ?

et vous ne me montrez pas l'onglet des experts, vous me montrez le journal. Il y a en fait deux grandes différences.

Dans mon cas, l'erreur est transmise par le conseiller expert dans l'onglet Conseillers experts.

J'ai compris, tu essaies de me troller.

Ok, je m'en vais.

Non, je pense que je vais écrire à Servicedesk et leur dire que j'ai un terminal défectueux.