aidez-moi avec le code - page 3

 
mohsin360:

et veuillez corriger ses erreurs ou me donner quelques conseils


"mohsin360", le compilateur vous dit ce qui ne va pas. Pourquoi ne lisez-vous pas le rapport d'erreur et ne faites-vous pas le suivi ?

S'il est indiqué que vous avez une variable qui n'a pas été définie, définissez-la afin qu'elle ne provoque pas d'erreur.

S'il est indiqué que vous avez une parenthèse déséquilibrée ")", cela signifie que vous devez vérifier que vous placez le nombre correct de parenthèses gauche et droite et qu'il en manque probablement une ou plusieurs.

Ce sont des erreurs simples pour quelqu'un qui sait déjà coder un peu.

Si vous ne savez rien de la programmation, alors peut-être devriez-vous consacrer un peu de temps à apprendre les bases de la programmation, à utiliser un compilateur et à corriger les erreurs de syntaxe dans le code en général, avant d'essayer d'écrire un EA ou un indicateur.

Un bon endroit pour commencer est le "MQL4 Book", ici même sur ce site !

Vous pouvez également consulter un livre pour débutants sur la "Programmation C" ou des tutoriels en ligne sur le "C" pour débutants. Cela vous permettra de commencer à comprendre les bases et ensuite vous pourrez continuer avec MQL4.

 

oui j'ai lu le rapport d'erreur et il contient la première et la deuxième erreur de huit chiffres à cause de mon code de début de trailing et je viens de savoir que alpari ou mt4 ne permet pas un trailing minimum de 30 pips donc j'ai décidé de changer le code un peu et d'utiliser le code de modification d'ordre direct au lieu du code de début de trailing. merci à tous d'avoir coopéré avec moi autant. ne soyez pas si détendu, je demanderai à nouveau si j'ai besoin d'aide après avoir fait et compilé les nouveaux changements.

Salutations

Mohsin.meo

 
Merci encore à WHRoeder
 

mon meta editor montre quelques erreurs, la première est (145,51) quand je cherche dans la liste des erreurs, je trouve le 145 disant que :[Modification refusée car l'ordre est trop proche du marché.] et c'est vrai parce qu'à cette ligne j'ai entré le code pour modifier l'ordre en plus de seulement 5 pips mais quand je cherche d'autres erreurs comme (153,62),(158,8),(164,8),(170,55),(180,60)et (185,8).je ne trouve aucun numéro d'erreur listé dans la liste voici la liste où j'ai trouvé la signification de certains et pas d'autres.S'il vous plaît, est-ce que quelqu'un peut me dire quelle est la signification de ces erreurs et où je peux trouver des significations car j'ai cherché "unexpected token" et j'ai trouvé que cela ne se produit que lorsqu'il y a un problème avec la syntaxe du code mais comme vous pouvez le voir, j'ai deux erreurs en haut qui disent que le nombre de paramètres est erroné @(145,51) et (153,62) et seulement 145 est listé dans l'index mais 153,62 n'est pas Y.

 
//+------------------------------------------------------------------+
//|                                                 every tick20.mq4 |
//|                                                    mohsin mewati |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "mohsin mewati"
#property link      ""

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
 
int init()
  {
//----
   int order_open_time_buy =0;//intiger to save buy open Time
   int order_open_time_sell =0;//intiger to save sell open Time
   bool err_close_all_orders =0;//bolean to save get last error for close all opened orders code
   
   bool err_sell=0;
   bool err_buy=0;
   bool err_selection_buy=0;
   bool err_selection_sell=0;
   bool buy_modified=0;
   bool sell_modified=0;
   double mf_buy=0;
   double mf_sell=0;
   int buy_trail=0;
 
   int err_trail_buy=0;
   int err_modify_sell=0;
   int buy_selection=0;
   bool buy_open_price=0;
   int sell_selection=0;
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

//----
 
  int start()
  {
  
   bool err_buy;
   int buy_ticket;
   bool err_sell;
   int sell_ticket;
   bool err_selection_buy;
   int buy_selection;
   double buy_open_price;
   bool err_selection_sell;
   int sell_selection;
   bool err_mf_buy;
   bool srr_mf_sell;
   bool err_mf_sell;
   bool err_trail_buy;
   bool err_modify_sell;
   bool buy_modified;
   bool err_trail_sell;
   bool err_modify_buy;
   int buy_trail=0;
   int sell_trail=0;
   string buy="open";
   string sell="open";
   int bp=20;
   int sp=20;
   double buy_ans;
   double sell_ans;
   double slbuy;
   double slsell;
   double tp_sell;
   double tp_buy;
   
 
  //coding starts
  
  
  while(err_buy==0){//for loop started to execute a buy Order
  
   buy_ticket=OrderSend("GBPUSD",OP_BUY,1,Ask,3,Ask+20*Point,0,Green); //code to execute a buy (buy order placed without SL but with a TP of 20 pips
  err_buy=GetLastError();//code to check either buy is executed or not?
  
 }//for loop end
  while(err_sell==0){//for loop to place a sell order
    sell_ticket = OrderSend("GBPUSD",OP_SELL,1,Ask,3,Ask-20*Point,0,Red);//code to place a sell ,order placed without SL but with a TP of 20 pips
   err_sell=GetLastError();//code to check either sell is placed or not?
   }//for loop ends
   Alert("buy/sell executed");
   
   //__________________________________________________________________________________________________________________________________
   
   while(err_selection_buy==0){// for loop start to selection of first executed order for further procedure
   buy_selection=OrderSelect("Buy_ticket",SELECT_BY_TICKET);//order select and stored in intiger
   err_selection_buy=GetLastError();//code to check eithet order is selected or not
   }//for loop ends
   
   
   
  buy_open_price=OrderOpenPrice();//taking open price for the first selected order
  buy_ans=buy_open_price;
   
   
   
    while(err_selection_sell==0){// for loop start to selection of second executed order for further procedure
   sell_selection=OrderSelect("Sell_ticket",SELECT_BY_TICKET);//order select and stored in intiger
   err_selection_sell=GetLastError();//code to check eithet order is selected or not
   }//for loop ends
   
   
   
double sell_open_price=OrderOpenPrice();//taking open price for the second selected order
   
 sell_ans=sell_open_price;
   
   
   
   while("buy_trail==0" && "Sell_trail==0"){// while loop started to check if thow of them or one is true
      
      while ("err_mf_buy==0" &&  "err_mf_sell==0"){//while loop start to take price quote every time for buy and sell
        double mf_buy=MarketInfo("GBPUSD",MODE_POINT);//code to store markeet info in integer mf_buy
        err_mf_buy=GetLastError();//code to confirm the previous line of code executed? 
       double mf_sell=MarketInfo("GBPUSD",MODE_POINT);//code to store markeet info in integer mf_sell
        err_mf_sell=GetLastError();//code to confirm the previous line of code executed? 
       }
       
       if (mf_buy==slbuy){
        buy="closed";}
       
       else{
       if( mf_sell==slsell){
     
       sell="closed";}
       else{}
       }
       
       
       if("mf_buy-bp == buy_ans" && "Buy==open"){//if condition to compare if current markeet quote which stored in mf_buy is 20 times greater than the open price of buy Order?
       
       
       while(err_trail_buy==0){//if above condition true for loop started to start trailing on buy order.
       OrderModify(buy_ticket,buy_open_price,slbuy);
             bp="(bp+5)";
        err_trail_buy=GetLastError();//code to confirm the previous line of code executed? 
        }
        
        if(bp>=30){
        tp_sell=0.00005;
        while(err_modify_sell==0){//if buy is in profit for 20 pips and trailing stop started on it i want my sell to modify for take profit for just 5 pips.
       OrderModify(sell_ticket,sell_open_price,slsell,tp_sell);
       err_modify_sell=GetLastError();//code to confirm the previous line of code executed? 
       buy_trail=1;//intiger use to remember that the buy was in profit and all the cooding associated with it was executed there is no need to check .
       }
       }
       else{
     
       }
       
       
       
       else if ("mf_sell+sp"<="Sell_ans" && "Sell"=="open"){//another logical test to check if buy was not in 20 pips if our sell is in 20 pips profit if so then in the next for loop statrted
       
       
       
       
       while(err_trail_sell==0){//for loop start to modify sell for trail
        OrderModify(sell_ticket,sell_open_price,slsell);
       sp="(sp+5)";
       
        err_trail_sell=GetLastError();//code to confirm the previous line of code executed? 
        }
        
        if(sp>=30){
        tp_buy=0.00005;
        
       while(err_modify_buy==0){//if our sell is in 20 pips profit and trailing executed on it while loop start to modify buy for tp for just 5 pips 
         OrderModify(buy_ticket,buy_open_price,slbuy,tp_buy);
          err_modify_buy=GetLastError();//code to confirm the previous line of code executed? 
         sell_trail=1;//intiger use to remember that the sell was in profit and all the cooding associated with it was executed there is no need to check .
         }
       }
       else{
       }
       
       }
       
       
   }

 
   
   
  }
  double ab=AccountBalance();
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
voici le code
 
mohsin360:

mon meta editor montre quelques erreurs, la première est (145,51) quand je cherche dans la liste des erreurs, je trouve le 145 disant que :[Modification refusée car l'ordre est trop proche du marché.] et c'est vrai parce qu'à cette ligne j'ai entré le code pour modifier l'ordre en plus de seulement 5 pips mais quand je cherche d'autres erreurs comme (153,62),(158,8),(164,8),(170,55),(180,60)et (185,8).je ne trouve aucun numéro d'erreur listé dans la liste voici la liste où j'ai trouvé la signification de certains et pas d'autres.S'il vous plaît, est-ce que quelqu'un peut me dire quelle est la signification de ces erreurs et où je peux trouver des significations parce que j'ai cherché "unexpected token" et j'ai trouvé que cela ne se produit que lorsqu'il y a un problème avec la syntaxe du code mais comme vous pouvez le voir, j'ai deux erreurs en haut qui disent que le nombre de paramètres est faux @(145,51) et (153,62) et seulement 145 est listé dans l'index mais 153,62 n'est pas Y

145 est le numéro de la ligne et non le numéro de l'erreur . . . 51 est le numéro de la colonne de caractères. Ce sont des erreurs de codage et non des erreurs d'exécution... réparez vos accolades.

C'est une erreur...

buy_selection = OrderSelect(  "Buy_ticket",   SELECT_BY_TICKET);

OrderSelect() le premier paramètre doit être un int et non une chaîne, lisez la documentation.

Même chose ici. . .

sell_selection = OrderSelect(   "Sell_ticket",  SELECT_BY_TICKET);//order select and stored in intiger


Ce sont des chaînes et elles ne fonctionneront pas...

 while "buy_trail==0"   && "Sell_trail==0"    ){// while loop started to check if thow of them or one is true

Même chose ici. . .

 while  "err_mf_buy==0" &&  "err_mf_sell==0"   ){//while loop start to take price quote every time for buy and sell
 

J'ai déjà déclaré Buy_ticket comme un entier contenant la valeur du ticket reçu du serveur à la fin de la commande Buy et de même pour sell.

Si vous dites que le premier paramètre d'orderselect doit être un nombre, alors comment j'ai obtenu le nombre, évidemment je l'ai d'abord stocké dans un entier et ensuite j'ai appelé cet entier et c'est ce que je fais.

?

 
mohsin360:

J'ai déjà déclaré Buy_ticket comme un entier contenant la valeur du ticket reçu du serveur à la fin de la commande Buy et de même pour sell.

Si vous dites que le premier paramètre d'orderselect doit être un nombre, alors comment j'ai obtenu le nombre, évidemment je l'ai d'abord stocké dans un entier et ensuite j'ai appelé cet entier et c'est ce que je fais.

?

Ceci est un entier...

int Buy_ticket;

Buy_ticket = 10;

Ceci est une chaîne de caractères

"Buy_ticket"
 

si vous parlez de "" ?

J'ai supprimé ces éléments et le métaéditeur demande des variables prédéfinies et affiche une erreur "variable non définie".

buy_ticket

ticket_vendeur

maintenant j'ai fixé ces doubles virgules et j'ai seulement deux erreurs

Voici le code

//+------------------------------------------------------------------+
//|                                                 every tick20.mq4 |
//|                                                    mohsin mewati |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "mohsin mewati"
#property link      ""

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
 
int init()
  {
//----
   int order_open_time_buy =0;//intiger to save buy open Time
   int order_open_time_sell =0;//intiger to save sell open Time
   bool err_close_all_orders =0;//bolean to save get last error for close all opened orders code
   
   bool err_sell=0;
   bool err_buy=0;
   bool err_selection_buy=0;
   bool err_selection_sell=0;
   bool buy_modified=0;
   bool sell_modified=0;
   double mf_buy=0;
   double mf_sell=0;
   int buy_trail=0;
 
   int err_trail_buy=0;
   int err_modify_sell=0;
   int buy_selection=0;
   bool buy_open_price=0;
   int sell_selection=0;
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

//----
 
  int start()
  {
  
   bool err_buy;
   int buy_ticket;
   bool err_sell;
   int sell_ticket;
   bool err_selection_buy;
   int buy_selection;
   double buy_open_price;
   bool err_selection_sell;
   int sell_selection;
   bool err_mf_buy;
   bool srr_mf_sell;
   bool err_mf_sell;
   bool err_trail_buy;
   bool err_modify_sell;
   bool buy_modified;
   bool err_trail_sell;
   bool err_modify_buy;
   int buy_trail=0;
   int sell_trail=0;
   string buy;
   string sell;
   int bp=20;
   int sp=20;
   double buy_ans;
   double sell_ans;
   double slbuy;
   double slsell;
   double tp_sell;
   double tp_buy;
   
 
  //coding starts
  
  
  while(err_buy==0){//for loop started to execute a buy Order
  
   buy_ticket=OrderSend("GBPUSD",OP_BUY,1,Ask,3,Ask+20*Point,0,Green); //code to execute a buy (buy order placed without SL but with a TP of 20 pips
  err_buy=GetLastError();//code to check either buy is executed or not?
  
 }//for loop end
  while(err_sell==0){//for loop to place a sell order
    sell_ticket = OrderSend("GBPUSD",OP_SELL,1,Ask,3,Ask-20*Point,0,Red);//code to place a sell ,order placed without SL but with a TP of 20 pips
   err_sell=GetLastError();//code to check either sell is placed or not?
   }//for loop ends
   Alert("buy/sell executed");
   
   //__________________________________________________________________________________________________________________________________
   
   while(err_selection_buy==0){// for loop start to selection of first executed order for further procedure
   buy_selection=OrderSelect(Buy_ticket,SELECT_BY_TICKET);//order select and stored in intiger
   err_selection_buy=GetLastError();//code to check eithet order is selected or not
   }//for loop ends
   
   
   
  buy_open_price=OrderOpenPrice();//taking open price for the first selected order
  buy_ans=buy_open_price;
   
   
   
    while(err_selection_sell==0){// for loop start to selection of second executed order for further procedure
   sell_selection=OrderSelect(Sell_ticket,SELECT_BY_TICKET);//order select and stored in intiger
   err_selection_sell=GetLastError();//code to check eithet order is selected or not
   }//for loop ends
   
   
   
double sell_open_price=OrderOpenPrice();//taking open price for the second selected order
   
 sell_ans=sell_open_price;
   
   
   
   while("buy_trail"==0 &&  "Sell_trail"==0){// while loop started to check if thow of them or one is true
      
      while (err_mf_buy==0 &&  err_mf_sell==0){//while loop start to take price quote every time for buy and sell
        double mf_buy=MarketInfo("GBPUSD",MODE_POINT);//code to store markeet info in integer mf_buy
        err_mf_buy=GetLastError();//code to confirm the previous line of code executed? 
       double mf_sell=MarketInfo("GBPUSD",MODE_POINT);//code to store markeet info in integer mf_sell
        err_mf_sell=GetLastError();//code to confirm the previous line of code executed? 
       }
       
       if (mf_buy==slbuy){
        buy="closed";}
       
       else{
       if( mf_sell==slsell){
     
       sell="closed";}
       else{}
       }
       
       
       if(mf_buy-bp == buy_ans && "Buy"=="open"){//if condition to compare if current markeet quote which stored in mf_buy is 20 times greater than the open price of buy Order?
       
       
       while(err_trail_buy==0){//if above condition true for loop started to start trailing on buy order.
       OrderModify(buy_ticket,buy_open_price,slbuy);
             bp="(bp+5)";
        err_trail_buy=GetLastError();//code to confirm the previous line of code executed? 
        }
        
        if(bp>=30){
        tp_sell=0.00005;
        while(err_modify_sell==0){//if buy is in profit for 20 pips and trailing stop started on it i want my sell to modify for take profit for just 5 pips.
       OrderModify(sell_ticket,sell_open_price,slsell,tp_sell);
       err_modify_sell=GetLastError();//code to confirm the previous line of code executed? 
       buy_trail=1;//intiger use to remember that the buy was in profit and all the cooding associated with it was executed there is no need to check .
       }
       }
       else{
     
       }
       
       
       
       else if ("mf_sell"+"sp"<="Sell_ans" && "Sell"=="open"){//another logical test to check if buy was not in 20 pips if our sell is in 20 pips profit if so then in the next for loop statrted
       
       
       
       
       while(err_trail_sell==0){//for loop start to modify sell for trail
        OrderModify(sell_ticket,sell_open_price,slsell);
       sp="(sp+5)";
       
        err_trail_sell=GetLastError();//code to confirm the previous line of code executed? 
        }
        
        if(sp>=30){
        tp_buy=0.00005;
        
       while(err_modify_buy==0){//if our sell is in 20 pips profit and trailing executed on it while loop start to modify buy for tp for just 5 pips 
         OrderModify(buy_ticket,buy_open_price,slbuy,tp_buy);
          err_modify_buy=GetLastError();//code to confirm the previous line of code executed? 
         sell_trail=1;//intiger use to remember that the sell was in profit and all the cooding associated with it was executed there is no need to check .
         }
       }
       else{
       }
       
       }
       
       
   }

 
   
   
  }
  double ab=AccountBalance();
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
 
mohsin360:

si vous parlez de "" ?

J'ai supprimé ces éléments et le métaéditeur demande des variables prédéfinies et affiche une erreur "variable non définie".

buy_ticket

ticket_vendeur

maintenant j'ai fixé ces doubles virgules et j'ai seulement deux erreurs

Voici le code


buy_ticket n'est pas le même que Buy_ticket

Vous avez encore beaucoup d'autres erreurs . . .

OrderModify() (veuillez lire la documentation) prend au moins 5 paramètres . . .

OrderModify(buy_ticket, buy_open_price, slbuy);

... pas trois. la couleur est optionnelle....

Quoi d'autre ?

       else{
     
       }