Apprendre et écrire ensemble en MQL5 - page 40

 
L'indicateur entre dans le processus général indépendant de recalcul des indicateurs, qui se déroule parallèlement à celui des experts.
 
Dimka-novitsek: ... Mais qu'est-ce qui fera que la poignée de l'indicateur se redessinera avec les nouveaux ticks ou au moins les barres, si elle est créée dans OnInit ?

Ce n'est pas la poignée de l'indicateur qui est redessinée, mais les constructions graphiques de l'indicateur lui-même. La poignée est juste une valeur entière.

Dimka-novitsek:
D'une certaine manière, c'est irréaliste d'écrire en son sein !

Laissez-moi vous expliquer en termes simples. L'indicateur peut être exécuté de deux manières : manuellement et par programme. Dans les deux cas, le terminal crée et prend en charge les mêmes processus de calcul. Après le démarrage progressif, comme dans le cas du manuel, il suffit de mettre l'indicateur en marche une fois, puis il sera calculé en fonction du code. Pour le démarrage du programme de l'indicateur, la fonction iCustom() et ses fonctions analogues sont utilisées. Une fois que iCustom() avec le jeu correct de paramètres est lancé avec succès, les processus de calcul appropriés fonctionneront de la même manière, comme ils le font au démarrage manuel.

A ce stade, plusieurs indicateurs peuvent être lancés de manière programmatique. Un handle est simplement un identifiant qui vous permet de vous adresser à un certain processus de calcul. À l'aide d'un handle, vous pouvez copier les données calculées d'un certain indicateur lancé de manière programmatique.

Par conséquent, pour démarrer l'indicateur de manière programmatique et obtenir son handle, il suffit en général de le faire dans OnInit(). Vous ne démarrez pas l'indicateur manuellement à chaque tick pour le "redessiner".

 
Merci !!!!
 
Merci ! J'ai tout compris. Et donc je suis assis ici à réfléchir depuis deux heures maintenant. Eh bien, je ne suis pas heureux de l'annonce d'Hendle dans l'article. Il s'agit d'un robot multidevises où une vingtaine de paires de devises sont répertoriées. À différents endroits dans le robot, il y a des appels aux fonctions spécifiées, différents délais sont fixés... Le robot n'est pas réaliste de déclarer autant de poignées avant les calculs, c'est-à-dire qu'il est peut-être réel, mais c'est un non-sens... Sur 4, ça a marché et ça a brillé ! !! Je suis assis ici et j'ai vraiment du mal...
int OnInit()
  {
//---
  if(Digits() == 3 || Digits() == 5) slip=slip *10; 
  //рисовка места под дашборд   
   time1 = 0;
   initGraph();
   ArrayInitialize(avg_,1);
//---
 ATR_handle=iATR(symbol,periodd(timeframe),period);
   return(0);
  }
//+------------------------------------------------------------------+
 
En fait, ERR_MARKET_NOT_SELECTED 4302 Aucun symbole n'a été sélectionné dans MarketWatch - traiter la question plus en profondeur, comme l'origine du problème.

Comment n'est-elle pas sélectionnée ? Qu'est-ce qui n'est pas sélectionné ? Qu'est-ce que MarketWatch ? Quel est le symbole ? Paire de devises ? Donc, non, j'ai une paire de devises dans mon code comme entrée de fonction très bien !
 
Je vais même le vérifier, et je pense savoir comment. Mais je ne trouve pas MarketWatch sur google ou Yandex, à part une ligne indiquant que c'est corrigé dans la nouvelle version.
 
Dimka-novitsek:
En fait, ERR_MARKET_NOT_SELECTED 4302 Symbole non sélectionné dans MarketWatch - traiter la question plus en profondeur, comme où se trouve la racine du problème.

Comment n'est-elle pas sélectionnée ? Qu'est-ce qui n'est pas sélectionné ? Qu'est-ce que MarketWatch ? Quel est le symbole ? Paire de devises ? Donc, non, j'ai une paire de devises dans mon code comme entrée de fonction très bien !

Regardez la fonction SymbolSelect(). MarketWatch est la fenêtre de Market Watch. Avant de poser une question, essayez de trouver la réponse en utilisant la fonction de recherche du forum dans le coin supérieur droit.

P.S. Vous n'êtes pas obligé d'écrire un remerciement dans chaque message. :)

 

Ouaip.

Vérifié - inséré l'empreinte, comme ceci.

 double iATRf (string symbol, int timeframe, int period, int shift  ){
  
  Print("symbol");Print(symbol); Print("timeframe");Print(timeframe); Print( "period");Print( period);Print("shift");Print(shift);  
  
    ATR_handle=iATR(symbol,periodd(timeframe),period);
   CopyBuffer(ATR_handle,0,0,100,ATR);
    ArraySetAsSeries(ATR,true); 
    return( ATR[shift]); }  

Et vous savez, la vérification a montré que la fonction prend des paramètres normaux, sains. Et voilà. Et je vais parcourir les liens pour mieux comprendre la question ! Merci !

 
Dimka-novitsek:
Je vais même le vérifier, et je pense savoir comment. Mais MarketWatch n'a pas été trouvé dans Google et Yandex, sauf pour une ligne qu'il a été corrigé dans la nouvelle version.
Eh bien, Dimon Vladimirovich, vous êtes un drôle de type :)
 

Merci ! !!

Cela signifie-t-il que la plateforme ne prend pas en charge cette paire ? 2012.09.21 16:23:17 Impossible de créer un handle d'indicateur iMA pour CADJPY/PERIOD_D1, code d'erreur 4302.

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5
Raison: