Um conselheiro sem indicador. Isto é possível? - página 9

 
Nikolai Semko:

Por que você obtém um novo bar noSeriesInfoInteger?
Até onde me lembro - é uma função assíncrona muito lenta (talvez algo tenha mudado - eu não verifiquei).
Como regra geral, todas as inconsistências e lentidão são uma conseqüência do uso de funções assíncronas. Evite-os, se possível.
Tente usá-los de alguma outra forma. Por exemplo, através do iTime ou iBars.
E não esqueça que o OnChartEvent é assíncrono e não pode ser chamado mais de 64 vezes por segundo, ou seja, no máximo uma vez a cada 15.625 milissegundos.

novo bar via SERIES_LASTBAR_DATE

E não esqueça que o OnChartEvent é assíncrono e não pode ser chamado mais de 64 vezes por segundo, ou seja, no máximo uma vez a cada 15.625 milissegundos.

como se diz na China, por mais roxo que seja, desde que seja rentável

 
Dmitry Fedoseev:

quão ingênuo...

Dimitri, posso obter uma referência?

 
Fast235:

novo bar via SERIES_LASTBAR_DATE

SERIE_LASTBAR_DATE é apenas o ID usado na sérieInfoInteger.

 
Fast235:

Dimitri, posso receber uma recomendação?

O que é isso? Já dei um e vou repeti-lo - se você não sabe escrever indicadores, não diga que eles não funcionam corretamente ou que a abordagem com indicadores em geral é ruim, errada, irracional.

 
Nikolai Semko:

SERIES_LASTBAR_DATE é apenas o Identificador utilizado na sérieInfoInteger.


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;}; // вызывается при создании Объекта, проинициализация тут не нужна, что-бы сразу прошел новый бар
  };
 
Esta é a NewBar - o que significa que não é feita mais do que uma tentativa.
 
Dmitry Fedoseev:
Este NewBar significa que não há mais do que uma tentativa.

não está claro o que se entende por

como você pode ver, o número de caracteres é passado corretamente, para a nova classe de barras e processado corretamente lá
 
Fast235:


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


O que é isto? O que poderia ter a ver com um indicador normal? Você está inventando coisas em vez de ler os artigos e aprender a fazer as coisas corretamente. É por isso que é tão ingênuo - indicadores "não funcionam corretamente". Todo mundo é tão criativo a ponto de ser estonteante.

 
Fast235:

não está claro o que se entende por

E você não o fará. NewBar é um diagnóstico.