FORTS Veuillez nous aider - page 5

 

Quelqu'un ment, ou Michael n'accepte pas les objections du support technique, ou le support technique ne veut pas reconnaître le problème.

Mikalas 2015.03.26 00:44  RU

Encore une fois, servicedexk ne peut pas reproduire l'erreur !


alexvd2015.03.26 15:16

Mauvais code dans le premier message aussi.

 
MigVRN:

Soyons amis :)

Mais pas immédiatement - mais lorsque le chargement est réussi.

Votre code montre que la fonction OnInit est inutile, ou que les développeurs se sont plantés.

 
Mikalas:

Oui, eh bien, et s'il n'y a vraiment aucune donnée ?

Et alors ? Un cycle ? Avec combien d'itérations ?

Il n'y a pas de recettes spécifiques ici...

Je n'aime pas du tout les indicateurs... C'est la seule raison :

Dans le même thread avec les indicateurs, les autres opérations sont exécutées séquentiellement pour ce symbole - le traitement des ticks et la synchronisation de l'historique. Cela signifie que si une action sans fin est exécutée dans un indicateur, tous les autres événements pour ce symbole ne seront jamais exécutés.

Ils peuvent faire ralentir le chat, et tout le reste. Par conséquent, je les utilise sans demande de devis pour les chats voisins et comme fournisseur d'événements personnalisés. En général, ne travaillez qu'avec ce qui est venu dans OnCalculate().

Serj_Che:

Dans votre code, vous voyez que la fonction OnInit est inutile, ou les développeurs ont fait des erreurs.

Voici votre code - j'y ai seulement collé ce qu'alexvd a dit. Je n'ai pas compris pourquoi cela signifie quela fonction OnInit est inutile.

 
alexvd:
Dans votre code, il suffit d'effacer l'erreur dans la variable globale is_failed juste après ResetLastError(). Sinon, une fois l'erreur détectée, vous recevrez un message à ce sujet.

Bingo ! Vous y êtes presque.) Il y a une raison pour laquelle on dit "fais confiance mais vérifie". Le texte final se trouve ci-dessous.

#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//
bool is_failed = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  SymbolSelect( "MIX-6.15", true );
  SymbolSelect( "RTS-6.15", true );
  SymbolSelect( "Si-6.15", true );
//---  
  ResetLastError();
//---  
  int total_bars = Bars( "MIX-6.15", PERIOD_M1 );
  if ( total_bars > 0 )
  {
    total_bars = Bars( "RTS-6.15", PERIOD_M1 );
    if ( total_bars > 0 )
    {
      total_bars = Bars( "Si-6.15", PERIOD_M1 );
      {
        if ( total_bars > 0 )
        {
           is_failed = false;
           Print( "Init OK." );
        }
        else
        {
          is_failed = true;
          Print( "Get Bars failed Si-6.15 Last error = ", string(GetLastError() ) );
        }
      }
    }
    else
    {
      is_failed = true;
      Print( "Get Bars failed RTS-6.15 Last error = ", string(GetLastError() ) );
    }
  }
  else
  {
    is_failed = true;
    Print( "Get Bars failed MIX-6.15 Last error = ", string(GetLastError() ) );
  } 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  ResetLastError();
//---  
 int total_bars = Bars( "MIX-6.15", PERIOD_M1 );
  if ( total_bars > 0 )
  {
    total_bars = Bars( "RTS-6.15", PERIOD_M1 );
    if ( total_bars > 0 )
    {
      total_bars = Bars( "Si-6.15", PERIOD_M1 );
      {
        if ( total_bars > 0 )
        {
          Print( "Init OK." );
          is_failed = false;
        }
        else
        {
          is_failed = true;
          Print( "Get Bars failed Si-6.15 Last error = ", string(GetLastError() ) );
        }
      }
    }
    else
    {
      is_failed = true;
      Print( "Get Bars failed RTS-6.15 Last error = ", string(GetLastError() ) );
    }
  }
  else
  {
    is_failed = true;
    Print( "Get Bars failed MIX-6.15 Last error = ", string(GetLastError() ) );
  } 
