Questions des débutants MQL5 MT5 MetaTrader 5 - page 1457

 
Aleksey Vyazmikin #:

Dans la base de code, il y a des Expert Advisors et des indicateurs qui ont été écrits à l'origine sur MT4 et ensuite réécrits sur MT5 - vous pouvez les utiliser pour la formation.

Les langages sont similaires à bien des égards. Fixez-vous pour tâche de réécrire le code que vous comprenez sur MT5 - et utilisez activement la recherche sur les instructions et le portail - vous trouverez toujours la réponse, y compris dans les articles.

Merci beaucoup pour vos précieux conseils. Si vous le voulez bien, envoyez-moi un lien vers l'Expert Advisor (pas l'indicateur) qui était sur 4 et qui est devenu sur 5 (si c'est possible sur le plus simple), ou l'EA lui-même sur 4 et ensuite le même sur 5
Commencé à étudier. Je me suis rendu compte que les opérations de trading pour un débutant sont plus faciles à ouvrir dans la classe de trading STrade et j'ai même réussi à ouvrir des ordres et des transactions à l'aide de cette classe
Mais dès que j'ai conditionné l'ouverture d'un ordre, les ordres ne s'ouvrent plus, merci de me dire ce que j'ai fait de mal. Voici le code qui ouvrait les ordres lorsqu'il n'y avait pas de conditions.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
MqlDateTime time_now;  
if(time_now.hour==10||time_now.hour==11&&time_now.min==0)


trade.Buy(0.1);


}

Je n'ai pas encore compris ce point.... Lorsque les ordres BAY ont été ouverts, ils ont été fermés, si j'ai bien compris, par des contre-ordres CEL. Et je ne comprends pas où le code a pris l'information sur le nombre de pips pour fermer les ordres, parce que je n'ai spécifié la taille du SL et du TP nulle part et que je n'ai pas du tout spécifié la fonction de fermeture des ordres. Je soupçonne que cette information est écrite à un endroit quelconque d'un fichier joint, c'est-à-dire dans une classe ou une structure. Si c'est le cas, comment trouver cet endroit pour modifier les paramètres de l'ordre ouvert ?

Merci encore pour votre aide.

 
ANDREY #:

Merci beaucoup pour vos précieux conseils. Si vous le voulez bien, envoyez-moi un lien vers un Expert Advisor (pas un indicateur) qui était sur 4 et qui est ensuite devenu sur 5 (si vous pouvez sur le plus simple), ou l'Expert Advisor lui-même en 4 et ensuite le même en 5
J'ai commencé à étudier. Je me suis rendu compte que les opérations de trading pour un débutant sont plus faciles à ouvrir dans la classe de trading STrade et j'ai même réussi à ouvrir des ordres et des transactions avec l'aide de cette classe
Mais dès que j'ai conditionné l'ouverture d'un ordre, les ordres ont cessé de s'ouvrir, merci de me dire ce que j'ai fait de mal. Voici le code qui ouvrait les ordres lorsqu'il n'y avait pas de conditions.

Je n'ai pas encore compris ce point.... Lorsque les ordres BAY ont été ouverts, ils ont été fermés, si j'ai bien compris, par des contre-ordres CEL. Et je ne comprends pas où le code a pris l'information sur le nombre de pips pour fermer les ordres, parce que je n'ai spécifié la taille du SL et du TP nulle part et que je n'ai pas du tout spécifié la fonction de fermeture des ordres. Je soupçonne que cette information est écrite à un endroit quelconque d'un fichier joint, c'est-à-dire dans une classe ou une structure. Si c'est le cas, comment trouver cet endroit pour modifier les paramètres de l'ordre ouvert ?

Merci encore pour votre aide.

Je ne peux que donner des conseils - je suis né au pays des soviets...

Cherchez - voilà une option.

Moi-même, je n'ai pas encore appris toutes les nuances des opérations commerciales - j'ai commandé un cours en indépendant il y a de nombreuses années et je l'utilise avec des modifications mineures.

 
Aleksey Vyazmikin #:

Je ne peux que donner des conseils - je suis né au pays des soviets....

Vous pouvez faire une recherche, c'est une option.

Personnellement, je n'ai pas encore appris toutes les nuances des opérations commerciales - j'ai commandé un cours en freelance il y a de nombreuses années et je l'utilise avec des modifications mineures.

J'ai compris. Merci pour ces précieuses informations

 
ANDREY #:

Merci beaucoup pour vos précieux conseils. Si vous le voulez bien, envoyez-moi un lien vers un Expert Advisor (pas un indicateur) qui était sur 4, puis est devenu sur 5 (si vous pouvez sur le plus simple), ou l'EA lui-même en 4 puis le même en 5.

Voici le plus simple. Il s'appelle so. Il possède à la fois le code MQL5 et MQL4.

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

Voici le plus simple. C'est son nom. Il contient à la fois du code MQL5 et MQL4.

Merci pour votre aide.

 
ANDREY #:

Mais dès que j'ai conditionné l'ouverture d'un ordre, les ordres ne s'ouvrent plus, merci de me dire ce que j'ai fait de mal. Voici le code qui ouvrait les ordres lorsqu'il n'y avait pas de conditions.

Je n'ai pas encore compris ce point.... Lorsque les ordres BAY ont été ouverts, ils ont été fermés, si j'ai bien compris, par des contre-ordres CEL. Et je ne comprends pas où le code a pris l'information sur le nombre de pips pour fermer les ordres, parce que je n'ai spécifié la taille du SL et du TP nulle part et que je n'ai pas du tout spécifié la fonction de fermeture des ordres. Je soupçonne que cette information est écrite à un endroit quelconque d'un fichier joint, c'est-à-dire dans une classe ou une structure. Si c'est le cas, comment trouver cet endroit pour modifier les paramètres de l'ordre ouvert ?

Merci encore pour votre aide.

Vous avez déclaré la structure MqlDateTime, mais vous ne l'avez pas initialisée, elle est donc soit vide, soit nulle.

C'est ainsi qu'il ouvrira des positions d'achat sur chaque tick à partir de 10:00 hrs, pendant une minute. Puis à 11:00, il commencera à ouvrir des positions d'achat pour une minute supplémentaire.

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
Ce code ne peut pas fermer les positions, il n'y a rien de tel dans la classe CTrade.
 
Aleksandr Slavskii #:

Vous avez déclaré la structure MqlDateTime , mais vous ne l'avez pas initialisée, elle est donc soit vide, soit nulle.

C'est ainsi qu'il ouvrira des positions d'achat sur chaque tick à partir de 10:00 heures, pendant une minute. Puis à 11:00, il commencera à ouvrir d'autres positions d'achat pendant une minute.

Ce code ne peut pas fermer les positions, il n'y a rien de tel dans la classe CTrade.

Merci beaucoup.... Vous m'avez fait beaucoup progresser dans la maîtrise du 5. Vous dites que ce code ne peut pas fermer les positions. Mais si vous supprimez toutes les conditions, alors les positions sont ouvertes et fermées par les contre-ordres CEL.... si j'ai bien compris. Alors quelle commande de code est utilisée pour fermer les ordres ? Où le programme obtient-il les données permettant de clôturer les ordres exactement après un certain nombre de points, ou lors de la survenance d'un événement quelconque ? Je ne comprends même pas en vertu de quelle règle les ordres sont clôturés.

#include<Trade\Trade.mqh>
 CTrade  trade;

void OnTick()
{
trade.Buy(0.1);
}

J'ai également remarqué que les ordres SEL, qui sont utilisés pour fermer les ordres BAY, ont, pour une raison quelconque, un numéro de ticket très éloigné du numéro de ticket de l'ordre BAY qu'ils ferment. Par exemple, lepremier ordre BAY a un ticket 2, mais l'ordre CEL qui le ferme a un ticket non pas 3 (ce qui serait logique) mais 91779 pour une raison inconnue.

Et si vous n'ouvrez qu'un seul ordre, tout devient logique. L'ordre Bai a le numéro 2, et l'ordre CEL de clôture a le numéro 3.

int y;
#include<Trade\Trade.mqh>
 CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

