Questions des débutants MQL5 MT5 MetaTrader 5 - page 98

 

Boris.45:

Yedelkin : Que retourne Time_H1[1][0] ?

Je n'utilise pas cet élément du tableau, car je passe immédiatement à l'algorithme de recherche des fractales sur les 5 dernières barres. Et Time_H1[1][0] est le temps d'ouverture de la barre zéro où les paramètres de cette barre n'ont pas encore été formés.Peut-être que je me trompe, mais d'après ma propre expérience, j'ai constaté que l'utilisation des paramètres d'une barre de zéro pour former des séries chronologiques conduit à leur distorsion.

Ok, laissez-moi clarifier la question :

Si "Time_H1[nomer_instr][i]=Time_buf[i] ;" et "Time_H1[1][1]=2011.01.03 11:00:00", que retourne Time_buf[0] ?

 

Veuillez m'envoyer un lien pour fermer un certain poste (spécifique).


C'est-à-dire qu'à un certain moment, lorsque les conditions pour fermer une position sont remplies, disons BUY, le Conseiller Expert (à ce moment) ferme toute position BUY ouverte. Je suis maintenant confronté à un problème, lorsque je dois fermer une certaine position (spécifique) de l'acheteur.

Par exemple, lorsqu'une position BUY est ouverte, vous pouvez lui donner une désignation spécifique, mais lorsqu'elle est fermée, vous devez spécifier "BUY" comme condition.
 
Lester: Veuillez m'envoyer un lien pour fermer une certaine position (spécifique), c'est-à-dire qu'à un certain moment, lorsque les conditions pour fermer une position sont remplies, disons ACHETER, le conseiller (à ce moment-là) ferme toute position ACHETER ouverte. Je suis maintenant confronté à un problème, lorsque je dois fermer une certaine position (spécifique) de l'acheteur.

Par exemple, lorsque vous ouvrez une position BUY, vous pouvez lui donner une désignation spécifique, mais lorsque vous la fermez, vous devez préciser son "existence".
Et comment fermer "toute position ouverte" ? Essentiellement, chaque position ouverte correspond à un seul symbole. Ainsi, lors de la clôture, vous devez utiliser le nom de ce symbole, au lieu d'attribuer un "symbole spécifique" à la position ouverte.
 
Voici un exemple. Le premier Achat dans le plat, le second Achat pour clôturer la Vente dans le plat et l'Achat dans la tendance. La clôture de l'achat a également lieu pour tous les BAYs ouverts - ce qui n'est pas bon, car la deuxième clôture se réfère uniquement à la tendance.
if(Buy_Condition_1 || Buy_Condition_2)
     { 
       if(Buy_Condition_3 && Buy_Condition_10)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if(Buy_opened)
           {
            Alert("Позиция на покупку имеется");
            return;    // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
         }
      }
 if(Buy_Condition_4 || Buy_Condition_5)
     { 
       if(Buy_Condition_6)
        {
         // есть ли в данный момент открытая позиция на покупку?
  if(Buy_opened)
      {
      Alert("Позиция на покупку во Флэте есть");
      return;    // не добавлять к открытой позиции на покупку
      }   
    if(PositionSelect(_Symbol)==true) // есть открытая позиция
      {
       if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       {
        Alert("Закрываю ордер Sell флэт!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL;// немедленное исполнение
         mrequest.symbol = _Symbol;         // символ
         mrequest.magic = EA_Magic;        // Magic Number
         mrequest.volume = Lot;           // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK;  // тип исполнения ордера - все или ничего
        //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
          Alert("тикет закрытия Sell флэт #:",mresult.order,"!!");
           }
         else
           {
          Alert("Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:",GetLastError());
          return;
           }
         }
       }
   
         mrequest.action = TRADE_ACTION_DEAL;    // немедленное исполнение
         mrequest.symbol = _Symbol;              // символ
         mrequest.magic = EA_Magic;              // Magic Number
         mrequest.volume = Lot;                  // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend(mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {
            Alert("Buy на тренд успешно помещен, тикет ордера #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера Buy тренд не выполнен - код ошибки:",GetLastError());
            return;
           }         
         }
      }
....
...
if(Buy_Close_1 || Buy_Close_2)
     {
      if(Buy_Close_3)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
  }

if(Buy_Close_4 || Buy_Close_5)
        {
         if(PositionSelect(_Symbol)==true) // есть открытая позиция
           {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
                {
           Alert("Закрываю ордер BUY!!!");                  
                                  
         mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
         mrequest.symbol = _Symbol;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend(mrequest,mresult);
         // анализируем код возврата торгового сервера
         if(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
           {            
            Alert("тикет закрытия Buy #:",mresult.order,"!!");
           }
         else
           {
            Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
            return;
           }
        }
      }
    }
 
Lester: Voici un exemple. Le premier Achat dans le plat, le second Achat pour clôturer la Vente dans le plat et l'Achat dans la tendance. Cependant, ce n'est pas bon, car la deuxième clôture est uniquement liée à la tendance.
Vous allez donc fermer différentes "positions" sur un même symbole ?
 
Yedelkin:
Vous allez donc fermer différentes "positions" sur le même symbole ?

Pas vraiment.

Si un achat à plat est ouvert, je ne peux pas fermer une tendance d'achat. Et vice versa.

C'est-à-dire de clôturer certaines positions sur le même symbole - soit un flat (si un flat est ouvert) ou un trend (si un trend est ouvert).

 
Lester: Pas exactement. Si un achat à plat est ouvert, alors je ne peux pas fermer une tendance d'achat. Et vice versa.

Il s'agit de clôturer certaines positions sur un seul symbole - soit un flat (sous réserve de l'ouverture du flat), soit un trend (sous réserve de l'ouverture du trend).

Je vois. Malheureusement, j'ai été induit en erreur par des imprécisions terminologiques et je ne peux pas vous aider davantage. Dans MQL5, il ne peut exister qu'une seule position sur chaque symbole. Les deux positions de type"buy-flat et buy-trend" ne peuvent pas exister sur un seul symbole à la fois. En fait, votre question ne porte pas sur mql5-positions, mais sur le suivi des ordres de transaction que vous avez passés. Si vous cherchez dans les forums, il y a trois ans, il y avait un article sur les "ordres virtuels" pour MT5. Et plus tard, un tel sujet a été soulevé à de nombreuses reprises sur le forum.
 
Yedelkin:

OK, je vais clarifier la question :

Si "Time_H1[nomer_instr][i]=Time_buf[i] ;" et "Time_H1[1][1]=2011.01.03 11:00:00", que retourne Time_buf[0] ?

Je vais essayer d'expliquer l'idée que j'essaie de mettre en œuvre dans l'EA.

Il existe des fonctions standard CopyTime(), CopyOpen(), CopyHigh(), etc., qui utilisent les tableaux correspondants Time_buf[], Open_buf[], High_buf[], etc.

Grâce à ces fonctions, nous pouvons obtenir les données historiques pour différentes échéances et différentes devises. Dans ce cas, Time_buf[0]est l'heure d'ouverture de la barre de zéro,

High_buf[0] est la valeur maximale du prix de la devise spécifiée sur la barre zéro au moment du dernier tick arrivant.

Ensuite, je crée des tableaux bidimensionnels pour chaque période de temps pour chaque paramètre Time, Open, etc. Ensuite, j'ai les tableaux suivants pour le cadre temporel H1

Time_H1[i][j], Open_H1[i][j], High_H1[i][j], etc. Dans ces tableaux, chaque ligne est consacrée aux données historiques d'une certaine devise. Ainsi,

en utilisant la boucle par numéro de devise for( i=1 ; i<=nomer_instr ; i++ ) j'écrase les données historiques Time_buf[j], High_buf[j] etc. avec les lignes correspondantes des tableaux

Time_H1[i][j], High_H1[i][j] etc.

Si vous tradez en utilisant des ticks, vous pouvez utiliser les paramètres actuels de la barre zéro. Naturellement, les paramètres actuels de la barre de zéro au moment du

J'ai un conseiller expert qui utilise des barres au lieu de ticks. J'ai vu que lorsque l'EA fonctionne sur des barres

les valeurs High_buf[0] et Low_buf[0] ne sont pas des valeurs historiques au moment de la fermeture de la barre zéro, ce sont des valeurs aléatoires. Par conséquent, si nous incluons

des paramètres de la barre de zéro dans une séquence historique, toute la séquence historique du paramètre sera déformée. C'est pourquoi je n'utilise pas les paramètres de la barre de zéro.

Désolé que ce soit si long.


 

Boris.45:

Yedelkin : Ok, laissez-moi clarifier ma question : si "Time_H1[nomer_instr][i]=Time_buf[i] ;" et "Time_H1[1][1]=2011.01.03 11:00:00", que retourne Time_buf[0] ?

Je vais essayer d'expliquer l'idée que j'essaie de mettre en œuvre dans mon conseiller expert.

Je ne demandais pas pour l'idée :)

Boris.45: Time_buf[0]- c'est l'heure d'ouverture de la barre de zéro,

C'est ce que je demande, quelle valeur renvoie l'élément du tableau que vous mentionnez ?

 

Veuillez me conseiller !

Comment modifier la couleur d'arrière-plan des paires de devises dans l'aperçu du marché ?

Ou supprimez carrément la couleur !

Merci d'avance !

Raison: