Questions des débutants MQL4 MT4 MetaTrader 4 - page 96

 

Bonjour, je veux obtenir une date d'expirationpour les contrats à terme.

EXPIRATION=(datetime)SymbolInfoInteger(Symbol(),SYMBOL_EXPIRATION_TIME) ;

Il donne 1970 01 01 00 00

 

Bonjour,


Veuillez me conseiller, l'autovalidation montre une erreur de"division par zéro" dans l'expression suivante :


NormalizeDouble(STOP/MarketInfo( Symbol(),MODE_TICKVALUE)*10,0)*Point

L'impression de tous les composants ne montre PAS de valeurs nulles.

Quelle pourrait être la raison de cette erreur ?

 

MT4

Où puis-je obtenir la liste actuelle et complète des valeurs int OrderType() ?

L'aide, je suppose, n'a pas été mise à jour.


AccountProfit() compte-t-il les dépôts et les retraits ?

L'aide ne dit pas vraiment comment elle est comptée, ce qui est pris en compte...

Même une définition précise du terme aiderait à comprendre ce que les développeurs ont voulu dire et comment il faut le compter.

Peut-être y a-t-il une vue d'ensemble des fonctions similaires de la part des développeurs , dont le résultat est dérivé? Je dois le collecter par morceaux...

 
Viatcheslav Pashkov:

Bonjour,


Veuillez me conseiller, l'autovalidation montre une erreur de"division par zéro" dans l'expression suivante :


L'impression de tous les composants ne montre PAS de valeurs nulles.

Quelle peut être la raison de cette erreur ?


Veuillez me donner un code plus complet. Types de variables. Quel personnage. Quelles valeurs sont prises avant la substitution dans l'expression. Où est le résultat du calcul de cette expression utilisée ensuite.

 
Kirill Belousov:

Donnez un code plus complet. Types de variables. Quel personnage. Quelles valeurs sont prises avant d'être substituées dans une expression. Où est le résultat du calcul de cette expression utilisé ultérieurement.

Il n'y avait que des variables prédéfiniesSymbol() etMODE_TICKVALUE)

Je ne sais pas ce que c'est, mais j'ai résolu le problème de cette façon :

J'ai introduit une vérification du zéro telle que : si l'expression n'est pas égale à zéro, alors exécuter.


Et tout s'est bien passé.

Je ne sais pas ce que cela signifie... mais je garderai à l'esprit ... que l'autovalidateur indique une division POSSIBLE par zéro dans le bloc INI, pas une division explicite.

 
Viatcheslav Pashkov:

Bonjour,


Veuillez me conseiller, l'autovalidation montre une erreur de"division par zéro" dans l'expression suivante :


L'impression de tous les composants ne montre PAS de valeurs nulles.

Quelle pourrait être la raison de cette erreur ?

double TICK_VALUE = MarketInfo( Symbol(),MODE_TICKVALUE);
if(TICK_VALUE ==0) return;
NormalizeDouble(STOP/TICK_VALUE *10.0)*Point
 
Vitaly Muzichenko:

CommentTICK_VALUE peut-ilêtre égal à zéro ?

 
Viatcheslav Pashkov:

CommentTICK_VALUE peut-il être égal à zéro ?


jusqu'à ce que le terminal soit connecté au compte, la plupart des variables sont à zéro

 
Taras Slobodyanik:

jusqu'à ce que le terminal soit connecté au compte, la plupart des variables sont à zéro


Merci, je vais garder ça à l'esprit !

 
Viatcheslav Pashkov:

Il n'y avait que des variables prédéfiniesSymbol() etMODE_TICKVALUE)

Je ne sais pas ce qui ne va pas, mais j'ai résolu le problème de cette façon :

J'ai introduit une vérification du zéro telle que : si l'expression n'est pas égale à zéro, alors exécuter.


Et tout s'est bien passé.

Je ne sais pas ce que cela signifie ... mais je garderai à l'esprit ... que l'autovalidateur indique une division POSSIBLE par zéro dans le bloc INI, et non une division explicite.

Signaler une division par zéro n'est pas le problème, c'est la conséquence.

Mais maintenant, il sera difficile de trouver le problème, car vous avez simplement supprimé le message gênant concernant la division par 0.

Qu'est-ce que vous normalisez exactement ? Où substituez-vous le résultat ?

Veuillez donner votre code où vous utilisez ensuite le résultat de l'expression que vous avez donnée. Je pense que le problème se pose là.

Raison: