ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests
Répondre • Page 1 sur 1

MQL4 problème syntaxe!!

par Se7enRise » 19 févr. 2018 16:08

bonjour à tous, chère trader rentable

je suis nouveau sur le forum,
je cherche a programmer un robot mql4 depuis quelques semaines,
ayant fini de l'écrire je test celui-ci sur Metaeditor et le compile...
Mais ça aurai été trop beau que ca marche du premier coup,
j'ai pas moins de 97 erreurs ... qui dit mieux :lol: :oops:
principalement des erreurs de syntaxe ( j'ai debuté il y a moins de 2 mois dans le MQL4).

Même en cherchant un peu je ne comprend pas la plupart des erreurs.
Si des gens peuvent me corriger ;)
Merci D'avance
Fichiers joints
partie 1
partie 1
ea sevenscalp.jpg (143.21 Kio) Vu 635 fois
partie 2
partie 2
ea sevenscalp1.jpg (53.34 Kio) Vu 635 fois

Re: MQL4 problème syntaxe!!

par Amarantine » 19 févr. 2018 16:26

Bonjour , avant de participer au forum, il faut se présenter dans présentation des membres comme l'exige la nétiquette. Cela permet aux membres de mieux répondre à tes questions en connaissant ton niveau, ton expérience et ton compte sera débloqué.

Re: MQL4 problème syntaxe!!

par Amarantine » 19 févr. 2018 16:27

En attente de présentation.

Re: MQL4 problème syntaxe!!

par Amarantine » 19 févr. 2018 17:24

Présentation faite. :mercichinois:

Re: MQL4 problème syntaxe!!

par BearIsDead » 19 févr. 2018 18:38

J'avais lu "MySQL" au lieu de "MQL"... Donc sorry je :arrow:

Re: MQL4 problème syntaxe!!

par Se7enRise » 19 févr. 2018 18:44

- comment ça du mql5 !??
sinon j'ai bien vu que c'est la catastrophe

Re: MQL4 problème syntaxe!!

par Se7enRise » 19 févr. 2018 19:24

Nan le site mql5 c'est juste l'adresse qui fait partie de l’entête type du template vierge j'imagine,
mon fichier est bien en .mq4
sinon pour le reste
le" ;" je l'avais rectifier juste après l'avoir posté. (je m'en suis rendu compte après dsl)
et pour la variable numérique tu as bien raison, c'est bien ça pour cette ligne.
merci.

Re: MQL4 problème syntaxe!!

par Ano782345 » 19 févr. 2018 20:03

Tu trouveras la doc ici
https://docs.mql4.com

Si tu es débutant tu trouveras surement un code de départ dans https://www.mql5.com/en/code/mt4

Re: MQL4 problème syntaxe!!

par Se7enRise » 19 févr. 2018 23:11

voilà je viens de corriger une bonne partie du programme,
j'en suis maintenant à 45 erreurs,
Je pense que maintenant c'est plus lisible pour vous autres, connaisseurs en la matière.
ce qui m’embête le plus maintenant c'est tout ce que j'ai inscrit dans la fonction start.
si quelqu'un a des idées car j'ai beau cherché j'ai un peu du mal à comprendre.
encore merci pour votre aide.
Fichiers joints
ea correction1.jpg
ea correction1.jpg (99.59 Kio) Vu 594 fois
ea correction2.jpg
ea correction2.jpg (108.09 Kio) Vu 594 fois
ea correction3.jpg
ea correction3.jpg (42.2 Kio) Vu 594 fois

Re: MQL4 problème syntaxe!!

par Se7enRise » 20 févr. 2018 12:39

OK ?je vais voir ça et je reprendrai le programme!
merci quand même.

Re: MQL4 problème syntaxe!!

par Boom » 21 févr. 2018 07:11

Je rejoins -, il y a énormément d’erreurs de syntaxe, tu déclare un Time dans un int, il te manque des ; à certains endroits, les | sont utilisés pourquoi? Si tu veux faire un « ou » c’est ||, certaines variables selon l’endroit dans le programme où elles sont utilisées doivent être déclarées dans le Global, chose dont je pense que tu ignore l’existence vu que tu déclare un extern dans ton ordersend, tu déclare des double pour tes comparaisons critxx alors que le résultat sera forcément booléen (0 ou 1), mais là après c’est plus de l’optimisation de ressources.

Lorsque j’ai commencé le mql, je me suis aidé de ce site https://www.eole-trading.com/wp-content/uploads/2012/03/mql4.pdf et du site donné par Ano782345.

Quelques heures de réflexion et tu t’en sortiras, ça ne sert à rien que l’on te corrige ton code si tu ne sais pas ce que tu fait, c’est comme si tu apprenais une langue et que l’on te disait quoi dire sans que tu connaisse la signification des mots, enfin c’est mon point de vue.

Après recherche sur ces sites, tu te rendras compte très facilement de tes erreurs, et si tu butte toujours sur certaines, reposte ton code, avec la liste des erreurs, qui au passage si tu double clic dessus, t’emmène directement à l’endroit où elle se trouve.

Bon courage

Re: MQL4 problème syntaxe!!

par Se7enRise » 27 févr. 2018 13:33

bonjour, tout le monde
c'est encore moi, après avoir galéré a corriger mon EA j'y suis enfin arrivé!!! j'ai pu le compiler.
mais celui-ci ne marche pas tout a fait comme je voudrais
en fait je voudrais qu'il me passe un trade par bougie a l'ouverture de celle ci, et non pas a chaque tick
j'ai essayé plusieurs fonctions, mais rien à faire
ca ne fonctionne pas!
j'ai essayer de mettre une variable lastone, Current pour qu'il detecte un changement de
bougie mais j'ai du me foirer quelquepart.
si quelqu'un peut m'expliquer parce que je n'y arrive vraiment pas

Code : #

//+------------------------------------------------------------------+
//|                                          SEVEN_SCALP_BUYSTOP.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double lots;
extern double magic;
extern double tp;

//----VARIABLES
double a,b,c;

//--- bougie 2 (a)
double Closea;                      
double Opena;                          

//--- bougie 1 (b)
double Closeb;                         
double Openb;                             

//--- bougie 0 (c)
double Closec;                          
double Openc;                          

double cours;                           
double mbuystop;
 
double low2;                            
double low1;                            
double low0;                             
double sl;
 
int Current;                            
int lastone;                              
 
//----FONCTIONS
 
double coursactuel()
    {double res;
    res = (Bid + Ask)/2.0;
    return(res);
    }
     
double mbuy()
    {double res;
    res = (a+b+c)/3.0;
    return(res);     
    }

int ticket;    
    
    
    
int init()
  {
 
 
   return(0);
  }


int start()
  {  
  
//--- bougie 2 (a)
Closea = iClose (NULL, PERIOD_M5, 2);
Opena  = iOpen (NULL, PERIOD_M5, 2);

//--- bougie 1 (b)
Closeb = iClose (NULL, PERIOD_M5, 1);
Openb = iOpen (NULL, PERIOD_M5, 1);  
 
//--- bougie 0 (c) 
Closec = iClose (NULL, PERIOD_M5, 0);
Openc = iOpen (NULL, PERIOD_M5, 0);  

cours = coursactuel();
mbuystop = mbuy();

low2 = iLow (NULL, PERIOD_M5, 2);
low1 = iLow (NULL, PERIOD_M5, 1);
low0 = iLow (NULL, PERIOD_M5, 0);

Current = TimeMinute (TimeCurrent());
//lastone = TimeCurrent = 0;

//--- bougie 2

/*  if (Closea > Opena)
        a = Closea;
     
  else if(Opena > Closea)
        a = Opena;    */
  a = MathMax(Closea,Opena);
  
//--- bougie 1  
  
/*  if (Closeb > Openb)
        b = Closeb; 
        
  else if (Openb > Closeb)
        b = Openb; */
        
  b = MathMax(Closeb,Openb);
  
//--- bougie 0        
        
/*  if (Closec > Openc)
        c = Closec; 
        
  else if (Openc > Closec)
        c = Openc; */
      
  c= MathMax(Closec,Openc);  
  
//--- determiner sl
/*       if(low0 < low1 && low0 < low2) 
     sl = low0;
    else if(low1 < low0 && low1 < low2)
     sl = low1; 
    else if(low2 < low0 && low2 < low1)
     sl = low2;         
*/        
sl = MathMin(low0, MathMin(low1,low2)); 
 
  
  
  
//--- posez les 2 conditions nécessaire pour déclencher Ordre BUYSTOP
   if(lastone != Time[0] && cours < mbuystop) {
   
      ticket = OrderSend(NULL,OP_BUYSTOP,lots,mbuystop,3,sl,tp,"",magic,PERIOD_M5*3,Blue); 
   }
   return(0);
   
  }

Re: MQL4 problème syntaxe!!

par Boom » 27 févr. 2018 21:03

Salut Se7enRise, content que tu t'en sois sortie :bravo:

Pour éviter qu'un ordre soit ouvert à chaque ticks, appel cette fonction quand tu le souhaite, puis utilise la valeur OpenedOrder (1 pour buy, 2 pour sell) afin de bloquer une nouvelle ouverture tant que le trade ouvert ne soit pas clôt.

Par contre il y a toujours des problèmes dans ton code, je comprend pas trop tes fonctions (ce qu'il y a en copie dessous le texte en est une et comme tu peux le voir n'a absolument pas la même structure que les tiennes), et l'autre gros problème c'est que tout ce qu'il y a après tes /* n'est pas prise en compte donc faut les enlever

Après je pense qu'il faut que tu te repenche sur la doc car il y a encore pas mal d'erreur, et pense à poster le détail des erreurs, c'est plus facile pour les trouver que de lire le code

Code : #

//+------------------------------------------------------------------+
//| Contrôle Ordre                                                   |
//+------------------------------------------------------------------+ 
void CheckTrade() {
    OpenedOrder = 0;
    for(int i= OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS);
      int type   = OrderType();
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol()) 
      {
         switch(type)
         {
            case OP_BUY       : OpenedOrder = 1;
                                break;
            case OP_SELL      : OpenedOrder = 2;
                                break;
         }
      }
   }

Re: MQL4 problème syntaxe!!

par Se7enRise » 27 févr. 2018 21:41

salut Boom
je viens de corriger les erreurs
y'a un truck que comprend pas c'est que ton code je le met avant mon ordersend??
et sinon quelles sont les fonctions que tu ne comprend pas parce que moi j'avais reussi a le compiler
mais bien sur sans aucun effet sur Mt4.

Re: MQL4 problème syntaxe!!

par Boom » 28 févr. 2018 00:49

Le code en lui même tu le met où tu veux c’est selon l’organisation de ton programme.
Ensuite dans le start, tu met Checktrade(); , puis dans les conditions d’ouverture de ton ordre, tu ajoute OpenedOrder == 1 pour bloquer les buy, et == 2 pour bloquer les sell, ou si tu as des conditions communes tu peux mettre == 0.

Pour les fonctions, tu doit les commencer par void le nom que tu lui donne puis (), après tu ouvre les { et tu rentre ta fonction

Re: MQL4 problème syntaxe!!

par Se7enRise » 28 févr. 2018 12:51

bonjour Boom
Je viens de mettre le code que tu m'a dis mais il ya quelques erreurs encore!!

Code : #

//+------------------------------------------------------------------+
//|                                          SEVEN_SCALP_BUYSTOP.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double lots;
extern double magic;
extern double tp;

void CheckTrade();

//----VARIABLES
double a,b,c;

//--- bougie 2 (a)
double Closea;                      
double Opena;                          

//--- bougie 1 (b)
double Closeb;                         
double Openb;                             

//--- bougie 0 (c)
double Closec;                          
double Openc;                          

double cours;                           
double mbuystop;
 
double low2;                            
double low1;                            
double low0;                             
double sl;
 
int Current;                            
int lastone;                              
int OpenenOrder;
//----FONCTIONS
 
double coursactuel()
    {double res;
    res = (Bid + Ask)/2.0;
    return(res);
    }
     
double mbuy()
    {double res;
    res = (a+b+c)/3.0;
    return(res);     
    }


int ticket;    
    
    
    
int init()
  {
 
 
   return(0);
  }

  void CheckTrade() {
    OpenedOrder = 0;
    for(int i= OrdersTotal()-1;i>=0;i--)
    {  
      OrderSelect(i, SELECT_BY_POS);
      int type   = OrderType();
      if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
      {
         switch(type)
         {
            case OP_BUY       : OpenedOrder = 1;
                                break;
            case OP_SELL      : OpenedOrder = 2;
                                break;
         }
      }
   }

  }

int start() 
     {  
  
//--- bougie 2 (a)
Closea = iClose (NULL, PERIOD_M5, 2);
Opena  = iOpen (NULL, PERIOD_M5, 2);

//--- bougie 1 (b)
Closeb = iClose (NULL, PERIOD_M5, 1);
Openb = iOpen (NULL, PERIOD_M5, 1);  
 
//--- bougie 0 (c) 
Closec = iClose (NULL, PERIOD_M5, 0);
Openc = iOpen (NULL, PERIOD_M5, 0);  

cours = coursactuel();
mbuystop = mbuy();

low2 = iLow (NULL, PERIOD_M5, 2);
low1 = iLow (NULL, PERIOD_M5, 1);
low0 = iLow (NULL, PERIOD_M5, 0);

Current = TimeMinute (TimeCurrent());
//lastone = TimeCurrent = 0;

//--- bougie 2

  if (Closea > Opena)
        a = Closea;
     
  else if(Opena > Closea)
        a = Opena;    
  a = MathMax(Closea,Opena);
  
//--- bougie 1  
  
  if (Closeb > Openb)
        b = Closeb; 
        
  else if (Openb > Closeb)
        b = Openb; 
        
  b = MathMax(Closeb,Openb);
  
//--- bougie 0        
        
  if (Closec > Openc)
        c = Closec; 
        
  else if (Openc > Closec)
        c = Openc; 
      
  c= MathMax(Closec,Openc);  
  
//--- determiner sl
       if(low0 < low1 && low0 < low2) 
     sl = low0;
    else if(low1 < low0 && low1 < low2)
     sl = low1; 
    else if(low2 < low0 && low2 < low1)
     sl = low2;         
        
sl = MathMin(low0, MathMin(low1,low2)); 
  
  
//--- posez les 2 conditions nécessaire pour déclencher Ordre BUYSTOP

    if(OpenedOrder == 1; && OpenedOrder == 2;){

    {
     ticket = OrderSend(NULL,OP_BUYSTOP,lots,mbuystop,3,sl,tp,"",magic,PERIOD_M5*3,Blue); 
    }
   return(0);
           
 } 
Fichiers joints

Re: MQL4 problème syntaxe!!

par Se7enRise » 28 févr. 2018 12:54

voici le lien des erreurs
https://www.andlil.com/forum/ressources/image/69681?sid=17c2c0888c51e478d017d9652f998d0d
https://www.andlil.com/forum/ressources/image/69681?sid=17c2c0888c51e478d017d9652f998d0d
https://www.andlil.com/forum/ressources/image/69681?sid=17c2c0888c51e478d017d9652f998d0d
https://www.andlil.com/forum/ressources/image/69681?sid=17c2c0888c51e478d017d9652f998d0d

Re: MQL4 problème syntaxe!!

par Boom » 28 févr. 2018 15:37

Relis mon message.

Enlève le void devant l’appel de la fonction CheckTrade(); et tu la mis dans Global et non Start comme je te l’ai précisé.

Déplace la fonction dans le Start, où tu veux mais dans le Start, sinon elle ne marchera qu’au lancement de ton robot.

Et pour finir, remplace MagicNumber par la variable que tu as mis pour ton nombre magique, je crois que tu as mis number, et corrige la variable int OpenedOrder tu as mis OpenenOrder

Repenche toi sur le manuel, tu fais beaucoup d’erreur basique

Re: MQL4 problème syntaxe!!

par Boom » 28 févr. 2018 21:09

Petite correction, la fonction qui commence par VOID met la en dehors du programme, après le dernier return(0), et enlève aussi les ; lorsque tu met OpenedOrder dans les conditions d'ouverture de ton ordre, et en plus aucun ordre ne sera ouverture puisque tu lui dit d'en ouvrir un si tu as un ordre BUY et un ordre SELL ouvert, et aussi il faut que tu modifie légèrement ce que je t'ai donné comme code puisque tu utilise des BUYSTOP et non des BUY

Re: MQL4 problème syntaxe!!

par Se7enRise » 28 févr. 2018 22:07

ok je corriger ca
et tenter de comprendre.
merci!

Sujets similaires
Recherche dev MQL4
par Amarantine » 18 sept. 2014 11:59 (2 Réponses)
Programmation en MQL4 : récupérer le contenu d'un email/SMS
par oscar » 15 févr. 2017 18:18 (3 Réponses)
Un seul trade par bougie - mql4
par jefsar » 24 mars 2017 11:31 (4 Réponses)
MQL4 - MagicNumber et Trailing Stop
par Gacanga » 04 avr. 2017 12:39 (5 Réponses)
Aide Technique MQL4
par Gacanga » 06 oct. 2017 17:43 (2 Réponses)
Aide mql4, grrr !!
par BilouZ36 » 26 oct. 2017 15:40 (5 Réponses)
Calculer la moyenne mobile du rsi en mql4 dans un indicateur
par JFLB » 09 nov. 2017 12:27 (4 Réponses)
besoin d'aide en mql4
par Philippe56380 » 09 févr. 2019 13:04 (6 Réponses)
HELP mql4 codage Expert Advisor
par Amarantine » 12 avr. 2019 19:39 (1 Réponses)
Backtest MQL4 ultra lent
par Matthieuw31 » 17 avr. 2020 19:07 (2 Réponses)