Gemeinsam lernen und schreiben in MQL5 - Seite 40

 
Der Indikator geht in den allgemeinen unabhängigen Prozess der Neuberechnung der Indikatoren ein, der parallel zu den Experten abläuft.
 
Dimka-novitsek: ... Aber was wird der Indikator Handle Redraw mit neuen Ticks oder zumindest Bars, wenn es in OnInit erstellt wird?

Nicht der Indikatorgriff wird neu gezeichnet, sondern die grafischen Konstruktionen des Indikators selbst. Der Handle ist nur ein Integer-Wert.

Dimka-novitsek:
Irgendwie ist es unrealistisch, in it's init zu schreiben!

Lassen Sie mich das in einfachen Worten erklären. Der Indikator kann auf zwei Arten ausgeführt werden: manuell und programmgesteuert. In beiden Fällen erstellt und unterstützt das Terminal die gleichen Berechnungsprozesse. Nach dem Sanftanlauf, wie bei der manuellen Variante, starten Sie den Blinker nur einmal, und dann wird er entsprechend dem Code berechnet. Für einen Programmstart des Indikators werden die Funktion iCustom() und ihre analogen Funktionen verwendet. Sobald iCustom() mit den richtigen Parametern erfolgreich gestartet wurde, arbeiten die entsprechenden Berechnungsprozesse auf die gleiche Weise wie beim manuellen Start.

Dabei können mehrere Indikatoren programmatisch gestartet werden. Ein Handle ist lediglich ein Bezeichner, mit dem Sie einen bestimmten Rechenprozess ansprechen können. Mit Hilfe eines Handles können Sie die berechneten Daten eines bestimmten Indikators programmgesteuert kopieren.

Um den Indikator programmatisch zu starten und sein Handle zu erhalten, genügt es daher im Allgemeinen, dies in OnInit() zu tun. Sie starten den Indikator nicht manuell bei jedem Tick, um ihn "neu zu zeichnen".

 
Dankeschön!!!!
 
Ich danke Ihnen! Ich habe es im Grunde genommen verstanden. Und so sitze ich nun schon seit zwei Stunden hier und denke nach. Nun, ich bin nicht glücklich über die Ankündigung von Hendle in der init. Dies ist ein Mehrwährungsroboter, bei dem etwa zwanzig Währungspaare aufgelistet sind. An verschiedenen Stellen des Roboters werden die angegebenen Funktionen aufgerufen, unterschiedliche Zeitrahmen werden gesetzt... Der Roboter ist nicht realistisch, wenn er so viele Griffe vor den Berechnungen angibt, d.h. es mag real sein, aber es ist Unsinn... Bei 4 hat es geklappt und es hat geraschelt!!! Ich habe hier wirklich Schwierigkeiten...
int OnInit()
  {
//---
  if(Digits() == 3 || Digits() == 5) slip=slip *10; 
  //рисовка места под дашборд   
   time1 = 0;
   initGraph();
   ArrayInitialize(avg_,1);
//---
 ATR_handle=iATR(symbol,periodd(timeframe),period);
   return(0);
  }
//+------------------------------------------------------------------+
 
Eigentlich ERR_MARKET_NOT_SELECTED 4302 No symbol selected in MarketWatch - weiter mit dem Problem befassen, wie wo die Wurzel des Problems ist.

Wie wird nicht ausgewählt? Was wird nicht ausgewählt? Was ist MarketWatch? Was ist das Symbol? Währungspaar? Also, nein, ich habe ein Währungspaar in meinem Code als Funktionseingabe sehr wohl!
 
Ich werde es sogar überprüfen, und ich glaube, ich weiß auch wie. Aber ich kann MarketWatch weder bei Google noch bei Yandex finden, außer einer Zeile, dass es in der neuen Version behoben ist.
 
Dimka-novitsek:
Eigentlich, ERR_MARKET_NOT_SELECTED 4302 Symbol nicht ausgewählt in MarketWatch - mit dem Problem weiter, wie, wo die Wurzel des Problems ist.

Wie wird nicht ausgewählt? Was wird nicht ausgewählt? Was ist MarketWatch? Was ist das Symbol? Währungspaar? Also, nein, ich habe ein Währungspaar in meinem Code als Funktionseingabe sehr wohl!

Sehen Sie sich die Funktion SymbolSelect() an. MarketWatch ist das Marktbeobachtungsfenster. Bevor Sie eine Frage stellen, versuchen Sie, die Antwort mit Hilfe der Forumssuche in der oberen rechten Ecke zu finden.

P.S. Sie müssen nicht in jedem Beitrag ein Dankeschön schreiben. :)

 

Ja, das stimmt.

Kontrolliert - den Ausdruck eingefügt, etwa so.

 double iATRf (string symbol, int timeframe, int period, int shift  ){
  
  Print("symbol");Print(symbol); Print("timeframe");Print(timeframe); Print( "period");Print( period);Print("shift");Print(shift);  
  
    ATR_handle=iATR(symbol,periodd(timeframe),period);
   CopyBuffer(ATR_handle,0,0,100,ATR);
    ArraySetAsSeries(ATR,true); 
    return( ATR[shift]); }  

Die Überprüfung hat ergeben, dass die Funktion normale, vernünftige Parameter annimmt. Das war's. Und ich werde die Links durchgehen, um ein besseres Verständnis der Frage zu bekommen! Ich danke Ihnen!

 
Dimka-novitsek:
Ich werde es sogar überprüfen, und ich glaube, ich weiß auch wie. Aber MarketWatch wurde nicht in Google und Yandex gefunden, außer einer Zeile, dass es in der neuen Version behoben wurde.
Nun, Dimon Wladimirowitsch, Sie sind ein lustiger Kerl :)
 

Ich danke Ihnen!!!

Bedeutet dies, dass die Plattform dieses Paar nicht unterstützt? 2012.09.21 16:23:17 Failed to create an iMA indicator handle for CADJPY/PERIOD_D1, error code 4302

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5
Grund der Beschwerde: