Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 217

 
Valerius:


Essayez de rafraîchir les citations. Service - Quote Archive - sélectionnez votre paire de devises - téléchargez.

Si cela n'aide pas, réinstallez le metatrader.


J'ai essayé de réinstaller plusieurs fois et même d'ouvrir un nouveau compte..... Cela n'a pas fonctionné. A quoi cela peut-il être lié ?

Merci.

 
sidovi:


J'ai essayé de réinstaller plusieurs fois et même d'ouvrir un nouveau compte..... Ça n'a pas marché. A quoi cela peut-il être lié ?

Merci.


Avez-vous supprimé tous les fichiers du dossier d'installation de MetaTrader avant l'installation ?

Et avez-vous essayé avec l'archive des citations ?

 
a196012a:

Tous les ordres plus importants ne seront ouverts qu'avec un volume de 0,3 lot. Tous les ordres de plus petit volume qui sont ouverts en réponse à une clôture sur le SL dans le volume de 0,3 lot s'ouvriront dans le volume de 0,1 lot. Seulement 0,1 et 0,3. Il n'y a pas d'autres volumes.

Lors de la clôture d'un ordre de 0,3 lot par le SL, veuillez vous rappeler l'heure à laquelle l'ordre a été ouvert en réponse à la clôture de laquelle il a été ouvert (c'est-à-dire un ordre de 0,1 lot).

Merci pour votre aide.

Pourriez-vous me dire s'il vous plaît où mettre l'option pour envoyer un message à mon e-mail quand il y a une réponse à mon message.

Merci encore beaucoup.


Et en fait, de quoi avez-vous besoin, d'un algorithme ou de la fonction écrite elle-même ?
 
a196012a:

Merci pour vos commentaires.

J'ai besoin de l'algorithme ou de la fonction.

L'essentiel est que le code se souvienne de la valeur de l'heure après la clôture d'un ordre SL de 0,3.

Je ne sais pas comment coder exactement cette action.

Si un ordre avec un volume de 0,3 a clôturé sur le SL

{
A2= valeur de l'heure à laquelle l'ordre d'un plus petit volume a été ouvert en réponse à la clôture de laquelle il a été ouvert
}

===================================================================================================

Si plusieurs ordres avec un volume de 0.1 ont clôturé à SL sur SINGLE TICK

{

ouvrir un ordre séparé de 0.3 volume au prix de clôture de l'ordre fermé de TOUS

}

===================================================================================================

Si plusieurs ordres avec un volume de 0,3 ont clôturé sur un SL en UN TIKE

{

retenir la valeur de l'heure d'ouverture de TOUS les ordres concernés par le volume 0.1

}

J'ai écrit un code fonctionnel pour ouvrir et fermer les ordres (voir le premier message).

Je ne suis pas sûr du code à y inclure pour gagner 0,1 temps d'ouverture de commande.

Je ne sais pas comment coder l'ouverture des ordres et retenir la valeur de l'heure d'ouverture dans le cas où plusieurs ordres sont fermés sur un tick.

Si, dans le cadre de la réalisation de mon idée, vous devez changer le code que j'ai écrit, cela ne me dérange pas que vous le changiez.

LE BUT FINAL DE MON PROGRAMME EST DE MÉMORISER LA VALEUR DE L'HEURE D'OUVERTURE. Toutes les autres opérations (y compris les ordres d'ouverture) sont subordonnées à cet objectif final et ont un caractère auxiliaire.

Si je savais comment m'en passer, je ne les aurais pas inclus dans le code.

Merci encore.


Voici un exemple de programme. Veuillez y jeter un coup d'œil. Il y a des commentaires là-dedans.

extern int MagicNumber=123;

datetime time;
//=================================================================
void start()
{
int er,se;

if(prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
            //то просто возвращается нулевое значение
            //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
  if(se==1)
   {
    if(OrderType()==OP_BUY && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
  if(se==2)
   {
    if(OrderType()==OP_SELL && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
 }

return;
}

//========================
bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            return(false); // есть открытые ордера (любые)
           }
         }
      }
   }
return(true);
}

//=================================================================
datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
          if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
         }
      }
   }
return(NULL);
}

//=================================================================
int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderProfit()>0)
           {//Если  закрылся по профиту то просто ухоим из цикла.
              return(0);
           }
          if(OrderType()==OP_SELL && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(2);
           }
          if(OrderType()==OP_BUY && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(1);
           }
         }
      }
   }
return(0);
}
 
Valerius:


Avez-vous supprimé tous les fichiers dans le dossier où Metatrader est installé avant l'installation ?

Et avez-vous essayé avec l'archive des citations ?


Oui, 0 résultat :((
 
sidovi:

Oui, 0 résultat :((


Vous devez alors contacter votre DC pour obtenir de l'aide...

C'est la première fois que je vois ça.

 
Valerius:


Ensuite, il suffit de contacter votre DC pour obtenir un soutien...

C'est la première fois que je vois ça.


Pensez-vous qu'il y a un service dans Windows 10 qui affecte cela ?
 
sidovi:

Pensez-vous qu'il y a un service dans Windows 10 qui affecte cela ?

Non. Il n'y en a pas.
 
Victor Nikolaev:

Non. Il n'y en a pas.

Merci.
 
a196012a:

Merci beaucoup pour votre aide

Je suis juste en train d'apprendre les bases de la programmation à partir du tutoriel de Kovalev et des fonctions qui y sont décrites.

J'ai rencontré certaines fonctions dans votre code, que je n'ai pas vues dans mes livres ou dans Code Base

Voici les fonctions que je ne connais pas

sear() ;

SearTim(se) ;

prov_open_orders()

Je vous serais très reconnaissant si vous me disiez où je peux lire à leur sujet.

Dans ce code même.
Raison: