renvoie la politique d'exécution. - page 8

 

C'est ainsi que j'obtiens les données actuelles de la moyenne mobile, est-ce correct ?

input int      ma_period = 10;
 int ma_handle = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
    ma_handle = iMA(_Symbol,_Period,ma_period,0,MODE_SMA,PRICE_MEDIAN);
   if(ma_handle == INVALID_HANDLE)
     {
      Print("ma_handle == INVALID_HANDLE");
      return(INIT_FAILED);
     }

   return(INIT_SUCCEEDED);


  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  { 
  double   ma[1] ;
   if(CopyBuffer(ma_handle,0,0,1,ma)==1)
     {
     
     
     }
 }

Deux questions.

1.rien sur le fait de ne pas associer le numéro de tampon de l'indicateur à l'indicateur. Comme il n'y a qu'un seul indicateur, il obtient automatiquement le tampon 0 et c'est ce que j'ai spécifié.

2. Si j'ai le handle de l'indicateur dans l'initialisation, quand je change les paramètres qui sont passés à l'indicateur, est-ce que je dois re-remplir l'EA au graphique pour que l'événement d'initialisation arrive et que les nouveaux paramètres soient appliqués ?

 
Ivan_Invanov:

C'est ainsi que j'obtiens les données actuelles de la moyenne mobile, est-ce correct ?

Deux questions.

1.rien sur le fait de ne pas associer le numéro de tampon de l'indicateur à l'indicateur. Comme il n'y a qu'un seul indicateur, il obtient automatiquement le tampon 0 et c'est ce que j'ai spécifié.

2. Si j'ai le gestionnaire d'indicateur dans l'initialisation, lorsque je change les paramètres qui sont passés à l'indicateur, dois-je recharger l'EA sur le graphique pour que l'événement d'initialisation se produise et que les nouveaux paramètres s'appliquent ?

1. Il n'y a pas d'"association". Il n'y en a jamais eu.

Lisons l'aide sur CopyBuffer

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );

Il existe une fonction qui prend le handle de l'indicateur (dans votre cas, il s'agit de la variablema_handle et du numéro de tampon '0' - zéro, car l'indicateur Moving Average n'a qu'un seul tampon).


2. Si vous modifiez les paramètres d'entrée dans votre EA, celle-ci sera initialisée à nouveau et le handle de l'indicateur sera créé dans OnInit avec les paramètres que vous avez entrés.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Отсчет элементов копируемых данных (индикаторный буфер с индексом buffer_num) от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар (значение индикатора для текущего бара). При копировании заранее неизвестного количества данных в качестве массива-приемника buffer[] желательно...
 
Vladimir Karputov:

1. Il n'y a pas d'"association". Il n'y en a jamais eu.

...

Signification de l'appel àSetIndexBuffer()

 
Dmitry Fedoseev:

Signifie un appel à SetIndexBuffer()

Oui, il n'est pas clair quel est le numéro de tampon de l'indicateur, comment ces tampons sont créés, s'ils appartiennent à un indicateur spécifique ou s'ils ont une numérotation commune. La documentation indique d'écrire SetIndexBuffer(), mais dans l'exemple de la moyenne mobile, il est écrit sans. J'ai lu la référence et cherché d'autres articles, mais ce n'est toujours pas clair. Le préprocesseur doit-il spécifier les tampons et pourquoi les tampons doivent-ils être inférieurs d'une unité à ceux de la directive du préprocesseur et non identiques ?
 
Ivan_Invanov:
Oui, je ne sais pas ce qu'est un numéro de tampon d'indicateur, comment ces tampons sont créés, s'ils appartiennent à un certain indicateur ou s'ils ont une numérotation générale. La documentation indique d'écrire SetIndexBuffer(), mais dans l'exemple de la moyenne mobile, il est écrit sans. J'ai lu la référence et cherché d'autres articles, mais ce n'est toujours pas clair. Le préprocesseur doit-il spécifier les tampons et pourquoi les tampons doivent-ils être inférieurs d'une unité à ceux de la directive du préprocesseur et non identiques ?

Si vous cherchez une signification métaphysique... alors beaucoup de choses deviennent incompréhensibles. Sinon, ce n'est qu'un numéro. Il appartient à un indicateur spécifique.

Les conseillers experts n'ont pas du tout de tampons d'indicateurs, il ne peut donc pas y avoir d'appel à SetIndexBufer().

Pas une de moins, mais exactement la même. Lorsqu'on compte à partir de zéro, le dernier nombre est inférieur de 1 au nombre total.

 
Merci.
 

Si vous le voulez bien, répondez à quelques questions supplémentaires, s'il vous plaît.

1. Je ne comprends pas pourquoi je dois affecter 0 à une variable déclarée si je vais de toute façon affecter quelque chose plus tard. Et de plus, parfois le 0 n'est pas attribué, parfois il l'est.

Et ils disent que vous devez supprimer les objets lors de la désinitialisation (je ne comprends pas pourquoi), mais un handle d'indicateur est un objet, mais il n'est généralement pas supprimé, pourquoi ?

3.MqlTradeRequest request={0} ; Qu'est-ce que cela signifie ? Il est probable que toute la structure soit affectée à 0, mais elle ne contient pas que des types numériques.

4. Et pourquoi y a-t-il une opération logique ici ?

bool  OrderSend(
   MqlTradeRequest&  request,      // структура запроса
   MqlTradeResult&   result        // структура ответа
   );
 
Ivan_Invanov:

Si vous le voulez bien, répondez à quelques questions supplémentaires, s'il vous plaît.

1. Je ne comprends pas pourquoi je dois affecter 0 à une variable déclarée si je vais de toute façon affecter quelque chose plus tard. Et de plus, parfois le 0 n'est pas attribué, parfois il l'est.

Et ils disent que vous devez supprimer les objets lors de la désinitialisation (je ne comprends pas pourquoi), mais un handle d'indicateur est un objet, mais il n'est généralement pas supprimé, pourquoi ?

3.MqlTradeRequest request={0} ; Qu'est-ce que cela signifie ? Il est probable que toute la structure soit affectée à 0, mais elle ne contient pas que des types numériques.

4. Pourquoi avons-nous besoin d'une opération logique ici ?

1. Par habitude.

2. il s'agit d'un autre objet. Il sera déchargé par lui-même, mais il peut être accéléré par la fonction IndicatorRelease().

3. elle est effacée et c'est tout.

4. Il ne s'agit pas d'une opération logique, mais d'un transfert de variable par référence.

 
Dmitry Fedoseev:

1. Par habitude.

2. Il s'agit d'un objet différent. Il se décharge ensuite de lui-même, mais peut être accéléré par IndicatorRelease().

3. elle est effacée et c'est tout.

4. Il ne s'agit pas d'une opération logique, mais d'un transfert de variable par référence.

merci)
 
Je suis confus à propos de quelque chose. Lorsque SYMBOL_TRADE_EXECUTION_MARKET est exécuté . Puis-je faire quelque chose pour ouvrir des ordres à un certain prix, comme dans l'exécution immédiate? Ai-je besoin d'un ordre en attente ? Veuillez rédiger un format de demande de marché pour un ordre en attente.