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

 
pivomoe:
Je comprends bien que la méthode Volume de la classe CPositionInfo renvoie le volume correspondant au moment où la méthode Select() a été appelée pour la dernière fois ? C'est-à-dire que vous pouvez trouver le volume qui était il y a un mois pour ce symbole ?
Vous avez tout faux. La méthode Volume de la classe CPositionInfo renvoie le volume d'une position. La position qui a été précédemment sélectionnée par PositionSelect.
 

Vous avez expliqué comment préparer CPositionInfo. Je ne comprends toujours pas deux choses cependant :

1) Comment cette recette découle-t-elle de l'aide de la classe CPositionInfo?

2) Pourquoi avons-nous besoin de la classe elle-même, si vous ne pouvez pas utiliser plus d'un objet normalement, parce qu'avant chaque accès à la propriété position, nous devons configurer la position en utilisant la méthode Select, sinon nous allons soudainement utiliser la méthode Select pour un autre objet CPositionInfo quelque part ailleurs.

 
pivomoe:

Vous avez expliqué comment préparer CPositionInfo. Je ne comprends toujours pas deux choses cependant :

1) Comment cette recette découle-t-elle de l'aide de la classe CPositionInfo?

2) Pourquoi avons-nous besoin de la classe elle-même, si vous ne pouvez pas utiliser plus d'un objet normalement, parce qu'avant chaque accès à la propriété position, nous devons configurer la position en utilisant la méthode Select, sinon nous allons soudainement utiliser la méthode Select pour un autre objet CPositionInfo à un autre endroit.

1). Tout cela est dans l'aide. Avec de la diligence et de l'attention, ainsi qu'un peu d'auto-écriture, cela vous permettra de comprendre.
2). Encore une fois : la classe CPositionInfo n'est pas un coffret qui stocke toutes les données de toutes les positions ; c'est juste un outil pratique pour accéder aux propriétés d'une position.

Et cela a toujours été le cas : d'abord, la position est sélectionnée, puis nous obtenons ses propriétés. Ensuite, le cycle se répète : la position est mise en évidence et ce n'est qu'ensuite que les propriétés de la position sont récupérées.
 

Je ne comprends pas quelle est mon erreur en utilisant l'aide.

1) J'avais besoin du volume de la position dans le programme.

2) En effectuant une recherche, j'ai trouvé la méthode Volume de la classe CPositionInfo.

3) Il s'agit d'utiliser la méthode Select avant d'appeler Volume.

4) Il n'y a aucune référence dans la description de la méthode Select. Par sécurité, j'étudie la description de la classe CPositionInfo.

5) J'écris le code. J'obtiens un résultat qui ne découle pas de la référence.


Où se trouve l'erreur ?

Une fois de plus, je sais qu'il faut choisir une position et un ordre avant d'accéder aux propriétés. Mais cette connaissance et celle de CPositionInfo dans l'aide ne se croisent pas.

 
pivomoe:

Où est l'erreur ?

Si vous apprenez à écrire de manière plus détaillée, vous serez en mesure de voir où vous vous trompez.

Essayez d'écrire comme ça :

CPositionInfo PositionInfoKotiryemii,PositionInfoVedygii;
double Volume1=0; Volume2=0;
string Symbol1=""; Symbol2="";

if ( PositionInfoVedygii.Select("SBRF-12.17") ) // Select 1
{ Volume1=PositionInfoVedygii.Volume(); Symbol1=PositionInfoVedygii.Symbol(); } // Use 1
else Print("Не удалось выбрать позицию по символ SBRF-12.17 ");

if ( PositionInfoKotiryemii.Select("SBRF-3.18") ) // Select 2
{ Volume2=PositionInfoKotiryemii.Volume(); Symbol2=PositionInfoKotiryemii.Symbol(); } // Use 2
els Print("Не удалось выбрать позицию по символ SBRF-3.18 ");
 
Print(Symbol2," Объем ",Volume2," ",Symbol1," Объем ",Volime1);
 
pivomoe:

Je ne comprends pas quelle est mon erreur en utilisant l'aide.

1) J'avais besoin du volume de la position dans le programme.

2) En faisant une recherche, j'ai trouvé la méthode Volume de la classe CPositionInfo.

3) Il y a une référence à l'utilisation de la méthode Select avant d'appeler Volume.

4) Il n'y a aucune référence dans la description de la méthode Select. Par sécurité, j'étudie la description de la classe CPositionInfo.

5) J'écris le code. J'obtiens un résultat qui ne découle pas de la référence.


Où est l'erreur ?

Encore une fois sur la sélection de la position, l'ordre, avant d'accéder aux propriétés que je connais. Mais cette connaissance et la connaissance de CPositionInfo dans l'aide ne se chevauchent pas.


Il s'agit d'un bloc de code qui contourne toutes les positions et imprime des informations similaires à celles du terminal dans l'onglet "Trade" :

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
        {
         string str_position_type=(m_position.PositionType()==POSITION_TYPE_BUY)?"buy":"sell";
         Print(m_position.Symbol()+" | "+
               IntegerToString(m_position.Ticket())+" | "+
               TimeToString(m_position.Time(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" | "+
               str_position_type+" | "+
               DoubleToString(m_position.Volume(),2)+" | "+
               DoubleToString(m_position.PriceOpen(),2));

}

Algorithme de travail : d'abord nous sélectionnons la position (prendre un pot de confiture dans l'étagère du supermarché), ensuite nous accédons aux propriétés de la position sélectionnée et nous imprimons ces propriétés (lire l'étiquette sur le pot de confiture).

 
pivomoe:

Il s'avère que la classe CPositionInfo n'a aucun sens, car normalement, on ne peut travailler qu'avec un seul objet de cette classe.

Oui, c'est un emballage.
 

Ivan Ivanov ,Vladimir Karputov, fxsaber merci pour votre aide.

 

Je récupère les données des indicateurs dans l'Expert Advisor. Je calcule d'abord la poignée, puis je copie les dernières valeurs réelles des tampons des indicateurs.

Questions :

1. Quelle est la profondeur de l'histoire dans ces indicateurs ?

2. Existe-t-il une méthode permettant de limiter la profondeur des calculs ?
Dans ce cas, nous n'avons besoin que de quelques dernières valeurs pour déterminer l'inflexion ou la direction haut/bas.
Le conseiller expert est multi-devises, il y a des dizaines d'indicateurs, donc je n'ai pas besoin de faire des calculs inutiles.

 
User_mt5:

Je récupère les données des indicateurs dans l'Expert Advisor. Je calcule d'abord la poignée, puis je copie les dernières valeurs réelles des tampons des indicateurs.

Questions :

1. Quelle est la profondeur de l'histoire dans ces indicateurs ?

2. Existe-t-il un moyen de limiter la profondeur des calculs ?
Dans ce cas, nous n'avons besoin que de quelques dernières valeurs pour déterminer l'inflexion ou la direction haut/bas.
Le conseiller expert est multi-devises, il y a des dizaines d'indicateurs, il est donc nécessaire de ne pas faire de calculs inutiles.


J'espère que vous créez les poignées de l'indicateur UNE fois dans OnInit() ?

La profondeur de calcul dépend de l'indicateur. De rares indicateurs limitent la profondeur de manière forcée - en règle générale, ils calculent tous l'historique complet. Par conséquent, la variante suivante est peut-être utile : introduire la variable responsable de la profondeur dans l'indicateur, et ensuite passer ce paramètre à travers iCustom dans l'Expert Advisor.