[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 368

 

Bon après-midi.

Je dois déterminer l'ouverture d'un nouveau bar. J'ai inséré dans mon Expert Advisor une fonction pure, l'exemple du tutoriel MQL

void Fun_New_Bar() // Fonction de détection de nouvelle barre
{
static datetime New_Time=0 ; // Heure actuelle de la barre
bool New_Bar=false ; // Pas de nouvelle barre
if(New_Time!=Time[0]) // Comparer l'heure
{
New_Time=Time[0] ; // L'heure est maintenant
New_Bar=true ; // Attrapé la nouvelle barre
}
return(New_Bar) ;
}

Il donne une seule erreur '(' - function definition unexpected - Je comprends cela comme une définition de fonction inattendue.

J'ai défini la variable "New_Time" avant la fonction int comme datetime New_Time;- sans cela la compilation a donné une erreur de variable non définie.

La fonction est appelée dans le programme principal comme suit :

Fun_New_Bar() ; // Appel de f-i
if (New_Bar==false) // Si la barre n'est pas nouvelle...
retour ;

Qui peut me dire pourquoi tout cela ne fonctionne pas ?

Et une autre observation intéressante - lorsque vous corrigez quelque chose, vous le copiez - pas d'erreur, puis vous le copiez à nouveau - encore une fois

'(' - définition de fonction inattendue - c'est pourquoi. Est-ce que j'écris de manière tellement obfusquée que le compilateur ne peut pas me comprendre tout de suite ?

 
keekkenen >> :
Il arrive que l'on imprime de travers et que l'on voit 0,0000 = 0 et que cela ne fonctionne pas - faux, normaliser les valeurs au cas où.

J'ai ajouté une nouvelle condition qui duplique celle qui pose problème et le problème est résolu.

Merci !


PS C'est bien que dans mon cas, l'erreur avec les ordres a signalé le problème - dans d'autres cas, la logique de l'EA peut être complètement cassée,

sans aucun message, et il sera impossible de le savoir :((((

 

La fonction est déclarée comme void, c'est-à-dire qu'elle ne renvoie rien, mais dans le code il est écrit return(New_Bar) ; c'est la raison de l'erreur...

il doit être déclaré en fonction du type de variable retournée - bool Fun_New_Bar()

et l'utiliser en conséquence if ( !Fun_New_Bar() ) return(0) ;

 
keekkenen писал(а) >>

La fonction est déclarée comme void, c'est-à-dire qu'elle ne renvoie rien, mais dans le code il est écrit return(New_Bar) ; c'est la raison de l'erreur...

il doit être déclaré en fonction du type de variable retournée - bool Fun_New_Bar()

et l'utiliser en conséquence if ( !Fun_New_Bar() ) return(0) ;

Je l'avais exactement comme "bool Fun_New_Bar()" dans la première version, mais l'erreur était la même, j'ai donc nommé la fonction comme dans le manuel - void. J'ai appliqué votre conseil et il n'y a aucun changement - l'erreur est la même.

Mais un changement est intervenu - l'erreur se trouve à la ligne 279 (c'est la ligne de commentaire), alors que la fonction commence à la ligne 280

Une question connexe est de savoir s'il est acceptable de charger la fonction int() avec un bloc d'analyse unique, par exemple, la détermination des valeurs des deux derniers retournements de l'indicateur.

Je l'ai fait. Cela peut-il provoquer un blocage du conseiller expert ?

 

définition defonction inattendue - probablement des parenthèses manquantes ou supplémentaires dans le code AVANT la fonction Fun_New_Bar,

Examinez attentivement le code et vous trouverez probablement le problème.

 
keekkenen писал(а) >>

définition de fonction inattendue - probablement des parenthèses manquantes ou supplémentaires dans le code AVANT la fonction Fun_New_Bar,

Regardez attentivement le code et vous verrez ce qui ne va pas.

Je vais le chercher maintenant. Je vais essayer d'intégrer cette fonction à l'endroit d'où je l'appelle. Deux fonctions présentant une telle erreur ont déjà été copiées sans erreur après avoir été déplacées vers le lieu d'appel. De plus, si la fonction "défectueuse" est déplacée à l'endroit de l'appel, la même erreur passe à l'autre fonction, pas nécessairement la suivante dans l'ordre.

 
alsu >> :

1. Installez QIPInfium si vous ne l'avez pas encore fait.

2. Créez un compte ICQ distinct pour le terminal

3. Installer et configurer le plugin MsgBox - instructions détaillées

À partir de l'Expert Advisor (indicateur, script), qui doit produire des signaux, écrivez des fichiers avec les messages nécessaires dans le dossier OutBox, comme expliqué dans les instructions du lien ci-dessus. Pour écrire dans le fichier en dehors du répertoire du terminal, vous pouvez, par exemple, utiliser la bibliothèque ZI_File_Functions_Full_Lib


C'est ainsi qu'avec un peu de google et un peu de créativité, vous pouvez faire tout ce que vous voulez en quatre étapes avec un minimum de programmation : )))).

Merci, ça marche :)

 

Lors de l'exécution de l'EA en mode démo, la fenêtre de confirmation des ordres continue de s'afficher, comme dans le cas du trading manuel. Cette fonction a été annulée dans les options, mais elle est toujours retenue quelque part.

Y a-t-il un moyen d'annuler la fenêtre de confirmation ?

 
Andrei01 >> :

Lors de l'exécution de l'EA en mode démo, la fenêtre de confirmation des ordres continue de s'afficher, comme dans le cas du trading manuel. Les options ont annulé cette fonction, mais elle est toujours retenue quelque part.

Y a-t-il un moyen d'annuler cette fenêtre de confirmation ?


paramètres_Mt service-settings-advisors


paramètres_experts

 

merci. c'est exactement ce qui ne fonctionne pas car c'est écrit quelque part dans le profil et il n'est pas possible de l'annuler. le problème a été résolu en recréant le profil.