Erreurs, bugs, questions - page 2111

 

Création d'une commande en attente de

MQL5 : Erreur
Non traité, Démarré : 2018.01.24 16:17, #1940209

Version du terminal et mode binaire

64 1755

Description du problème

Indicateur de non-déchargement,

J'installe l'indicateur, l'indicateur fonctionne, je retire l'indicateur, l'indicateur est retiré et il n'est pas dans la liste, mais il fonctionne dessine des objets comme s'il n'avait pas été retiré, il n'est pas dans la liste.

Je rouvre le graphique, cela fonctionne même si le graphique d'un autre symbole.

Il fonctionne depuis environ 10 minutes, pas de cycles en boucle, tout est dans la gamme normale, j'ai joint le code...
 

Une erreur de compilation

#define \
    MACRO
En outre, il était prévu que les retours à la ligne fonctionnent dans TOUTES les directives.
 
Vladimir Pastushak:

Création d'une commande en attente de

MQL5 : Erreur
Non traité, Démarré : 2018.01.24 16:17, #1940209

Version du terminal et mode binaire

64 1755

Description du problème

Indicateur de non-déchargement,

J'installe l'indicateur, l'indicateur fonctionne, je supprime l'indicateur, l'indicateur est supprimé et il n'est pas dans la liste, mais il fonctionne dessine des objets comme s'il n'était pas supprimé, il n'est pas dans la liste.

Je rouvre le graphique, cela fonctionne même si le graphique d'un autre instrument.

Il fonctionne depuis environ 10 minutes, pas de boucles, tout est dans la gamme normale, j'ai joint le code...

Le même problème

 
Evgeny Belyaev:

Même problème


Récursion ?

 
Evgeny Belyaev:

Même problème


IndicatorRelease();

 

Erreur lors de la compilation

int  TerminalInfoInteger( 
   int  property_id      // идентификатор свойства 
   );

La pièce jointe doit être compilée

Où ai-je trouvé de tels "espaces" ? Il y en a beaucoup ici https://www.mql5.com/ru/docs/check/terminalinfointeger. J'ai copié le fragment dans Microsoft Edge avec ma souris.

Документация по MQL5: Проверка состояния / TerminalInfoInteger
Документация по MQL5: Проверка состояния / TerminalInfoInteger
  • www.mql5.com
Проверка состояния / TerminalInfoInteger - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Dossiers :
Error157.mq5  1 kb
 

Mise en évidence confuse des macros - indépendante du contexte

//вариант A
#ifdef   MACRO //1
#endif
#define  MACRO //2
#ifdef   MACRO //3
#endif
#undef   MACRO //4
#ifdef   MACRO //5
#endif

soit toujours présent (option B) ou toujours absent (option A)

//вариант B
#ifdef   MACRO //1
#endif
#define  MACRO //2
#ifdef   MACRO //3
#endif
//#undef  MACRO //4
#ifdef   MACRO //5
#endif
Il était prévu que si une macro était définie dans une chaîne de caractères particulière, elle serait mise en évidence, si elle n'était pas définie, elle ne serait pas mise en évidence. Sinon, la signification de la présence ou de l'absence de mise en évidence n'est pas claire.
 

Mise en évidence des fichiers C2C++ dans MetaEditor

https://www.mql5.com/ru/docs/basis/preprosessor/constant

Макрос __MQL5__  доступен при компиляции файла *.mq5, при компиляции *.mq4 доступен макрос __MQL4__.

Ces macros (ainsi que __MQL__) ne sont pas censées être disponibles lors de la mise en évidence de fichiers avec des extensions .c, cpp, .h.

//Test.h
#ifndef __MQL__
#define  MACRO
#endif
//Test.mq5
#include "Test.h"
#ifdef  MACRO //не подсвечивается... нормально
#endif
//Test.cpp
#include "Test.h"
#ifdef  MACRO //не подсвечивается... но этот .cpp файл не предназначен для компиляции в MetaEditor,
             //а компилируется в С\С++, где макрос __MQL__ не является предопределенным
             //в результате подсвечивается то что не должно и наоборот не подсвечивается что должно
#endif

Il s'agit d'un cas (comme le précédent) où une mise en évidence incorrecte et trompeuse est bien pire que l'absence de mise en évidence.

Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
  • www.mql5.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
 

J'ai rencontré à plusieurs reprises des discussions sur le forum d'utilisateurs concernant l'absence d'une macro prédéfinie similaire à _WIN64 dans MetaEditor. La réponse de l'administration a été qu'il n'y a pas besoin car MetaEditor génère un code universel 32-64 bits en même temps.

En même temps, de nombreuses personnes utilisent l'alignement https://www.mql5.com/ru/forum/225498/page2#comment_6401835 en ajoutant les champs à la structure

Et en effet, si vous utilisez un fichier .dll prêt à l'emploi (qui ne peut plus être modifié), vous ne pouvez pas vous passer d'un alignement supplémentaire. Mais en x86 et x64, cette addition peut être différente, ce qui signifie que l'analogue _WIN64 est toujours nécessaire car la structure est définie à l'étape de la compilation du fichier .mq5 où TerminalInfoInteger( TERMINAL_X64 ) ne fonctionne pas.

//Test.mq5
#ifdef _WIN64
#define  ALIGN (8-2) //добавить к элементу структуры 6 байт
#else
#define  ALING (4-2) //добавить к элементу структуры 2 байта
#endif

Maintenant, nous devons garder à l'esprit des informations supplémentaires. En économisant sur une bagatelle, il y a un risque d'obtenir une erreur insaisissable.

Передача структуры в dll C++
Передача структуры в dll C++
  • 2018.01.26
  • www.mql5.com
Пишу dll, которая будет выполнять логику, и собственно возник вопрос. Можно ли передавать в dll структуру данных? Т.е...
 
Toujours d'actualité

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2016.08.25 12:32

Erreur d'exécution dans Optimize=1 et/ou en mode débogage.

#property strict

class A
{
public:  
  bool operator ==( int ) const { return(true); }
};

void OnStart()
{
  Print((A*)NULL == 0); // Optimize=1 or _DEBUG - invalid pointer access. Optimize=0 and _RELEASE - no problem.
}
Raison: