Discussion de l'article "L'utilisation des bibliothèques MQL5 Standard de Cours de Trade dans la rédaction d'un Expert Advisor"
Article très utile pour moi. Tout est beaucoup plus facile si vous utilisez des bibliothèques !
Demande aux développeurs : écrivez une classe pour travailler avec High[i] , Low[i]. Open[i], Close[i]. Je pense que cette classe sera utile à tout le monde ! J'ai résolu ce problème moi-même, mais je ne suis pas sûr qu'il soit correct, car les tests prennent beaucoup de temps....
#include <Indicators\Series.mqh> double High[]; CiHigh z;
pourquoi ce code donne une erreur
'1.mq5' 1.mq5 1 1
'Series.mqh' Series.mqh 1 1
'ArrayObj.mqh' ArrayObj.mqh 1 1
'Array.mqh' Array.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'ArrayDouble.mqh' ArrayDouble.mqh 1 1
'CiHigh' - déclaration sans type 1.mq5 12 2
1 erreur(s), 0 avertissement(s) 2 1
s'il n'est pas difficile d'écrire comment obtenir
Print High[2], par exemple.
pourquoi ce code donne une erreur
si ce n'est pas difficile, veuillez écrire comment obtenir
Print High[2], par exemple.
il y a une erreur dans la documentation. Cette classe se trouve dans le fichier TimeSeries.mqh.
Exemple d'utilisation (le script imprime les trois derniers sommets du graphique actuel) :
#include <Indicators\TimeSeries.mqh> //+------------------------------------------------------------------+ //| Fonction de démarrage du programme de script| //+------------------------------------------------------------------+ void OnStart() { //--- double High[]; CiHigh z; int count=3; if(z.Create(_Symbol,_Period)==true) { if(z.GetData(0,count,High)==count) { for(int i=0; i<count; i++) Print(i,"=",High[i]); } else Print("Échec de la récupération",count,"Données de séries temporelles".); } else Print("Erreur lors de la création d'une série temporelle".); } //+------------------------------------------------------------------+
il y a une erreur dans la documentation. Cette classe se trouve dans le fichier TimeSeries.mqh.
Exemple d'utilisation (le script affiche les trois derniers sommets du graphique actuel) :
Je comprends que chacun programme pour lui-même et pour ses besoins, mais je n'aime pas fondamentalement le groupe des classes de séries temporelles, parce qu'elles consistent toutes en une méthode et une partie descriptive plus qu'une fonctionnalité, et généralement il est nécessaire d'avoir toutes les séries temporelles pour un outil particulier, j'ai fait une classe dans laquelle il y a toutes les séries temporelles pour l'outil nécessaire, dans les méthodes est fait par la pagination de l'histoire, à peu près comme ceci :
struct str_bars{ datetime time[]; // Tableau de séries temporelles contenant l'heure d'ouverture de chaque barre du graphique actuel double open[]; // Tableau de séries temporelles contenant les prix d'ouverture de chaque barre du graphique actuel. double close[]; // Tableau de séries temporelles contenant les prix de clôture de chaque barre du graphique actuel. double high[]; // Tableau de séries temporelles contenant les prix maximums de chaque barre du graphique actuel. double low[]; // Un tableau de séries temporelles contenant les prix minimums de chaque barre du graphique actuel. }; struct str_info{ double point; // Taille du point de l'instrument actuel dans la devise de cotation int spread; // Diffusion actuelle }; //____________________________________________________________________ class currency { public: //---- данные MqlTick TICK; // données relatives au tic-tac str_bars BAR; // données de séries temporelles str_info INFO; // informations sur l'outil int error; //---- методы int create(string sym,ENUM_TIMEFRAMES period, int numbars); int refresh(void); private: string symbol; ENUM_TIMEFRAMES per; int num; datetime lastbar_time; int tmpint1,tmpint2; int ch_load(void); }; //____________________________________________________________________
Je travaille avec ma classe uniquement dans la partie des données déjà préparées, et bien sûr la classe elle-même reçoit des données en appelant la méthode refresh().
il y a une inexactitude dans l'article
double lot_price = myaccount.MarginCheck(_Symbol,otype,Lot); // prix du lot/nombre de marges requises
devrait être
double lot_price=myaccount.MarginCheck(_Symbol,otype,Lot,price); //--- prix du lot/nombre de marges requises
Excellent article. Merci beaucoup à l'auteur. J'aimerais également écrire une vérification du niveau du Stop avant de passer un ordre, et une vérification de la valeur du spread. En effet, si le spread est flottant, vous ne pouvez pas entrer sur le marché lorsque sa valeur est élevée, car il n'est pas rentable. Cela aidera l'Expert Advisor à ne pas négocier pendant les nouvelles. J'aimerais également vérifier la déviation - le raisonnement est similaire. J'ai également une question concernant la bibliothèque : qu'est-ce qu'une fonction (quel type de processus désigne-t-elle et décrit-elle) ?
Niveau de gel
Obtient la distance de gel des opérations commerciales en points.
| int FreezeLevel() const |
en langage simple - veuillez l'expliquer si vous le savez.
Et une dernière question. Nous pouvons connaître les limites, par exemple, Stop_Level au moment présent (disons 10 points). Nous plaçons un ordre en attente avec SL=10 points. Après, par exemple, une heure, le prix atteint le prix spécifié dans l'ordre, mais le Stop_Level à ce moment est égal, par exemple, à 15 pips. Que se passera-t-il - l'ordre en attente fonctionnera-t-il ou sera-t-il rejeté ? En outre, lorsque le prix atteint le prix spécifié dans l'ordre, mais que le spread a changé, cela signifie-t-il que l'entrée ou la sortie est possible à un prix inférieur au prix attendu au moment de l'ouverture de l'ordre, ou que l'ordre ne fonctionnera pas du tout ?
Pourquoi la candidature n'est-elle pas imprimée ?
Voici le journal de travail
2011.01.31 20:20:18 00(EURUSD,M1) EURUSD 0
Voici le code
#include <Trade\SymbolInfo.mqh> //--- Classe CSymbolInfo CSymbolInfo my_symbol; //--- Objet de la classe CSymbolInfo //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'expert| //+------------------------------------------------------------------+ int OnInit() { return(0); } //+------------------------------------------------------------------+ //| Fonction de désinitialisation de l'expert| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Fonction de tic-tac expert| //+------------------------------------------------------------------+ void OnTick() { my_symbol.Name(_Symbol); my_symbol.Refresh(); Print(_Symbol," ",my_symbol.Bid()); } //+------------------------------------------------------------------+
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article L'utilisation des bibliothèques MQL5 Standard de Cours de Trade dans la rédaction d'un Expert Advisor a été publié :
Cet article explique comment utiliser les principales fonctionnalités de la bibliothèque standard MQL5 de classes de trade dans la rédaction des conseillers experts qui implémente la fermeture de la position et la modification , la passation et la suppression de commande en attente et la vérification de la marge avant de passer un trade.. Nous avons également démontré comment les classes de trade peuvent être utilisés pour obtenir les détails des commandes et des deals.
Jusqu'à présent, nous avons examiné comment nous pouvons utiliser les bibliothèques de classe Trade pour écrire un Expert Advisor. La chose suivante est de tester notre Expert Advisor avec le testeur de stratégie et de constater ses performances.
Compilez le code EA, puis chargez-le dans le Testeur de Stratégie
Figure 3. Rapport de compilation d'un Expert Advisor
Sur le graphique quotidien GBPUSD en utilisant les paramètres par défaut : Prise de Bénéfice- 270, Arrêt de Perte - 100 et Point de pistes (TP/SL) - 32, on a les résultats suivants :
Figure 4. Rapport de test Expert Advisor - Graphique quotidien GBPUSD
Auteur : Samuel Olowoyo