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

 
rigonich:

Pour répondre à cette question de manière plus précise, vous devez voir le code du conseiller expert. Cependant, cela se produit généralement lorsque l'écriture d'un Expert Advisor ne prend pas en compte certaines caractéristiques du travail des Expert Advisors avec les indicateurs à appeler. Les conseillers experts ne calculent pas eux-mêmes les valeurs des indicateurs, ils les prennent dans des tampons d'indicateurs prêts à l'emploi. C'est pourquoi si vous avez besoin, par exemple, de vous souvenir des valeurs précédentes de l'indicateur ou de quelque chose d'autre, que l'indicateur fait lui-même, vous devez inclure tout cela dans votre Expert Advisor. Et parfois il y a des indicateurs "tordus", mais je pense que vous avez une stochastique standard et que cela n'a rien à voir.


Tous les indicateurs, y compris les indicateurs standard, sont redessinés sur 0 bar.

Un conseil... Si vous avez une question de ce genre, il existe une fonction de ce type :

bool WindowScreenShot( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
Enregistre l'image du graphique actuel dans un fichier GIF. En cas d'échec, il renvoie FALSE. Pour obtenir des informations sur l'erreur, il est nécessaire d'appeler la fonction GetLastError().

La capture d'écran est enregistrée dans le terminal_directory\experts\files(terminal_directory\tester\files en cas de test du conseiller expert) ou ses sous-dossiers.

 
r772ra:


Tous les indicateurs, y compris les indicateurs standard, sont redessinés sur la barre 0.

Un conseil... Si vous avez une question de ce genre, il existe une fonction de ce type :

bool WindowScreenShot( string filename, int size_x, int size_y, int start_bar=-1, int chart_scale=-1, int chart_mode=-1)
Enregistre l'image du graphique actuel dans un fichier GIF. En cas d'échec, il renvoie FALSE. Pour obtenir des informations sur l'erreur, il est nécessaire d'appeler la fonction GetLastError().

La capture d'écran est enregistrée dans le terminal_directory\experts\files(terminal_directory\tester\files en cas de test du conseiller expert) ou ses sous-dossiers.


Pas tous, mais certains, et pas seulement sur la barre zéro, mais en général, je suis tout à fait d'accord avec vous pour dire qu'il est plus cher de travailler sur la barre zéro.

Je suis tellement confus. Je ne comprends pas comment une capture d'écran peut aider à résoudre le problème ?

 
rigonich:


En fait, pas tous, et certains pas seulement sur la barre fixe, mais en général je suis absolument d'accord avec vous pour dire que travailler sur la barre fixe est "plus cher".

Je suis tellement confus. Je ne comprends pas comment une capture d'écran peut aider à résoudre un problème ?


WindowScreenShot prend une capture d'écran d'un graphique, je pense que c'est clair. Si vous le placez juste après la fonction d'ouverture d'une position,

vous savez, la question se pose de savoir POURQUOI ? ????? Jetons un coup d'œil à l'image.

 
r772ra:


WindowScreenShot prend un instantané du graphique, je pense que c'est clair. Si vous le mettez juste après la fonction d'ouverture de la position,

vous voyez, la question s'est posée de savoir POURQUOI ? ????? Voir la photo.


Il existe un tel assistant.
 
r772ra:

Il existe un tel assistant.

Je l'ai. Merci. Intéressant, je vais devoir essayer.
 
rigonich:

Pour répondre plus précisément, vous devez examiner le code d'une EA. Cela se produit généralement lorsque nous ne tenons pas compte de certaines particularités de la façon dont un EA fonctionne avec les indicateurs à appeler. Les conseillers experts ne calculent pas eux-mêmes les valeurs des indicateurs, ils les prennent dans des tampons d'indicateurs prêts à l'emploi. C'est pourquoi si vous avez besoin, par exemple, de vous souvenir des valeurs précédentes de l'indicateur ou de quelque chose d'autre, que l'indicateur fait lui-même, vous devez inclure tout cela dans votre Expert Advisor. Et parfois il y a des indicateurs "tordus", mais je pense que vous avez une stochastique standard et que cela n'a rien à voir.


Merci pour la réponse, mais elle ne m'a pas beaucoup aidé, je vais à nouveau poster le problème, peut-être que quelqu'un d'autre a des idées sur ce sujet ?

Bonjour, aidez-moi s'il vous plaît, je n'arrive pas à comprendre pourquoi les ordres indésirables s'ouvrent ((, dans la capture d'écran ils sont entourés en rouge, le code est joint....

Dossiers :
 
rigonich:

Si c'est le cas, c'est aux développeurs de l'aide de le faire.


Les développeurs n'ont rien à voir avec cela. :__

Au lieu de ( Hour()>=10 || Hour()<20 ) vous auriez dû faire simple Hour()>=10 && Hour()<20

et tout a fonctionné.

 
Les gars, pourriez-vous me dire comment faire pour que le testeur affiche les transactions et les indicateurs utilisés dans l'EA dans la fenêtre de visualisation ?
 

Veuillez m'indiquer où regarder pour voir comment est codée la condition "Si la dernière transaction de prise de profit était > 0 alors....".

c'est-à-dire la comptabilisation des transactions déjà clôturées (automatiquement) .

 
lottamer:

Veuillez m'indiquer où regarder pour voir comment est codée la condition "Si la dernière transaction de prise de profit était > 0 alors....".

c'est-à-dire la comptabilisation des transactions déjà clôturées (automatiquement) .


https://www.mql5.com/ru/forum/131859

https://www.mql5.com/ru/forum/131859/page4#434230

Fonction isCloseLastPosByTake().

Cette fonction retourne un drapeau pour fermer la dernière position de Takei. Le drapeau est levé - Vrai - TakeProfit a été déclenché. Drapeau abaissé - Faux - le poste a été fermé pour une autre raison. Une sélection plus précise des positions à prendre en compte est spécifiée à l'aide de paramètres externes :

  • sy - Nom de l'instrument de marché. Si vous spécifiez ce paramètre, la fonction ne prendra en compte que les positions de l'instrument spécifié. La valeur par défaut "" signifie tout instrument de marché. NULL signifie l'instrument actuel.
  • op - Opération commerciale, type de poste. Valeurs valides : OP_BUY, OP_SELL ou -1. La valeur par défaut -1 signifie une position quelconque.
  • mn - Identificateur de position, MagicNumber. La valeur par défaut -1 signifie tout identifiant.
  • //+----------------------------------------------------------------------------+
    //|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
    //+----------------------------------------------------------------------------+
    //|  Версия   : 19.05.2008                                                     |
    //|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
    //+----------------------------------------------------------------------------+
    //|  Параметры:                                                                |
    //|    sy - наименование инструмента   (""   - любой символ,                   |
    //|                                     NULL - текущий символ)                 |
    //|    op - операция                   (-1   - любая позиция)                  |
    //|    mn - MagicNumber                (-1   - любой магик)                    |
    //+----------------------------------------------------------------------------+
    bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
      datetime t;
      double   ocp, otp;
      int      dg, i, j=-1, k=OrdersHistoryTotal();
    
      if (sy=="0") sy=Symbol();
      for (i=0; i<k; i++) {
        if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
          if (OrderSymbol()==sy || sy=="") {
            if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
              if (op<0 || OrderType()==op) {
                if (mn<0 || OrderMagicNumber()==mn) {
                  if (t<OrderCloseTime()) {
                    t=OrderCloseTime();
                    j=i;
                  }
                }
              }
            }
          }
        }
      }
      if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
        dg=MarketInfo(sy, MODE_DIGITS);
        if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
        ocp=NormalizeDouble(OrderClosePrice(), dg);
        otp=NormalizeDouble(OrderTakeProfit(), dg);
        if (ocp==otp) return(True);
      }
      return(False);
    }