//---
   if ( is_failed )
   {
     Print( "Sorry! Get Bars failed." );
   }
   else Print( "Bingo! We done.");
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
MigVRN:

Il n'y a pas de recettes spécifiques ici...

Je n'aime pas du tout les indicateurs... C'est la seule raison :

Dans le même thread avec les indicateurs, d'autres actions concernant le symbole sont effectuées séquentiellement - le traitement des ticks et la synchronisation de l'historique. Cela signifie que si une action infinie est exécutée dans l'indicateur, tous les autres événements pour ce symbole ne seront jamais exécutés.

Ils peuvent faire ralentir le chat, et tout le reste. Par conséquent, je les utilise sans demande de devis des chats voisins et comme fournisseur d'événements personnalisés. En général, ne travaillez qu'avec ce qui est venu dans OnCalculate().

Voici votre code - je n'ai mis que ce qu'alexvd a mentionné. Je ne comprends pas pourquoi il s'ensuit que lafonction OnInit est inutile.

Quel est le code du mien ? Je n'ai pas posté de code ici.

Les indicateurs ne ralentiront pas tout le reste. Le fait est que tout est désynchronisé dans MT5, les indicateurs fonctionnent dans leur fil et les EA dans le leur. Le verre est seul.

Je n'aime pas non plus les indicateurs, mais je dois les utiliser de temps en temps.

 
Dima_S:

Bingo ! Vous y êtes presque.) On dit "fais confiance mais vérifie" pour une raison. Le texte final se trouve ci-dessous.

Pourquoi répéter dans OnCalculate ce qui était dans OnInit ? Est-ce un tel sort ?)
 
Serj_Che:

Quel est mon code ? Je n'ai pas posté de codes ici.

OH... Désolé. J'ai confondu avec Dima_S.

Serj_Che:

Je ne vais pas ralentir tout le reste à cause des indicateurs. Le fait est que tout est désynchronisé dans MT5, les indicateurs fonctionnent dans leur fil et les EA dans le leur. Le verre est seul.

Je n'aime pas non plus les indicateurs, mais je dois les utiliser de temps en temps.

Les indicateurs fonctionnent dans leurs fils... Mais le chat fonctionne dans ce flux. Si quelque chose ne va pas dans un indicateur (une boucle éternelle dansOnCalculate()) le Conseiller Expert qui travaille dans son "propre" flux - ne verra rien du chat...

 
MigVRN:

OOO... Désolé, j'ai confondu avec Dima_S.

Les indicateurs fonctionnent dans leur fil... Seul le chat fonctionne dans le même fil. Et si quelque chose ne va pas dans un indicateur (une boucle éternelle dansOnCalculate()) le Conseiller Expert qui fonctionne dans "son" fil ne verra rien de ce chat...

J'en doute, je suis même plus enclin à penser que ce n'est pas le cas, le Conseiller Expert devrait fonctionner tout seul. Je n'ai pas eu de tels problèmes, mais si vous voulez, vous pouvez vérifier cet extrême.

 
Serj_Che:

J'en doute, j'ai même plutôt tendance à penser que ce n'est pas le cas, l'EA doit fonctionner tout seul. Il n'y a pas eu de violons de ce type spécifiquement, mais vous pouvez vérifier un tel extrême si vous le souhaitez.

Je vais vous présenter le code de contrôle. Je le vérifierai dans 2-3 heures. Mais le fait que si l'indicateur 1 du chat "ralentit", les autres ralentissent avec lui - c'est un fait dont j'ai fait l'expérience à plusieurs reprises.
 
MigVRN:
Je vais esquisser un code de test. Dans environ 2 ou 3 heures. Mais si un indicateur du chat "ralentit", les autres ralentissent avec lui - c'est un fait auquel j'ai été confronté plus d'une fois.

OK, intéressant !

Les indicateurs fonctionnent dans leur propre fil, les EA dans leur propre fil. Sauf, bien sûr, si c'est une pierre à noyau unique.