Questions des débutants MQL4 MT4 MetaTrader 4 - page 2

 
Vladimir Karputov:

Comme vous l'avez suggéré, le compilateur jure.

{
   Ticket=OrderSend(NULL,OP_BUY,Lot,Ask,slippage,0,0,NULL,magic,0,Blue);
   if(!Ticket>0)Print(GetLastError());
   else
   {
    if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
    if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
    {
     TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);
     bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),TP,0,0);
      return;
    }
   }

Ça ne marche pas.

 
Nickolay72:

Comme vous l'avez suggéré, le compilateur jure.

{
   Ticket=OrderSend(NULL,OP_BUY,Lot,Ask,slippage,0,0,NULL,magic,0,Blue);
   if(!Ticket>0)Print(GetLastError());
   else
   {
    if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
    if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
    {
     TP=NormalizeDouble(Bid+TakeProfit*Point,Digits);
     bool modify=OrderModify(OrderTicket(),OrderOpenPrice(),TP,0,0);
      return;
    }
   }

Ça ne marche pas.

Voici votre code :

si(! Ticket>0)Print(GetLastError())--- Le ticket est un nombre entier, par exemple "2354865". Maintenant une question : un nombre entier ne peut-il pas être ( !2354865) Un nombre entier peut être soit supérieur à "> 0", soit inférieur à "< 0" . Cette valeur bool peut être false/true ( ! )

En outre, cette construction :if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)==true) --- elle énumère les paramètres par ticket, et si vous visualisez un ticket concret, cela n'a aucun sens de vérifier son numéro magique ou son symbole, c'est-à-dire que c'est évidemment inutile :if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))

Enfin, il est préférable de mettre ces constructions entre parenthèses pour spécifier explicitement l'ordre des tâches mathématiques :NormalizeDouble(Bid+( TakeProfit*Point),Digits);
 
Vitaly Muzichenko:


Enfin, il est préférable de mettre entre parenthèses de telles constructions pour spécifier explicitement l'ordre des tâches matricielles :NormalizeDouble(Bid+( TakeProfit*Point),Digits);

Non, vous pouvez le faire sans crochets. Mais lorsque la somme doit être multipliée, des parenthèses sont nécessaires.

 
poman:

peut prendre la valeur du temps d'ouverture de la barre 0 avec la période D1, + ajouter le nombre de secondes,

dans la condition de comparer l'heure actuelle avec l'heure obtenue dans la première ligne

dans un ordre en attente il est possible de mettre un nombre de secondes, temps de vie de l'ordre.

Data_1=iTime(Symbol(),PERIOD_D1,0)+86400;  //время жизни ордера


Merci pour le conseil ! Cela m'a aidé)
 

Aide avec le code, l'EA passe par toutes les barres, comment faire pour qu'il passe par les 200 dernières barres ! Merci

int  i, k=iBars(Symbol(), 0);
for (i=1; i<k; i++)
 

Signal du fournisseur

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Questions des débutants

Provider_Signal, 2016.11.09 18:38

Comment fermer tous les ordres dans l'EA le vendredi soir ? Afin de ne pas le laisser pour le week-end.

Trouvé la fonction DayOfWeek().

Je peux faire un chèque

if (DayOfWeek() == 5)
{
//
}

Mais quel genre de chèque devons-nous faire pour le temps. Par exemple, s'il était 22 heures ?


 
Vladimir Karputov:

Signal du fournisseur

Mais quel genre de chèque écrire pour l'époque. Par exemple, qu'en serait-il à 22 heures ?
extern int St_Hour   = 22;

if (Hour()==St_Hour)
 
Aibek Mugiynov:

Aide avec le code, le conseiller passe par toutes les barres, comment faire pour qu'il passe par les 200 dernières barres ! Merci

int  i, k=iBars(Symbol(), 0);
for (i=1; i<k; i++)
for (i=1; i<200; i++)
 

Bonjour, à l'aide.

Si aucun tampon n'est rempli sur trois barres, je remplis le tampon.


     int BarCount=3;
    BER=true;
   for(int il=1;il<=BarCount;il++)
     {
      if(BufferPointUp[il]!= EMPTY_VALUE){BER=false;break;}
     }
     if(BER) BufferPointUp[i]=high[i];

Il se remplit sur toutes les barres, sans distinction.

Mais tout est correct si je fais cela.

if(BufferPointUp[i+1]== EMPTY_VALUE&&BufferPointUp[i+2]== EMPTY_VALUE&&BufferPointUp[i+3]== EMPTY_VALUE)BufferPointUp[i]=high[i];

Comment fairecette vérification dans une boucle ?

 
mila.com:
extern int St_Hour   = 22;

if (Hour()==St_Hour)
Merci.