Le 5 avril 2009, le serveur "demo.metaquotes.net" sera fermé. Cependant, le centre d'histoire avec l'histoire minute continuera son travail.
Depuis ce jour, notre entreprise refuse d'utiliser le serveur de démonstration. Aujourd'hui, le nombre de sociétés utilisant la plateforme MetaTrader 4 est si élevé que nous ne voyons pas la nécessité de maintenir notre propre serveur.
C'est une sorte d'antiquité (un autre serveur est mentionné). Cela a été fait plusieurs fois cette année, la dernière fois il y a un mois sur MetaQuotes-Demo un nouveau compte de démonstration a été créé normalement.
De plus, si le serveur est supprimé, pourquoi est-il affiché et envoyé dans l'assistant d'ouverture de compte ? Le blocage ne se produit que lors de la dernière étape.
La première fois que l'indicateur accède aux données historiques, s'il n'y a pas assez de données locales, les données sont chargées et la fonction renvoie une erreur.
Je le comprends parfaitement. S'il s'agissait d'un nombre insuffisant de barres dans l'historique, les deux fonctions renverraient 0. Cependant, l'une d'entre elles renvoie 0, tandis que l'autre renvoie correctement le nombre de barres dans l'historique. De plus, ils sont appelés l'un après l'autre :
Loader(): symbol(Symbol()), timeframe(Period())
{
Print(__FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString(timeframe));
ResetLastError();
Print(__FUNCTION__ + " bars: " + (string)iBars(symbol, timeframe)); // Данный вызов iBars() даёт 0 при перезапуске терминалаPrint(__FUNCTION__ + " Error: " + (string)GetLastError());
Print(__FUNCTION__ + " bars (2): " + (string)iBars(Symbol(), Period())); // Этот же вызов iBars() работает нормально
}
Dans le premier cas, les données proviennent des prémembres prêts (symbol et timeframe) de la classe Loader (correctement initialisés), mais dans le second cas, des fonctions Symbol() et Period() (qui renvoient exactement les mêmes valeurs que celles écrites dans symbol et timeframe). Les valeurs des variables sont identiques à celles des fonctions (j'ai vérifié). Mais il n'est pas clair où iBars(symbol, timeframe) s'embrouille avec un symbole et un timeframe absolument corrects. Alors que iBars(Symbol(), Period()) ne fait pas d'erreur. J'ai donc décidé que ce devait être une erreur dans le terminal lui-même ou une compilation incorrecte du code source.
Если указаны параметры start_time и stop_time, то функция возвращает количество баров в диапазоне дат. Если эти параметры не указаны, то функция возвращает общее количество баров. Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не...
Je le comprends très bien. S'il s'agissait du manque de barres dans l'historique, les deux fonctions renverraient 0. Mais en l'état, une fonction renvoie 0, tandis que l'autre renvoie correctement le nombre de barres dans l'historique. De plus, ils sont appelés l'un après l'autre :
Dans le premier cas, les données proviennent des prémembres prêts (symbol et timeframe) de la classe Loader (correctement initialisés), mais dans le second cas, des fonctions Symbol() et Period() (qui renvoient exactement les mêmes valeurs que celles écrites dans symbol et timeframe). Les valeurs des variables sont identiques à celles des fonctions (j'ai vérifié). Mais il n'est pas clair où iBars(symbol, timeframe) s'embrouille avec un symbole et un timeframe absolument corrects. Alors que iBars(Symbol(), Period()) ne fait pas d'erreur. J'ai donc décidé qu'il y avait une erreur quelque part dans le fonctionnement du terminal.
Maintenant, écris-le comme ça, comme Igor l'a conseillé :
Loader(): symbol(Symbol()), timeframe(Period())
{
Print(__FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString(timeframe));
ResetLastError();
Print(__FUNCTION__ + " bars: " + (string)iBars(Symbol(), Period())); // Данный вызов iBars() даёт 0 при перезапуске терминалаPrint(__FUNCTION__ + " Error: " + (string)GetLastError());
Print(__FUNCTION__ + " bars (2): " + (string)iBars(symbol, timeframe)); // Этот же вызов iBars() работает нормально
}
Et n'oubliez pas que c'est un constructeur de classe, et qu'il est appelé avant l'initialisation.
Je le comprends très bien. S'il s'agissait du manque de barres dans l'historique, les deux fonctions renverraient 0. Mais en l'état, une fonction renvoie 0, tandis que l'autre renvoie correctement le nombre de barres dans l'historique. Et ils sont appelés les uns après les autres :
Vous inventez une histoire
et ensuite vous décidez de l'écrire comme une réclamation et ensuite la question
Que dit l'aide à l'erreur 4401 ?
Qu'ai-je écrit ?
Comprenez-vous la différence entre un manque de barres et un graphique qui n'est pas prêt ?
vous avez la situation après le redémarrage du terminal avec le démarrage de l'indicateur, et vous demandez les données dans l'initialisation globale du programme MQL (constructeur de classe), qui sera exécuté avant OnInit()
parti, vous écrivez plus vite que vous ne lisez, cherchez dans le forum 4401 - toutes les réponses
Cette affectation ne peut être effectuée qu'une seule fois au démarrage. Il est impossible qu'une expression soit automatiquement affectée à chaque accès àLots. Je n'ai pas entendu dire que MQL pouvait faire ça.
Ça ne peut pas être comme ça. Vous avez la déclaration et l'initialisation, et une expression est assignée à la variableLots.
Cette affectation peut être faite une fois au démarrage, il ne faut pas que chaque fois que vous accédez àLots, une expression soit automatiquement affectée. Je n'ai pas entendu dire que MQL pouvait faire ça.
J'ai vérifié, quand l'équilibre change, le lot change aussi.
MakarFX: J'ai vérifié, quand l'équilibre change, le lot change aussi.
Wow, je vais vérifier. Je sais que l'on peut initialiser des variables avec des éléments de tableau avec des fonctions, mais je ne savais pas que cela changeait automatiquement, je ne pense pas qu'il y ait une telle chose en C++ non plus, je vérifierai plus tard.
Artyom Trishkin: Et n'oubliez pas que c'est un constructeur de classe, et qu'il est appelé avant l'initialisation.
Ceci si l'objet est automatique. Mais je le crée avec le mot clénew (dans OnInit()) et le supprime avec le mot clé delete (dans OnDeinit()). C'est-à-dire que j'utilise un pointeur vers un objet de type Loader. Mais je pense que vous connaissez tous ces détails. C'est pourquoi le chargeur est créé dans OnInit() et il ne peut y avoir d'erreur ici.
Si vous voulez dire échanger les fonctions, j'ai essayé et le résultat est le même. Seuls les messages se succèdent dans un ordre différent :)
Veuillez noter que cela ne se produit que si et seulement si le terminal est redémarré ! Car au premier démarrage du terminal (après le démarrage de Windows), cet exemple fonctionne correctement.
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
Aucune réclamation ! Et qu'en est-il si j'ai fourni le code source et même décrit la séquence d'actions pour tester son fonctionnement ? Manifestement, vous m'avez mal compris...
Igor Makanu:
Et vous demandez des données dans l'initialisation globale du programme MQL (constructeur de classe), qui sera exécuté avant OnInit().
parti, tu écris plus vite que tu ne lis,cherche dans le forum 4401 - toutes les réponses
Il ne doit pas être exécuté avantOnInit(), ai-je écrit dans un post précédent. C'est vous qui ne lisez pas attentivement, tant les posts que le code source que j'ai ajouté pour les tests.
Il s'agit d'une certaine antiquité (un autre serveur est mentionné). Plus d'une fois cette année, la dernière fois il y a un mois sur MetaQuotes-Demo un nouveau compte de démonstration a été créé normalement.
De plus, si le serveur est supprimé, pourquoi est-il affiché et envoyé dans l'assistant d'ouverture de compte ? Le blocage ne se produit que lors de la dernière étape.
Oui, quelque chose ne s'enregistre pas, même dans le terminal mobile. Au début de l'année, tout s'est enregistré.
Fermeture du serveur de démonstration MetaQuotes
MetaQuotes Software Corp.
4 mars 2009
Le 5 avril 2009, le serveur "demo.metaquotes.net" sera fermé. Cependant, le centre d'histoire avec l'histoire minute continuera son travail.
Depuis ce jour, notre entreprise refuse d'utiliser le serveur de démonstration. Aujourd'hui, le nombre de sociétés utilisant la plateforme MetaTrader 4 est si élevé que nous ne voyons pas la nécessité de maintenir notre propre serveur.
C'est une sorte d'antiquité (un autre serveur est mentionné). Cela a été fait plusieurs fois cette année, la dernière fois il y a un mois sur MetaQuotes-Demo un nouveau compte de démonstration a été créé normalement.
De plus, si le serveur est supprimé, pourquoi est-il affiché et envoyé dans l'assistant d'ouverture de compte ? Le blocage ne se produit que lors de la dernière étape.
La première fois que l'indicateur accède aux données historiques, s'il n'y a pas assez de données locales, les données sont chargées et la fonction renvoie une erreur.
Je le comprends parfaitement. S'il s'agissait d'un nombre insuffisant de barres dans l'historique, les deux fonctions renverraient 0. Cependant, l'une d'entre elles renvoie 0, tandis que l'autre renvoie correctement le nombre de barres dans l'historique. De plus, ils sont appelés l'un après l'autre :
Dans le premier cas, les données proviennent des prémembres prêts (symbol et timeframe) de la classe Loader (correctement initialisés), mais dans le second cas, des fonctions Symbol() et Period() (qui renvoient exactement les mêmes valeurs que celles écrites dans symbol et timeframe). Les valeurs des variables sont identiques à celles des fonctions (j'ai vérifié). Mais il n'est pas clair où iBars(symbol, timeframe) s'embrouille avec un symbole et un timeframe absolument corrects. Alors que iBars(Symbol(), Period()) ne fait pas d'erreur. J'ai donc décidé que ce devait être une erreur dans le terminal lui-même ou une compilation incorrecte du code source.
Je le comprends très bien. S'il s'agissait du manque de barres dans l'historique, les deux fonctions renverraient 0. Mais en l'état, une fonction renvoie 0, tandis que l'autre renvoie correctement le nombre de barres dans l'historique. De plus, ils sont appelés l'un après l'autre :
Dans le premier cas, les données proviennent des prémembres prêts (symbol et timeframe) de la classe Loader (correctement initialisés), mais dans le second cas, des fonctions Symbol() et Period() (qui renvoient exactement les mêmes valeurs que celles écrites dans symbol et timeframe). Les valeurs des variables sont identiques à celles des fonctions (j'ai vérifié). Mais il n'est pas clair où iBars(symbol, timeframe) s'embrouille avec un symbole et un timeframe absolument corrects. Alors que iBars(Symbol(), Period()) ne fait pas d'erreur. J'ai donc décidé qu'il y avait une erreur quelque part dans le fonctionnement du terminal.
Maintenant, écris-le comme ça, comme Igor l'a conseillé :
Et n'oubliez pas que c'est un constructeur de classe, et qu'il est appelé avant l'initialisation.Je le comprends très bien. S'il s'agissait du manque de barres dans l'historique, les deux fonctions renverraient 0. Mais en l'état, une fonction renvoie 0, tandis que l'autre renvoie correctement le nombre de barres dans l'historique. Et ils sont appelés les uns après les autres :
Vous inventez une histoire
et ensuite vous décidez de l'écrire comme une réclamation et ensuite la question
Que dit l'aide à l'erreur 4401 ?
Qu'ai-je écrit ?
Comprenez-vous la différence entre un manque de barres et un graphique qui n'est pas prêt ?
vous avez la situation après le redémarrage du terminal avec le démarrage de l'indicateur, et vous demandez les données dans l'initialisation globale du programme MQL (constructeur de classe), qui sera exécuté avant OnInit()
parti, vous écrivez plus vite que vous ne lisez, cherchez dans le forum 4401 - toutes les réponses
Je calcule le lot comme suit
Il est au début de l'EA...et je l'ai mis à la toute fin du code
Lorsque la variable Lots est appelée dans la fonction OnTick, l'EA la retrouve et la recalcule.
Ça ne peut pas être comme ça. La déclaration et l'initialisation sont en cours, et la variableLots est assignée avec une expression.
Cette affectation ne peut être effectuée qu'une seule fois au démarrage. Il est impossible qu'une expression soit automatiquement affectée à chaque accès àLots. Je n'ai pas entendu dire que MQL pouvait faire ça.
Ça ne peut pas être comme ça. Vous avez la déclaration et l'initialisation, et une expression est assignée à la variableLots.
Cette affectation peut être faite une fois au démarrage, il ne faut pas que chaque fois que vous accédez àLots, une expression soit automatiquement affectée. Je n'ai pas entendu dire que MQL pouvait faire ça.
J'ai vérifié, quand l'équilibre change, le lot change aussi.
Wow, je vais vérifier. Je sais que l'on peut initialiser des variables avec des éléments de tableau avec des fonctions, mais je ne savais pas que cela changeait automatiquement, je ne pense pas qu'il y ait une telle chose en C++ non plus, je vérifierai plus tard.
Et n'oubliez pas que c'est un constructeur de classe, et qu'il est appelé avant l'initialisation.
Ceci si l'objet est automatique. Mais je le crée avec le mot clénew (dans OnInit()) et le supprime avec le mot clé delete (dans OnDeinit()). C'est-à-dire que j'utilise un pointeur vers un objet de type Loader. Mais je pense que vous connaissez tous ces détails. C'est pourquoi le chargeur est créé dans OnInit() et il ne peut y avoir d'erreur ici.
Si vous voulez dire échanger les fonctions, j'ai essayé et le résultat est le même. Seuls les messages se succèdent dans un ordre différent :)
Résultat :
2020.06.24 23:10:48.568 Loader::Loader symbole : EURUSD timeframe : PERIOD_H1
2020.06.24 23:10:48.568 Loader::Barres de chargeurs (2) : 140435
2020.06.24 23:10:48.568 Loader::Barres de chargement : 0
2020.06.24 23:10:48.568 Loader::Loader Error : 4401
Tu as inventé une histoire.
et a ensuite décidé d'en faire une plainte.
Aucune réclamation ! Et qu'en est-il si j'ai fourni le code source et même décrit la séquence d'actions pour tester son fonctionnement ? Manifestement, vous m'avez mal compris...
Et vous demandez des données dans l'initialisation globale du programme MQL (constructeur de classe), qui sera exécuté avant OnInit().
parti, tu écris plus vite que tu ne lis,cherche dans le forum 4401 - toutes les réponses
Il ne doit pas être exécuté avantOnInit(), ai-je écrit dans un post précédent. C'est vous qui ne lisez pas attentivement, tant les posts que le code source que j'ai ajouté pour les tests.
Il s'agit d'une certaine antiquité (un autre serveur est mentionné). Plus d'une fois cette année, la dernière fois il y a un mois sur MetaQuotes-Demo un nouveau compte de démonstration a été créé normalement.
De plus, si le serveur est supprimé, pourquoi est-il affiché et envoyé dans l'assistant d'ouverture de compte ? Le blocage ne se produit que lors de la dernière étape.