[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 201

 
isaev-av:

Merci. Les chiffres doivent-ils être changés en 4 ou 5 selon le DC ?

Il n'est pas nécessaire de le changer, il suffit de le prendre en fonction de la monnaie. MarketInfo
 
isaev-av:

Merci. Les chiffres doivent-ils être changés en 4 ou 5, selon le DC ?

Laissez les chiffres, ça s'adaptera tout seul.
 
Camarades, en considérant un système très simple... si le MACD reste dans la zone pendant au plus 5 minutes, alors j'ouvre. Pour une raison quelconque, les transactions ne s'ouvrent pas..... Veuillez me conseiller...
//+------------------------------------------------------------------+ 
  //| MACD ^^^.mq4 | 
  //| Copyright © 2011, MetaQuotes Software Corp. | 
  //| http://www.metaquotes.net | 
  //+------------------------------------------------------------------+ 
  #property copyright "Copyright © 2011, MetaQuotes Software Corp." 
  #property link "http://www.metaquotes.net" 

  extern int TP = 100; 
  extern int TS = 100; 
  extern int TF = 1; 
  extern double lots = 0.1; 
  int fast_ema = 5; 
  int slow_ema = 34; 
  int signal_period = 5; 
  int slip = 3; 
  int Magic = 1; 

 int total; 
 int ticket; //объявил тотал и тикет 

 //+------------------------------------------------------------------+ 
  //| expert initialization function | 
  //+------------------------------------------------------------------+ 
  int init() 
    { 
  //---- 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 
  //| expert deinitialization function | 
  //+------------------------------------------------------------------+ 
  int deinit() 
    { 
  //---- 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 
  //| expert start function | 
  //+------------------------------------------------------------------+ 
  int start() 
    { 
  //---- 

 bool signal = signal_MACD(); 
  AnalyzeSignal(signal); 

 //---- 
     return(0); 
    } 
  //+------------------------------------------------------------------+ 

 bool signal_MACD() 
  { 
    bool signal_MACD = false; 
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       } 
    } 
  } 

 void AnalyzeSignal(bool signal) 
  { 
     total = OrdersTotal();
     double MACD = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
     if(total < 1)
     {
     if(signal == true)
     {
         if(MACD > 0)
         {
            ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"Покупаем",Magic,0,Green); 
            if(ticket>0) 
            { 
            OrderSelect(ticket,SELECT_BY_TICKET); 
            Print("открылись на покупку по цене:", OrderOpenPrice()); 
            } 
            else 
            { 
            Print("открыться не удалось по причине:", GetLastError()); 
            return(0); 
            } 
         }
         if(MACD < 0)
         {
             ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"Продаем",Magic,0,Red); 
             if(ticket>0) 
             { 
             OrderSelect(ticket,SELECT_BY_TICKET); 
             Print("открылись на продажу по цене:", OrderOpenPrice()); 
             } 
             else 
             { 
             Print("открыться не удалось по причине:", GetLastError()); 
             return(0); 
             } 
         }
         else
            return(0);
     }
     }
  }
  
  
  
  
  
 
Au secours ! Tout le monde a un exemple d'EA MACD auquel j'essaie d'ajouter le calcul des lots. Après mes modifications, il ne compile pas :( Aidez-nous !
double Lots()
  {
   double Lots;
   Lots=AccountFreeMargin()/10000*5;
   Lots=MathMin(15,MathMax(0.1,Lots));
   if(Lots<0.1) 
     Lots=NormalizeDouble(Lots,2);
   else
     {
     if(Lots<1) Lots=NormalizeDouble(Lots,1);
     else       Lots=NormalizeDouble(Lots,0);
     }
     return(Lots);
  }
 

Bonjour

EA donne une erreur, si ((Bid-OrderOpenPrice(),Digits) >= -60) code 130, donne chaque nouveau tick et charge vraiment le serveur....

si je le change en if ((pBid-NormalizeDouble(OrderOpenPrice(),Digits)) == -60) - cela ne fonctionnera pas...

J'ai besoin exactement de >= et que faire ?

Aidez-moi à résoudre ce problème.

Merci d'avance ! !!

 

Comment puis-je calculer par programme le nombre de paires de devises impliquées dans une transaction ?

J'ai essayé de rechercher les ordres ouverts. J'ai utilisé le conseiller expert sur 3 paires de devises. J'ai eu des résultats différents sur chacun d'eux :

sur le premier - 3 (correct), sur le deuxième - 2, sur le troisième - 1.

Je l'ai essayé sur 2 paires de devises :

sur l'un - 2 (correct), sur le second - 1. Si ce n'était pas pour le modèle de déclin, j'aurais pensé que j'avais fait une erreur.

int val() 
{
   int kp=1;
   string x1="0",x2="0", x3="0", x4="0", x5="0", x6="0", x7="0", x8="0", x9="0", x10="0", x11="0", x12="0", x13="0", x14="0",       x15="0",
          x16="0", x17="0", x18="0",  x19="0",  x20="0",  x21="0",  x22="0", x23="0",  x24="0";
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
     if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
     if(OrderSymbol()==Symbol())   break;
      if(x9!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol()   &&  x7!=OrderSymbol()  &&  x8!=OrderSymbol()   &&  x9!=OrderSymbol() && x10=="0") {x10=OrderSymbol(); kp=11;}      
      if(x8!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol()   &&  x7!=OrderSymbol()  &&  x8!=OrderSymbol() && x9=="0") {x9=OrderSymbol(); kp=10;}      
      if(x7!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol()   &&  x7!=OrderSymbol() && x8=="0") {x8=OrderSymbol(); kp=9;}      
      if(x6!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol()  &&  x6!=OrderSymbol() && x7=="0") {x7=OrderSymbol(); kp=8;}      
      if(x5!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() &&  x5!=OrderSymbol() && x6=="0") {x6=OrderSymbol(); kp=7;}      
      if(x4!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol()  &&  x4!=OrderSymbol() && x5=="0") {x5=OrderSymbol(); kp=6;}      
      if(x3!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() &&  x3!=OrderSymbol() && x4=="0") {x4=OrderSymbol(); kp=5;}      
      if(x2!="0" &&  x1!=OrderSymbol() && x2!=OrderSymbol() && x3=="0") {x3=OrderSymbol(); kp=4;}      
      if(x1!="0" &&  x1!=OrderSymbol() && x2=="0") {x2=OrderSymbol(); kp=3;}      
      if(x1=="0") {x1=OrderSymbol(); kp=2;}
   }
  return(kp);
}
 
skyjet:
Après mes modifications, il ne compile plus :(

Qu'est-ce que ça dit ?
 
Figar0:

Eh bien, qu'est-ce que ça dit ?
12 erreurs, 12 avertissements. Je dois avoir mal saisi le calcul du lot ?
 
forexnew:

Comment puis-je calculer par programme le nombre de paires de devises impliquées dans une transaction ?

J'ai essayé de rechercher les ordres ouverts. J'ai utilisé le conseiller expert sur 3 paires de devises. J'ai eu des résultats différents sur chacun d'eux :

sur le premier - 3 (correct), sur le deuxième - 2, sur le troisième - 1.

Je l'ai essayé sur 2 paires de devises :

sur l'un - 2 (correct), sur le second - 1. Si ce n'était pas pour le modèle de déclin, j'aurais pensé que j'avais fait une erreur.


Ou peut-être simplement faire une liste des instruments actifs avec l'aide d'un EA. L'approche est un peu compliquée. Il y a des façons plus simples de faire les choses, n'est-ce pas ?
 
skyjet:
12 erreurs, 12 avertissements. Je dois avoir mal saisi le calcul du lot ?

Il n'y a pas d'erreurs dans la fonction elle-même, des erreurs se produisent probablement en essayant de l'utiliser, mais vous ne nous le montrez pas. Veuillez poster quelque chose qui ne se compile pas directement dans un fichier et vous n'aurez pas besoin de deviner.