Erreurs, bugs, questions - page 1383

 

Appel d'une méthode avec un pointeur nul

class A {
public:
        virtual void f() const { Print(__FUNCSIG__); }
        virtual void g()       { f(); }
	static  void h()       { Print(__FUNCSIG__); }
};
void OnStart()
{
        A *a = NULL;
        a.f(); //нет ошибки при выполнении (!)
        a.g(); //invalid pointer access
        a.h(); //нормально
}
En fait, A::f() dans ce cas particulier se comporte comme une fonction statique
 
A100:

Appel d'une méthode avec un pointeur nul

En fait, A::f() se comporte dans ce cas particulier comme un statique.
Merci, nous verrons.
 

L'exemple de publication d'une nouvelle sur mon mur à l'aide de webrequest donné dans la doc ne fonctionne pas. Il y a 10 jours, le même exemple fonctionnait.

l'autorisation a réussi, il envoie le fichier (image), mais lorsque j'essaie d'envoyer le texte, le site renvoie une erreur 403 (interdit).

Peut-être que quelque chose a été modifié dans les collecteurs ?

Je suis en train d'écrire un article sur ce sujet - j'aimerais avoir une réponse dès que possible.

WebRequest - Документация на MQL4
  • docs.mql4.com
WebRequest - Документация на MQL4
 

La fonction WindowExpertName() renvoie désormais le nom complet de l'EA ainsi que l'extension, alors qu'auparavant seul le nom était renvoyé ! !!!!!!!!!.

 

Bonjour,

Pouvez-vous me dire quelle est l'erreur de code, le compilateur imprime : 'Cl' - la déclaration n'est pas autorisée pour la portée actuelle test.mq4 25 8

classe Cl

{

public :

int x ;

int y ;

int func() ;

} ;

int Cl::func()

{

retour (x+y) ;

}

Cl z ;

z.x=1 ;

z.y=2 ;

int y=0 ;

y=z.func() ;

Imprimer(y) ;

 
Vasua:

Bonjour,

Pourriez-vous me dire quelle est l'erreur de code, le compilateur imprime : 'Cl' - la déclaration n'est pas autorisée pour la portée actuelle test.mq4 25 8

Le fragment de code que vous avez montré se compile sans problème tant que la partie principale (après la déclaration de classe) existe dans une fonction.

Vous ne pouvez pas simplement taper des commandes exécutables "en l'air" dans MQL.

Pour en savoir plus, cliquez ici :

https://www.mql5.com/ru/docs/runtime/running

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Bonjour ! conseillez comment faire l'ouverture d'un ordre dans le ADVISOR par heure non pas 08:00 etc, mais à 08:30, j'ai tout essayé, j'ai un timer d'entrée TimeFr=240 ; qui lorsqu'il est changé dans le test n'ouvre pas l'ordre
 
Romal001:
Bonjour ! Veuillez m'indiquer comment faire pour que l'ouverture d'un ordre dans le TEST ne soit pas à 08:00, etc. mais à 08:30. J'ai tout essayé. J'ai une entrée de minuterie TimeFr=240 ; qui, lorsqu'elle est modifiée dans le test, n'ouvre pas l'ordre.

La minuterie, dans ce cas, est une mauvaise solution. Dans le testeur, les minuteurs sont une vraie plaie.

Si je comprends bien, cela revient à la chose la plus simple.

A chaque tick dans l'EA, en utilisant TimeCurrent(), nous devons obtenir une réponse à la question "Est-ce le moment de passer l'ordre ?" et...

 
Romal001:
Bonjour, Pourriez-vous me conseiller sur la façon d'ouvrir un ordre dans le DIRECTOR par heure non pas à 08:00 etc. mais à 08:30 ? J'ai tout essayé. J'ai une entrée de minuterie int TimeFr=240 ; qui n'ouvre pas d'ordre lorsqu'elle est modifiée dans le test

l'événement = temps d'ouverture est fait, cet événement est analysé comme la recherche de cet événement dans la fourchette de temps et en plus, après l'ouverture d'un ordre, le drapeau d'ouverture doit être mis et ajouté à l'analyse ultérieure pour exclure la réouverture de l'ordre ...

Par exemple, la modélisation des événements peut se faire sur le conteneur <queue>...

 
Fry:

Une minuterie, dans ce cas, est une mauvaise solution. Et dans le testeur, les minuteurs sont une vraie plaie.

Si je comprends bien, le point se résume à la chose la plus simple.

A chaque tick dans l'EA en utilisant TimeCurrent(), nous devons obtenir la réponse à la question "Est-il temps de passer l'ordre maintenant ?" et...

Bonjour, il est temps d'ouvrir un ordre mais il ne s'ouvre pas si je décoche la minuterie, l'EA ne placera pas de transaction.