Un conseiller sans indicateur, est-ce possible ? - page 9

 
Nikolai Semko:

Pourquoi obtenez-vous une nouvelle barre surle SeriesInfoInteger?
Autant que je me souvienne - c'est une fonction asynchrone très lente (peut-être que quelque chose a changé - je n'ai pas vérifié).
En règle générale, toutes les incohérences et lenteurs sont la conséquence de l'utilisation de fonctions asynchrones. Évitez-les si possible.
Essayez de les utiliser d'une autre manière. Par exemple via iTime ou iBars.
Et n'oubliez pas que OnChartEvent est lui-même asynchrone et ne peut être appelé plus de 64 fois par seconde, c'est-à-dire au maximum une fois toutes les 15,625 millisecondes.

nouvelle barre via SERIES_LASTBAR_DATE

Et n'oubliez pas que OnChartEvent est lui-même asynchrone et ne peut être appelé plus de 64 fois par seconde, c'est-à-dire au maximum une fois toutes les 15,625 millisecondes.

comme on dit en chine, peu importe que ce soit mauve, tant que c'est rentable.

 
Dmitry Fedoseev:

Quelle naïveté...

Dimitri, je peux avoir une référence ?

 
Fast235:

nouvelle barre via SERIES_LASTBAR_DATE

SERIES_LASTBAR_DATE est uniquement l'ID utilisé dans le SeriesInfoInteger.

 
Fast235:

Dimitri, je peux avoir une recommandation ?

Qu'est-ce que c'est ? J'en ai déjà donné une et je vais la répéter - si vous ne savez pas comment écrire des indicateurs, ne prétendez pas qu'ils ne fonctionnent pas correctement ou que l'approche avec les indicateurs en général est mauvaise, erronée, irrationnelle.

 
Nikolai Semko:

SERIES_LASTBAR_DATE est uniquement l'identifiant utilisé dans le SeriesInfoInteger.


if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам
     {
      static CNewBar M1;
      const int number=id-CHARTEVENT_CUSTOM; //приведем в нормальный вид номер символа 0-7
      //--- проверим новый ли бар
      if(M1.NewBar(number,PERIOD_M1))
 
//+------------------------------------------------------------------+
//| Class Новый бар                                                  |
//+------------------------------------------------------------------+
class CNewBar
  {
protected:
   datetime          oldTime[TRADE_SYMBOLS];
public:
   bool              NewBar(int number,ENUM_TIMEFRAMES timeframe)
     {
      //--- создаем переменную newtime(тип время), присваиваем в нее из функции SeriesInfoInteger дату открытия последнего бара
      datetime newTime=datetime(SeriesInfoInteger(Symbols[number],timeframe,SERIES_LASTBAR_DATE));
      if(newTime!=oldTime[number] && newTime) // проверка на появление нового бара (новое время не равно старому и в newtime есть значение(true))
        {
         oldTime[number]=newTime; //обновим время прошлого бара
         return(true); // вернем функции NewBar true, появился новый бар
         //if(MQLInfoInteger(MQL_DEBUG))
         //   Print("Новый бар",newTime,"старый бар",oldTime); // в режиме отладки, будет выводится сообщение о значениях времен баров
        }
      //--- иначе,
      return(false); // нового бара еще нет
     };
   //---- конструктор класса
//                     CNewBar() {oldTime=NULL;}; // вызывается при создании Объекта, проинициализация тут не нужна, что-бы сразу прошел новый бар
  };
 
Il s'agit de la NewBar - ce qui signifie qu'il n'y a pas plus d'une tentative.
 
Dmitry Fedoseev:
Cette NewBar signifie qu'il n'y a pas plus d'une tentative.

il n'est pas clair ce que l'on entend par

Comme vous pouvez le voir, le numéro de caractère est correctement transmis à la nouvelle classe de barre et y est correctement traité.
 
Fast235:


if(id>=CHARTEVENT_CUSTOM) // Цикл событий по символам


Qu'est-ce que c'est ? Qu'est-ce que cela peut avoir à faire avec un indicateur normal ? Vous inventez des choses au lieu de lire les articles et d'apprendre à faire les choses correctement. C'est pour cela que c'est si naïf - les indicateurs "ne fonctionnent pas correctement". Très créatif.

 
Fast235:

il n'est pas clair ce que l'on entend par

Et vous ne le ferez pas. NewBar est un diagnostic.