Merci beaucoup.... Vous m'avez fait beaucoup progresser dans la maîtrise du 5. Vous dites que ce code ne peut pas fermer les positions. Mais si vous supprimez toutes les conditions, alors les positions sont ouvertes et fermées par les contre-ordres CEL.... si j'ai bien compris. Alors quelle commande de code est utilisée pour clôturer les ordres ? Où le programme obtient-il les données permettant de clôturer les ordres exactement après un certain nombre de points, ou lors de la survenance d'un événement quelconque ? Je ne comprends même pas en vertu de quelle règle les ordres sont clôturés.

J'ai également remarqué que les ordres SEL, qui sont utilisés pour fermer les ordres BAY, ont, pour une raison quelconque, un numéro de ticket très éloigné du numéro de ticket de l'ordre BAY qu'ils ferment. Par exemple, lepremier ordre BAY a un ticket 2, mais l'ordre CEL qui le clôture a un ticket non pas 3 (ce qui serait logique) mais 91779 pour une raison quelconque.

Et si vous n'ouvrez qu'un seul ordre, tout devient logique. L'ordre Bai a le numéro 2, et l'ordre CEL de clôture a le numéro 3.


Il est difficile de comprendre ce qui se passe ici, mais je pense que vous ouvrez plus de positions que ce qui est autorisé par le courtier sur cet instrument et que le testeur commence à fermer les positions supplémentaires.

En fait, il ne devrait pas ouvrir ces positions supplémentaires. Mais je ne peux pas expliquer autrement ce qui se passe avec vous.


Je ne comprends pas non plus une position. Je ne comprends pas non plus pourquoi une position est fermée à la fin de la journée. Peut-être que votre courtier interdit de reporter des positions au jour suivant.

 
Aleksandr Slavskii #:

Il est difficile de comprendre ce qui se passe ici, mais je pense que vous ouvrez des positions plus importantes que celles autorisées par le courtier sur cet instrument et que le testeur commence à fermer les positions supplémentaires.

En fait, il ne devrait pas ouvrir ces positions supplémentaires. Mais je ne peux pas expliquer autrement ce qui se passe.


Je ne comprends pas non plus une position. Pourquoi ferme-t-elle à la fin de la journée ? Peut-être que votre courtier ne vous permet pas de reporter des positions au jour suivant.

Je vous remercie. Sur un quad avec exactement le même code et la même période, la même chose se produit, seuls les ordres ne sont pas clôturés avec un contre-ordre. Mon courtier est Alpari. Après vos explications, j'ai compris pourquoi le nombre de contre-ordres de clôture est si différent de celui des ordres qu'ils clôturent. Parce que tous les ordres de clôture sont ouverts à la toute fin après tous les ordres de clôture.

 

Bonjour à tous !
J'essaie d'apprendre à placer des ordres dans le five en utilisant la classe CTrade, car il me semble que c'est la façon la plus rapide et la plus simple de les placer. Pour être plus précis, j'essaie d'apprendre à définir le paramètre STOPLOSS. Dans la version 4, le dernier cours acheteur était stocké dans le Bid prédéfini, et dans la version 5, si j'ai bien compris, le dernier cours acheteur n'est pas stocké, mais, si je ne me trompe pas, comme l'une des options, il est calculé dans la méthode Bid de la classe CSymbolInfo. Mais pour que cette méthode calcule le prix, le symbole doit avoir été préalablement sélectionné par la méthode Name. Je comprends le fonctionnement de la méthode Name, dans laquelle il faut insérer soit le nom du symbole, soit NULL, et qui renvoie false ou true.

Mais je ne comprends pas comment et où combiner la méthode Name et la méthode Bid, de sorte que le prix Bid soit stocké dans la variable c.

Dans quatre cas, les ordres ont été sélectionnés à l'aide de la fonction Select(), mais dans cinq cas, ce ne sont pas les ordres qui devraient être sélectionnés, mais le symbole...... Je ne comprends pas comment faire

Je vous serais très reconnaissant si vous pouviez écrire un fragment dans mon code pour enregistrer le prix Bid dans la variable with, que j'utilise dans le paramètre SL de la méthode Btsu de la classe CTrade.

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5