Apprendre et écrire ensemble en MQL5 - page 31

 
Urain:

Pushkin va-t-il initialiser la chaîne ?

Hmmm... Je ne suis pas très bon en programmation, mais la chaîne ne serait-elle pas réinitialisée à chaque fois ?

Je suis intéressé par sa valeur de base, par exemple, la valeur de double est zéro, bool est 1, mais quoi ?

L'exemple de Dabble :

double Statys ;

void OnTick()
{
si(Statys == 0)
{OpenBuy();}

}

Et cela semble fonctionner))


(Exactement, ce n'est pas mis à zéro.)) Je ne les ai jamais initialisés à cet endroit).


 
AUser:

Hmm... Je ne suis pas bon en programmation, mais la chaîne ne serait-elle pas réinitialisée à chaque fois ?

Je suis intéressé par sa valeur de base, par exemple, la valeur de double est zéro, bool est 1, mais qu'est-ce que c'est ?


Exactement, ce n'est pas mis à zéro.) Et je ne les ai jamais initialisés là)

Dans l'aide de MQL5, c'est clairement indiqué dans la section Initialisation des variables:

Toute variable peut être initialisée lors de sa définition. Si une variable n'est pas explicitement initialisée, la valeur stockée dans cette variable peut être ce que vous voulez. L'initialisation implicite n'est pas effectuée.

Vous avez de la chance pour un temps, mais un jour vous serez malchanceux et vous chercherez péniblement une erreur dans votre code, ignorant que le diable se cache dans les détails. Vous ne devez pas vous contenter de dire "j'aurai de la chance".
 
Rosh:

La section Initialisation des variables de l'aide de MQL5 indique explicitement :

Vous avez juste de la chance pour le moment, mais un jour vous n'aurez pas de chance et vous passerez un temps fou à chercher un bug dans votre code, sans savoir que le diable se cache dans les détails. Vous ne devez pas compter sur le "je vais avoir de la chance".
Oui, merci)) Je vais y arriver)))
 

J'écris une fonction simple pour vérifier la direction de l'indexation dans un tableau. Les tableaux eux-mêmes sont issus de OnCalculate(), c'est-à-dire qu'ils ont des types différents (double, datetime, etc.). Il existe des exemples de fonctions terminales dans la référence qui utilisent le type d'en-tête f(void &array[]) lors du traitement de tableaux de différents types. Mais le compilateur jure sur l'utilisation du type void dans la fonction utilisateur. Existe-t-il un moyen universel d'indiquer au compilateur que le type de paramètre de tableau n'est pas important pour une fonction utilisateur ?

 

Je voudrais clarifier la structure du résultat de la demande de transaction (MqlTradeResult).

double price; // Prix de la transaction, confirmé par le courtier.

Il ne renvoie pas le prix d'un ordre en attente ? Le conseiller expert a écrit le code suivant :

double Statys = 0 ;
void OnTick()
{
if (Statys == 0)
{OpenBuy();}
}

void OpenBuy()
{
MqlTradeRequest o ; MqlTradeResult p ;
double Ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK) ;

o.action = TRADE_ACTION_PENDING ;
o.symbole = _Symbole ;
o.volume = 1 ;
o.prix = 82 000 ;
o.sl = 81,800 ;
o.tp = 82.200 ;
o.type = ORDER_TYPE_BUY_STOP ;
o.type_filling = ORDER_FILLING_AON ;
o.type_time = ORDER_TIME_GTC ;
CommandeEnvoi(o,p) ;
Statys = p.prix ;
}


Si l'on en juge par le fait que nous avons beaucoup de transactions ouvertes, j'ose supposer que la réponse est prix = 0. C'est un peu bizarre quand même.


Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - Документация по MQL5
 
Yedelkin:

Existe-t-il un moyen universel d'indiquer au compilateur que le type du paramètre du tableau n'est pas important pour une fonction utilisateur ?

Faites une fonction de surcharge sur différents types de données dans le tableau.
Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Основы языка / Функции / Перегрузка функций - Документация по MQL5
 
AUser:

Je voudrais clarifier la structure du résultat de la demande de transaction (MqlTradeResult).

double price; // Prix de la transaction, confirmé par le courtier.

Il ne renvoie pas le prix d'un ordre en attente ? Le conseiller expert a écrit un tel code :


À en juger par le fait qu'il y a beaucoup de transactions ouvertes, j'imagine que la réponse est prix = 0. C'est un peu bizarre quand même.


Un ordre en attente n'implique pas la conclusion d'une transaction. Consultez l'aide sur la structure de MqlTradeResult:

Description du champ

Champ

Description

retcode

Code de retour du serveur commercial

transaction

Ticket de transaction, si une transaction a été effectuée. Signalé dans l'opération commerciale TRADE_ACTION_DEAL

commander

Ticket de commande, si un ticket a été placé. Notifié pendant une opération commerciale TRADE_ACTION_PENDING

volume

Volume de la transaction confirmée par le courtier. Cela dépend du type de remplissage de la commande

prix

Prix de la transaction, confirmé par le courtier. Dépend du champ de déviation dans la demande de transaction et/ou du type de transaction.

offre

Prix actuel de l'offre du marché (prix de la requote)

demandez à

Prix actuel des offres du marché (prix des requêtes)

commentaire

Commentaire du courtier sur la transaction (par défaut, rempli avec un décryptage)

Veuillez également insérer le code correctement.
 
OK, arrête. Doit-on aussi initialiser les chaînes de caractères ? Ce n'est pas un type atomique.
 
Rosh:

Un ordre en attente ne constitue pas une transaction. Consultez l'aide pour la structure MqlTradeResult:

Veuillez également insérer le code correctement.
Je l'ai eu)
 
TheXpert:
OK, arrête. Doit-on aussi initialiser les chaînes de caractères ? Ce n'est pas un type atomique.
Vous ne devez pas vous fier à l'initialisation par défaut. Jamais.
Raison: