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

 
Top2n:

Merci beaucoup. Tout fonctionne. Je vais examiner ce que vous avez écrit...
 
Top2n:

D'autres suggestions ?

Je connecte un script à un graphique hors ligne, le terminal se bloque. Peut-être qu'il est possible de monter le code dans le robot, alors que faire avec#import "user32.dll".

Le script n'était qu'un exemple, personne n'a dit qu'il devait être mis sur le tableau hors ligne. Il est généralement exécuté sur un graphique normal et spécifie le TF du graphique hors ligne dans la ligne

 int whdl=WindowHandle (Symbol(), period_renko);  

Et #import "user32.dll" n'est pas nécessaire, il est appelé dans WinUser32.mqh

En fait, il existe un indicateur "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4" qui peut émuler les ticks sur le graphique Renko créé. Il fonctionne comme suit : l'indicateur est exécuté sur un graphique ordinaire, puis il ouvre le graphique Renko qui est mis à jour en temps réel.


 
evillive:

Le script n'était qu'un exemple, personne n'a dit qu'il devait être mis sur un tableau hors ligne. Il est généralement exécuté sur un graphique normal et spécifie le TF du graphique hors ligne dans la ligne

Et #import "user32.dll" n'est pas nécessaire, il est appelé dans WinUser32.mqh

En fait, il existe un indicateur "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4" qui peut émuler les ticks sur le graphique Renko créé. Il fonctionne comme suit : l'indicateur est exécuté sur un graphique ordinaire, puis il ouvre le graphique Renko qui est mis à jour en temps réel.


Merci !)
 

Bonjour, pouvez-vous me dire comment faire ?

Il existe un morceau de code comme celui-ci et il fonctionne. Il s'agit de signaux d'approche des niveaux de négociation. Buy1_line est un niveau sur le graphique, buy1 est la distance du prix en pips par rapport au niveau correspondant. Le fait est que le code a la capacité de désactiver les niveaux dont vous n'avez pas besoin. Dans ce cas, la valeur du niveau buy1_line (0.00000) et la distance - est affichée comme un nombre à 6 chiffres, ce qui n'a en principe aucun sens. (Le niveau est désactivé, vous n'avez pas besoin de connaître la distance) Question ! Comment annuler la distance au niveau - buy1, si le niveau correspondant est désactivé ? (ou au lieu de ce numéro, écrire OFF ?)

string buy1_line=DoubleToStr(Price_Line,Digits);
string buy2_line=DoubleToStr(Price_Line2,Digits);
string buy1=     DoubleToStr((Price_Line-Bid)/Point,0);
string buy2=     DoubleToStr((Price_Line2-Bid)/Point,0);       

message=
 "buy_1 ("+buy1_line+"):"+(buy1>"0"?"+":"")+buy1+"   \n"+
 "buy_2 ("+buy2_line+"):"+(buy2>"0"?"+":"")+buy2+"   \n";

SendNotification(message);
 

Bonjour, pourriez-vous me dire s'il existe un moyen d'obtenir le ticket d'une commande qui vient d'être envoyée ?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0) ;

ensuite je vérifie si ticket < 1, et maintenant je veux obtenir le numéro de OrderTicket() sans repasser par tous les ordres ouverts, car il peut y en avoir beaucoup, et je m'attends à un problème si j'envoie deux ordres presque identiques avec des stops différents en même temps.

Merci !

 
danik:

Bonjour, pourriez-vous me dire s'il existe un moyen d'obtenir le ticket d'une commande qui vient d'être envoyée ?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0) ;

ensuite je vérifie si ticket < 1, et maintenant je veux obtenir le numéro de OrderTicket() sans repasser par tous les ordres ouverts, car il peut y en avoir beaucoup, et je m'attends à un problème si j'envoie deux ordres presque identiques avec des stops différents en même temps.

Merci !

Et vous n'avez pas besoin de OrderSend(), pour connaître le ticket d'un ordre qui est déjà ouvert, vous devez le sélectionner en utilisant OrderSelect().

Dans la boucle, vous devez faire défiler tous les ordres de bourse, sélectionner chacun d'entre eux et si leur type, symbole et magicien correspondent, écrire le ticket dans le tableau.

Ensuite, triez le tableau dans l'ordre croissant. La valeur la plus élevée du billet correspond à la commande la plus récente.

 
Oui, je suppose que nous devrons faire cela. Je me demandais s'il y avait une astuce ou une méthode pour obtenir un ticket pour une commande qui vient d'être envoyée. Eh bien, il n'y en a pas, je vais devoir le faire à l'ancienne, tant pis. Merci !
 
danik:
Je pensais qu'il y avait peut-être un moyen d'obtenir un ticket qui vient d'être envoyé. Sinon, je vais devoir le faire à l'ancienne et c'est dommage. Merci !

Seul le ticket ouvert sera comme vous l'avez écrit -ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0) ;

Mais il faut que la demande ait été exécutée sans erreur, et un tel ticket est rapidement écrasé.

 
danik:

Bonjour, pourriez-vous me dire s'il existe un moyen d'obtenir le ticket d'une commande qui vient d'être envoyée ?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0) ;

ensuite je vérifie si ticket < 1, et maintenant je veux obtenir le numéro de OrderTicket() sans repasser par tous les ordres ouverts, car il peut y en avoir beaucoup, et je m'attends à un problème si j'envoie deux ordres presque identiques avec des stops différents en même temps.

Merci !

Pourquoi ne pas déclarer les billets au niveau de la variable globale?
 

Le problème est que ces tickets sont plus d'un. peut-être 4, je ne sais pas encore exactement. c'est pourquoi j'ai créé une classe avec le numéro de ticket et d'autres informations qui ne sont pas stockées par orderselect. je voulais donc avoir accès au ticket. mais jusqu'à présent, je ne peux que créer des objets de classe et les mettre dans CarrayObj et ensuite obtenir l'index, comparer le ticket et analyser plus avant. Mais j'ai résolu le problème, merci. Je m'en veux ailleurs. MessieursevilliveAlexeyVik - merci pour vos réponses rapides !