Ein Berater ohne Indikator - ist das möglich? - Seite 9

 
Nikolai Semko:

Warum erhalten Sie einen neuen Balken fürSeriesInfoInteger?
Soweit ich mich erinnere, handelt es sich um eine sehr langsame asynchrone Funktion (vielleicht hat sich etwas geändert - ich habe es nicht überprüft).
In der Regel sind alle Inkonsistenzen und Langsamkeit eine Folge der Verwendung asynchroner Funktionen. Vermeiden Sie sie nach Möglichkeit.
Versuchen Sie, sie auf andere Weise zu nutzen. Zum Beispiel über iTime oder iBars.
Und vergessen Sie nicht, dass OnChartEvent selbst asynchron ist und nicht mehr als 64 Mal pro Sekunde aufgerufen werden kann, d.h. höchstens einmal pro 15,625 Millisekunden.

neuer Balken über SERIES_LASTBAR_DATE

Und vergessen Sie nicht, dass OnChartEvent selbst asynchron ist und nicht mehr als 64 Mal pro Sekunde aufgerufen werden kann, d.h. höchstens einmal pro 15,625 Millisekunden.

wie man in China sagt, egal wie lila, Hauptsache es ist profitabel

 
Dmitry Fedoseev:

wie naiv...

Dimitri, kann ich eine Referenz bekommen?

 
Fast235:

neuer Balken über SERIES_LASTBAR_DATE

SERIES_LASTBAR_DATE ist nur die in SeriesInfoInteger verwendete ID.

 
Fast235:

Dimitri, kann ich eine Empfehlung bekommen?

Was ist das? Ich habe bereits eine Antwort gegeben und wiederhole sie - wenn Sie nicht wissen, wie man Indikatoren schreibt, behaupten Sie nicht, dass sie nicht richtig funktionieren oder dass der Ansatz mit Indikatoren im Allgemeinen schlecht, falsch oder irrational ist.

 
Nikolai Semko:

SERIES_LASTBAR_DATE ist nur der in SeriesInfoInteger verwendete Bezeichner.


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;}; // вызывается при создании Объекта, проинициализация тут не нужна, что-бы сразу прошел новый бар
  };
 
Dies ist der NewBar - das bedeutet, dass nur ein Versuch unternommen wird.
 
Dmitry Fedoseev:
Dieser NewBar bedeutet, dass es nicht mehr als einen Versuch gibt.

es ist nicht klar, was gemeint ist mit

Wie Sie sehen können, wird die Zeichennummer korrekt an die neue Balkenklasse übergeben und dort korrekt behandelt
 
Fast235:


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


Was ist das? Was hat das mit einem normalen Indikator zu tun? Du denkst dir etwas aus, anstatt die Artikel zu lesen und zu lernen, wie man es richtig macht. Deshalb ist es so naiv - die Indikatoren "funktionieren nicht richtig". Alle sind so kreativ, dass es einem den Atem verschlägt.

 
Fast235:

es ist nicht klar, was gemeint ist mit

Und das werden Sie auch nicht. NewBar ist eine Diagnose.