[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 339

 
future >> :
Messieurs, je suis toujours en train d'agoniser sur une question. Comment écrire ce qui suit ? Si le prix à xx.xx du jour courant est supérieur au prix à yy.yy du même jour....alors...J'ai besoin que ces prix soient comparés tous les jours. Je ne sais pas comment éviter de mentionner la date. J'ai essayé datetime Time 1=D'().().() 12:00 ' ; mais cela ne fonctionne pas dans le testeur. Il n'y a pas d'erreur d'écriture, mais lors des tests, on a l'impression que cette fois les données sont simplement ignorées.

Cela fonctionne comme suit :

int time=iTime(NULL,PERIOD_D1,0)+60*(60*heures+minutes) ;

double price=iOpen(NULL,PERIOD_M1,iBarShift(NULL,PERIOD_M1,time)) ;

 


Je suis exactement cet article, mais comme je l'ai dit plus haut,

channel=ddeinit('MT4','BID') ; - tout va bien, channel = 7.2920e-304 - la connexion est établie

mais

rc = ddeadv(channel, 'EURUSD', 'disp(x)', 'x',[1 1]) ; - rien ne se passe,

malgré rc = 1.

Bien que cela semble fonctionner dans l'article, quel est le problème ?

 


Salut !

Pourriez-vous me dire comment suivre la fermeture d'une transaction au niveau du stop loss ou du profit dans la boucle ?

Quelle fonction doit être utilisée pour le faire correctement ?

Merci.

 
Klinskih писал(а) >>

Salut !

Pourriez-vous m'indiquer comment suivre la fermeture d'une transaction au niveau du stop loss ou du profit dans la boucle ?

Quelle fonction doit être utilisée pour le faire correctement ?

Merci.

Il n'y a pas d'événement pour clôturer les ordres au niveau du stop loss ou du take profit, mais vous pouvez surveiller la disponibilité des ordres ouverts.

int OrdersTotal( )

Renvoie le nombre total d'ordres ouverts et en attente.

bool OrderSelect( int index, int select, int pool= MODE_TRADES) 

La fonction sélectionne un ordre pour la suite du traitement. Renvoie VRAI si la fonction se termine avec succès. Renvoie FALSE si la fonction échoue. Pour obtenir les informations relatives à l'erreur, vous devez appeler la fonction GetLastError().
Le paramètre pool est ignoré si la commande est sélectionnée par le numéro de ticket. Le numéro de billet est un identifiant unique pour la commande. Pour déterminer dans quelle liste un ordre est sélectionné, nous devons analyser son heure de clôture. Si l'heure de clôture de l'ordre est 0, alors l'ordre est ouvert ou en attente et est pris dans la liste des positions ouvertes du terminal. Une position ouverte peut être distinguée d'un ordre en attente par son type. Si l'heure de clôture n'est pas égale à 0, alors l'ordre est clôturé ou en attente et a été sélectionné dans l'historique du terminal. La distinction entre un ordre fermé et un ordre en attente supprimé peut également être faite par type d'ordre.

Vous pouvez également trouver des solutions toutes prêtes, par exemple chez KimIV - https://www.mql5.com/ru/forum/107476/page2.

 
xeon >> :

Il n'y a pas d'événement pour clôturer l'ordre au stop ou au takeout, mais vous pouvez surveiller la disponibilité des ordres ouverts

Renvoie le montant total des ordres ouverts et en attente.

Cette fonction permet de sélectionner un ordre pour le travailler ultérieurement. Renvoie VRAI si la fonction se termine avec succès. Elle renvoie FALSE si la fonction échoue. Pour obtenir les informations relatives à l'erreur, vous devez appeler la fonction GetLastError().
Le paramètre pool est ignoré si la commande est sélectionnée par le numéro de ticket. Le numéro de billet est un identifiant unique pour la commande. Pour déterminer dans quelle liste un ordre est sélectionné, nous devons analyser son heure de clôture. Si l'heure de clôture de l'ordre est 0, alors l'ordre est ouvert ou en attente et est pris dans la liste des positions ouvertes du terminal. Une position ouverte peut être distinguée d'un ordre en attente par son type. Si l'heure de clôture n'est pas égale à 0, alors l'ordre est clôturé ou en attente et a été sélectionné dans l'historique du terminal. La différence entre un ordre fermé et un ordre en attente supprimé peut également être faite par le type d'ordre.

Vous pouvez également voir des implémentations prêtes à l'emploi, par exemple de KimIV - https://www.mql5.com/ru/forum/107476/page2.

Merci beaucoup pour cette réponse complète !

 
xeon >> :

Il n'y a pas d'événement pour clôturer l'ordre au stop ou au takeout, mais vous pouvez surveiller la disponibilité des ordres ouverts

Renvoie le montant total des ordres ouverts et en attente.

Cette fonction permet de sélectionner un ordre pour le travailler ultérieurement. Renvoie VRAI si la fonction se termine avec succès. Elle renvoie FALSE si la fonction échoue. Pour obtenir les informations relatives à l'erreur, vous devez appeler la fonction GetLastError().
Le paramètre pool est ignoré si la commande est sélectionnée par le numéro de ticket. Le numéro de billet est un identifiant unique pour la commande. Pour déterminer dans quelle liste un ordre est sélectionné, nous devons analyser son heure de clôture. Si l'heure de clôture de l'ordre est 0, alors l'ordre est ouvert ou en attente et est pris dans la liste des positions ouvertes du terminal. Une position ouverte peut être distinguée d'un ordre en attente par son type. Si l'heure de clôture n'est pas égale à 0, alors l'ordre est clôturé ou en attente et a été sélectionné dans l'historique du terminal. La différence entre un ordre fermé et un ordre en attente supprimé peut également être faite par le type d'ordre.

Vous pouvez également voir des implémentations prêtes à l'emploi, par exemple de KimIV - https://www.mql5.com/ru/forum/107476/page2.

Merci beaucoup pour cette réponse complète !

 
future >> :
Messieurs, une question me taraude encore. Comment écrire ce qui suit ? Si le prix à xx.xx du jour courant est supérieur au prix à yy.yy du même jour....alors...J'ai besoin que ces prix soient comparés tous les jours. Je ne sais pas comment éviter de mentionner la date. J'ai essayé datetime Time 1=D'().().() 12:00 ' ; mais cela ne fonctionne pas dans le testeur. Il n'y a pas d'erreur d'écriture, mais lors des tests, on a l'impression que cette fois les données sont simplement ignorées.

Pour le testeur, c'est bon.

int час=15; час2=20;
int мин=21; мин2=00;

if(Hour()> час-1&&Hour()< час+1&&Minute()> мин-1&&Minute()< мин+1)
double цена_инструмента=Bid;
if(Hour()> час2-1&&Hour()< час2+1&&Minute()> мин2-1&&Minute()< мин2+1)
double цена_инструмента2=Bid;

if( цена_инструмента> цена_инструмента2)....
if( цена_инструмента< цена_инструмента2)....
 

Bonjour.

Comment puis-je savoir si le SL ou le TP est déclenché. Par exemple, si une commande est clôturée par

SL ou TP, puis exécute ceci et cela. Je n'ai pas trouvé une telle fonction.

 

Supposons qu'un ensemble d'indicateurs ait été enregistré dans le modèle et que ce dernier ait été chargé pour une paire de devises.

- Après cela, les indicateurs de cette fenêtre ont-ils une relation avec les paramètres enregistrés dans le modèle ou deviennent-ils complètement indépendants ?

 
chief2000 >> :

Supposons qu'un ensemble d'indicateurs ait été enregistré dans le modèle et que ce dernier ait été chargé pour une paire de devises.

- Les indicateurs de cette fenêtre ont-ils une relation avec les paramètres enregistrés dans le modèle ou sont-ils complètement indépendants ?


Les paires enregistrées sont "entrées" dans les indicateurs une fois lors de l'initialisation du modèle, puis "elles deviennent complètement indépendantes".

Tous les paramètres modifiés de l'indicateur sont sauvegardés dans le modèle. Si vous avez modifié les paramètres de l'indicateur, sauvegardez à nouveau le modèle.