Questions d'un "mannequin - page 135

 
Cmu4:

Je réduis le volume par contre-ordre, j'y écris un commentaire, mais le commentaire reste dedans, il ne "s'accroche" pas à la position...

La chose la plus intéressante est que si l'ordre est envoyé avec un commentaire dans le sens de la position, il reçoit ce commentaire, si c'est contre - il ne le reçoit pas.

Peut-être que c'est un bug ?

J'ai regardé mon EA en mode visualisation et j'ai vu que parfois les commentaires "collent" et parfois non. Je ne peux encore rien dire (ce n'est pas critique pour moi). Observez encore un peu et écrivez au Service Desk si vous trouvez un modèle à reproduire.
 
tol64:
J'ai regardé dans mon mode de visualisation et j'ai vu que parfois les commentaires "s'accrochent" et parfois non. Je ne peux encore rien dire (ce n'est pas critique pour moi). Observez encore un peu et écrivez au Service Desk si vous trouvez un modèle dans la répétition.

Je l'ai déjà fait. Hmm, je prends toujours les mauvais. Et il y a un sacré truc à propos de "l'extrait" d'un commentaire. Ufff...

A propos, voici une fonction simple pour obtenir le commentaire de la dernière transaction (uniquement les chiffres dans les commentaires) sur une position, est-ce correct ? Sinon, peut-être que je le "gratte" mal...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 }
 
Cmu4:

Je l'ai déjà fait. Hmm, je prends toujours les mauvais. Et il y a un sacré truc à propos de "l'extrait" d'un commentaire. Ufff...

A propos, voici une fonction simple pour obtenir le commentaire de la dernière transaction (uniquement les chiffres dans les commentaires) sur une position, est-ce correct ? Ou peut-être que je ne "comprends pas bien"...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 } 

La fonction HistoryDealGetString() doit avoir comme premier paramètre le ticket de transaction, et pour l'instant vous avez le nombre de transactions dans l'historique.

 
Yedelkin:

Le premier paramètre de la fonction HistoryDealGetString() devrait être un ticket de transaction, mais jusqu'à présent vous spécifiez le nombre de transactions dans l'historique.

Je l'ai corrigé, mais ça ne fonctionne toujours pas. Messieurs, veuillez me conseiller, car je suis confus...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 int ticket = HistoryDealGetTicket(total);
 double Comments = StringToDouble(HistoryDealGetString(ticket,DEAL_COMMENT));
 if (Comments!=0)
  {Print("commentttt = ", ticket);
   return(Comments);
  }
 else return(0);
 }
 
 
 
Cmu4:

Je l'ai réparé, mais ça ne marche toujours pas. Messieurs, veuillez me conseiller, car je suis confus...

Très bien, passons à autre chose :)

Voici la ligne.

int ticket = HistoryDealGetTicket(total);
ne tient pas compte du fait que la numérotation des éléments dans les listes (y compris la numérotation des transactions dans la liste des transactions) commence par "0" et non par "1". Par conséquent, en spécifiant la valeur total comme "numéro de transaction dans la liste des transactions", vous spécifiez un nombre inexistant. Voir l'exemple dans MQL5 Reference / Trading Functions / HistoryDealGetTicket.
 
Yedelkin:

Très bien, passons à autre chose :)

Voici la ligne

ne tient pas compte du fait que la numérotation des éléments dans les listes (y compris la numérotation des transactions dans la liste des transactions) commence par "0" et non par "1". Par conséquent, en spécifiant la valeur total comme "numéro de transaction dans la liste des transactions", vous spécifiez un numéro qui n'existe pas. Voir l'exemple à l'adresse Référence MQL5 / Fonctions de trading / HistoryDealGetTicket.
Merci beaucoup, l'ajout de -1 a tout résolu (j'espère que c'est le cas - j'ai vérifié via l'impression pour le moment). :)
 
C'est étrange...
   datetime Arr[], time1;
   int t;

   t=CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];
Print(time1) n'imprime rien dans cette version du code, mais dans celle-ci :
   datetime Arr[], time1;

   CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];

- sorties.

Est-ce un bug ou une fonctionnalité ?

 
Peut-être que t devrait être défini comme une date ?
 
Cmu4:
Peut-être que t devrait être défini comme une date ?

t ne peut pas être une date, lisez attentivement l'aide de CopyTime:

"Valeur de retour :

Lenombre d'éléments du tableau copié ou -1 en cas d'erreur."

Intuitivement, on a l'impression que le retour de cette fonction est traité et que la valeur de retour est affectée en toute sécurité à la variable t... et à ce moment-là, le programme s'arrête, comme si rien d'autre ne voulait être copié dans Arr. Mais je pensais que la copie dans le tableau devait être effectuée d'abord, et seulement ensuite - en assignant à la variable t le nombre retourné d'éléments copiés. Mais voilà...
 
alph:

Bonjour !

J'ai écrit un EA, tout fonctionne. Mais j'ai obtenu une erreur à la première ligne de ' request.type_filling = ORDER_FILLING_AON;'-identificateur non déclaré et conversion implicite d'enum.

Je ne comprends pas ce qui ne va pas, tous les EAs compilés jusqu'à présent avec les mêmes chaînes fonctionnent comme avant.

Merci d'avance.

Si vous cliquez sur le lien ORDER_FILLING_AON, vous verrez que le nom vient de changer.