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

 
Pouvez-vous enseigner comment ouvrir et fermer une transaction dans MT4 à partir du marché et des ordres en attente?
 

Bonjour chers programmateurs ! !!
Je suis en train de faire un compteur de tics pour la bougie, et quelque chose a mal tourné ! Je veux qu'il compte les ticks quand le prix ne fait que monter, mais il compte quand il monte et quand il descend (tous les ticks, et je ne veux que des ticks croissants) Regardez plz...

double CountTickBUY()
{

double old_price;
double delta_cur; 
double price = 0;
double old_open_price = 0;

for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
         if(OrderSymbol() == _Symbol && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
           {
           old_price = iClose(NULL, 0 , i);
           price = iOpen(NULL, 0 , i);

           delta_cur = old_price > price;
           if(delta_cur > 0) 
             {
             count_plusbuy++;
             }
           }
   }
   return(count_plusbuy);
}
 
sviter-pro:

Bonjour chers programmateurs ! !!
Je suis en train de faire un compteur de ticks pour le chandelier et j'ai dû me tromper ! Je veux qu'il compte les ticks quand le prix ne fait que monter, mais il compte quand il monte et quand il descend (tous les ticks, et je ne veux que des ticks croissants) Regardez plz...

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}
 
Konstantin Nikitin:

Merci beaucoup !

 

Konstantin Nikitin: Считает тики на кождой свече хорошо, но по 2 раза! Тоесть если отсчет пошел от 1.00000 и дошел до 1.00100 он 100 пунктов щитает, потом когда спустилась цена до 1.00080 он ждет и не считает, но когда цена опять начинает расти от 1.00080 то опять начинает считать пункты, а надо что бы ждал до 1.00100 и от нее считал дальше!!!

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}



 

Veuillez expliquer ce que la fonction"IsTradeAllowed" vérifie exactement lorsque sa deuxième forme est appelée.

Je sais que le premier formulaire vérifie si le trading automatique est autorisé et si le flux de transactions est libre. Qu'en est-il de la deuxième forme ? Quels sont exactement les contrôles qui ont lieu lorsque le deuxième formulaire est appelé ?

 
Asa saas:

Veuillez expliquer ce que la fonction"IsTradeAllowed" vérifie exactement lorsque sa deuxième forme est appelée.

Je sais que le premier formulaire vérifie si le commerce automatique est autorisé et s'il existe un flux de commerce libre. Qu'en est-il de la deuxième forme ? Quels sont exactement les contrôles qui se produisent lorsque le deuxième formulaire est appelé ?

Le second formulaire renvoie des informations sur la possibilité de négocier pour un symbole donné à un moment donné.


Si le flux commercial est libre isTradeContextBusy

 
Alekseu Fedotov:

La deuxième forme de l'appel renvoie des informations sur la possibilité de négocier pour un symbole donné à un moment précis.


Si le flux commercial est libre isTradeContextBusy

La première forme de la fonction "IsTradeAllowed" ne vérifie-t-elle pas également si le fil de discussion est libre ou non ?

J'utilise simplement la deuxième forme de la fonction "IsTradeAllowed" pour savoir si le marché est ouvert avant d'exécuter les ordres.

Cependant, je ne comprends pas bien si je dois utiliser une fonction distincte pour vérifier si un flux libre comme "IsTradeContextBusy" est disponible ou si la deuxième forme de "IsTradeAllowed" effectue déjà cette vérification.

 
Asa saas:

La première forme de "IsTradeAllowed" ne vérifie-t-elle pas également si le flux commercial est libre ou non ?

J'utilise simplement la deuxième forme de la fonction "IsTradeAllowed" pour savoir si le marché est ouvert avant d'exécuter les ordres.

Cependant, je ne suis pas tout à fait sûr si je dois utiliser une fonction séparément pour vérifier si un flux libre comme "IsTradeContextBusy" est disponible ou si la deuxième forme de "IsTradeAllowed" fait déjà cette vérification.

1. Non

2. Non, il ne permet pas de négocier en utilisant des conseillers experts, mais il peut le faire manuellement.

3. nécessité d'utiliser une autre fonction pour vérifier le flux commercial ("IsTradeContextBusy()")

 
Asa saas:

Le premier formulaire "IsTradeAllowed" ne vérifie-t-il pas également si le flux commercial est libre ou non ?

Oui, c'est vrai. C'est du moins ce qui est indiqué dans la documentation. Je ne sais pas moi-même pourquoi on le fait, mais le fait reste le même :

Возвращаемое значение

Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.

J'utilise simplement la deuxième forme de la fonction "IsTradeAllowed" pour savoir si le marché est ouvert avant d'exécuter les ordres.

Cependant, je ne suis pas tout à fait sûr si la fonction permettant de vérifier si le flux libre est disponible comme "IsTradeContextBusy" doit être utilisée séparément ou si la deuxième forme "IsTradeAllowed" effectue déjà cette vérification.

Mais ce n'est pas clair avec la deuxième forme. Il est responsable du temps dans le futur ou dans le passé.

Raison: