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

 

Je n'arrive pas à obtenir les données de l'indicateur de l'EA pour la période haute.

2019.07.22 07:23:02.556 Core 1  2017.10.05 07:00:00   Не удалось скопировать значения индикатора. Error =4806,  copied =-1

Et pendant l'optimisation, ça marche. Lorsque je commence à l'exécuter dans le visualiseur, j'obtiens cette erreur.

Quel est le problème de l'indicateur ?

Dossiers :
ind.mq5  11 kb
 
EgorKim:

Je n'arrive pas à obtenir les données de l'indicateur de l'EA pour la période haute.

Et pendant l'optimisation, ça marche. Lorsque je commence à l'exécuter dans le visualiseur, j'obtiens cette erreur.

Quel est le problème de l'indicateur ?

Où se trouve le code EA ?

La cause probable - dans le chemin où l'indicateur est situé (chemin écrit vers l'indicateur dans le conseiller par iCustom). De même, les fichiers mq5 et ex5 de l'indicateur doivent se trouver dans le même dossier.

 
EgorKim:

Je n'arrive pas à obtenir les données de l'indicateur de l'image haute de l'EA.

Et pendant l'optimisation, ça marche. Lorsque je commence à l'exécuter dans le visualiseur, j'obtiens cette erreur.

Quel est le problème de l'indicateur ?

Donc, votre indicateur se trouve dans [dossier date]\MQL5\Indicators\ind.mq5 , il y a aussi un fichier compilé.

Un exemple d'Expert Advisor qui accède à l'indicateur tampon "0" - "Moyens" :

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input int      Input1=9;
//---
int    handle_iCustom;              // variable for storing the handle of the iCustom indicator /*
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Period(),"ind");
//--- if the handle is not created 
   if(handle_iCustom==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double means[];
   ArraySetAsSeries(means,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,0,start_pos,count,means))
      return;

   string text="Means:"+"\n";
   for(int i=count-1;i>=0;i--)
     {
      text=text+"#"+IntegerToString(i)+": "+DoubleToString(means[i],Digits())+"\n";
     }
   Comment(text);
  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+

Et le résultat dans le testeur :


et en ligne :


Dossiers :
Test.mq5  7 kb
 
Vladimir Karputov:

Donc, votre indicateur se trouve dans [dossier date]\MQL5\Indicators\ind.mq5 , il y a aussi un fichier compilé.

Un exemple d'Expert Advisor qui accède au tampon d'indicateur "0" - "Moyens" :

Et le résultat dans le testeur :


Et en ligne :


Je n'ai pas d'erreur dans la période actuelle.

Le problème apparaît si je reçois des données d'une période supérieure.

Il est clair que le problème se situe dans l'indicateur et non dans mon EA).

Et il n'y a pas d'erreur en mode optimisation. Lorsque vous activez le passage unique et la visualisation - il y a une erreur. L'erreur...

Voici le thème du même sujet, tel que je le comprends

https://www.mql5.com/ru/forum/190003

Не получается брать данные индикатора со старшего ТФ
Не получается брать данные индикатора со старшего ТФ
  • 2017.04.14
  • www.mql5.com
Уже четвёртый день в индикаторе пытаюсь получить данные стандартного индикатора АО со старшего таймфрейма, и всё никак...
 
EgorKim:

Je n'ai aucune erreur sur la période actuelle.

Le problème apparaît si je récupère les données d'une période plus élevée.

Le problème est clairement dans l'indicateur, pas dans mon EA).

Et il n'y a pas d'erreur en mode optimisation. Lorsque vous activez le passage unique et la visualisation - il y a une erreur. L'erreur...

Voici le thème du même sujet, tel que je le comprends

https://www.mql5.com/ru/forum/190003

Vous ne disposez d'aucune référence à la durée de vie des seniors - ses données ne sont pas mises à jour :
Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.
Проблема перевода с МТ4 на МТ5. Или, точнее, невозможность без'ошибочного исполнения некоторых алгоритмов в МТ5.
  • 2019.07.21
  • www.mql5.com
Сначала цитата из справочника языка MQL5. Рубрика Организация доступа к данным...
 

Placez l'indicateur comme ceci sur le graphique H1 avec les paramètres par défaut.

Il y a une erreur

Artyom Trishkin

Je demande de l'aide sur ce qu'il faut corriger dans l'indicateur.

Dossiers :
ind2.mq5  22 kb
 
EgorKim:

Je n'ai aucune erreur sur la période actuelle.

Le problème apparaît si je récupère les données d'une période plus élevée.

Le problème est clairement dans l'indicateur, pas dans mon EA).

Et il n'y a pas d'erreur en mode optimisation. Lorsque vous activez le passage unique et la visualisation - il y a une erreur. L'erreur...

Voici le thème du même sujet, tel que je le comprends

https://www.mql5.com/ru/forum/190003

Voici une modification de COUNTER - vous pouvez définir la période de l'indicateur dans les paramètres. Fonctionne à la fois dans le testeur et en ligne.

//--- create handle of the indicator iCustom
   handle_iCustom=iCustom(Symbol(),Inp_period,"ind",
                          bars_IN,
                          SP,
                          N_Shift1,
                          Forecast,
                          kstd,
                          Oscilator,
                          N_Buff,
                          Ka,
                          La,
                          Za,
                          Oe,
                          Me,
                          DIGf);
Dossiers :
Test.mq5  10 kb
 
Vladimir Karputov:

Voici une modification du COUNTER - vous pouvez définir la période de l'indicateur dans les paramètres. Il fonctionne dans le testeur et en ligne.

Comment expliquer alors que le conseiller expert effectue des transactions pendant l'optimisation? Et dans la visualisation, il n'y a pas un seul échange ?

 
EgorKim:

Comment expliquer alors que pendant l'optimisation, le conseiller expert effectue des transactions. Et pendant la visualisation, il n'y a pas d'échanges ?

Quelle est la condition pour ouvrir une position (numéro de tampon de l'indicateur et numéro de barre) ?

 
Vladimir Karputov:

Quelle est la condition pour ouvrir une position (numéro de tampon de l'indicateur et numéro de barre) ?

Comme ça.

Et certains passages de l'optimiseur coïncident dans le visualiseur.

Et certains laissez-passer n'ont pas du tout de métier.

double price1=0.0;
price1=iCustomGet(handle_ind,1,0)
double price2=0.0;
price2=iCustomGet(handle_ind,2,0)
double open=0.0;   
double open          = iOpen(Symbol(),Period(),0);

   if(price1!=0.0 && price2!=0.0 && open!=0.0)
     {
      if(open<price1)
        {
         buy
        }
      if(open>price2)
        {
         sell
        }
      }
//+------------------------------------------------------------------+
//| Get value of buffers for the iCustom                             |
//|  the buffer numbers are the following:                           |
//+------------------------------------------------------------------+
double iCustomGet(int handle,const int buffer,const int index)
  {
   double Custom[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle,buffer,index,1,Custom)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Custom[0]);
  }
//+------------------------------------------------------------------+

Je pense que le problème se situe au niveau de l'indicateur.

Et comme Artem l'a souligné à juste titre, le problème réside dans les données réelles.

Il ne veut simplement pas me dire comment le faire).

Raison: