[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 314

 
Ich verstehe das nicht ganz? Wenn ich den Kon-Indikator im Fenster zeichne, funktioniert er einwandfrei. Erklären Sie...
 
kon12 >> :
Das verstehe ich nicht ganz? Wenn ich den Kon-Indikator im Fenster zeichne, funktioniert er gut. Erklären Sie...

Wenn Sie im Fenster zeichnen, haben Sie entweder olivgrüne oder grüne Histogrammbalken, wobei der erste dem Up-Buffer und der zweite dem Dn entspricht. wenn nur dn auf Takt 0 gezeichnet wird und Sie auf den Indikator iCustom(0,0, "Kon",10,0,0) zugreifen, d.h. der Modus-Parameter ist 0 (siehe Ihre 0 ist oben - SetIndexBuffer(0,up);), dann wird das Ergebnis des Funktionsaufrufs höchstwahrscheinlich EMPTY_VALUE sein.


Ist es deutlicher?

 

Ich habe versucht, die Puffernummer sowohl auf 1 als auch auf 2 zu ändern - ohne Erfolg.

 

prüfen, ob die Zeichenkette "Kon" im iCast-Aufruf mit dem mq4-Dateinamen übereinstimmt, einschließlich Groß- und Kleinschreibung

und welchen Wert gibt die Funktion überhaupt aus?

 

Die Frage ist ganz einfach. Ich versuche, mich auf den OsMA-Indikator zu beziehen, der im Standardsatz der benutzerdefinierten Indikatoren enthalten ist. Ich möchte einfach eine Linie dieses Indikators im Indikatorenfenster zeichnen. Der OsMA-Indikator hat die Parameter 12,26,9 und wird im Puffer 0 gezeichnet. Was ist an dem Code falsch? Die 0-Linie wird im Indikatorfenster gezeichnet und das war's.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_level1 0.0
#property indicator_color1 Olive

double z;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0, z);
   SetIndexStyle(0,DRAW_HISTOGRAM);
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { z= iCustom(NULL,0,"OsMA",12,26,9,0,0); 
  //----
   return(0);
  }
 
kon12 >> :

Die Frage ist ganz einfach. Ich versuche, die OsMA-Funktion zu verwenden, die im Standardsatz der benutzerdefinierten Indikatoren enthalten ist. Ich möchte einfach eine Linie dieses Indikators im Indikatorenfenster zeichnen. Der OsMA-Indikator hat die Parameter 12,26,9 und wird mit dem Puffer 0 gezeichnet. Was ist an dem Code falsch? Die 0-Linie wird im Indikatorfenster gezeichnet und das war's.

Nein, so funktioniert das nicht.

z ist ein Array, in das die Daten Element für Element geschrieben werden müssen. Zum Beispiel:

for(i=100;i>=0;i--)

{

z[i]= iCustom(NULL,0,"OsMA",12,26,9,0,i);

}

 
Juhu, es hat geklappt! Danke für Ihre Hilfe, die ersten Schritte sind die schwierigsten...
 

Eine weitere Frage zu meinem Thema. Angenommen, ich zeichne eine Kurve in das Diagramm, z.B. MA. Dann verwende ich einen benutzerdefinierten Indikator, der diesen MA über die iCustom-Funktion verwendet. Können wir sie so verbinden, dass die MA-Periode im Diagramm automatisch geändert wird, wenn die МА-Periode im benutzerdefinierten Indikator geändert wird?

 

Können Sie mich beraten, ich arbeite an einem Tagesplan.

Und ich möchte auf die Protokolldaten zugreifen. Handelt es sich um aktualisierte oder um alte Daten?

 

Frage - wie funktioniert das (Indikatoroptimierung):


if( MA_Fast[ i+1]> MA_Slow[ i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);
   ObjectDelete( RectangleSell);
   ObjectCreate( RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime, BoxLow,  EndBoxTime, BoxHigh);
   ObjectSet( RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet( RectangleSell, OBJPROP_RAY, False);
   ObjectSet( RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet( RectangleSell, OBJPROP_BACK , True);
   ObjectSet( RectangleSell, OBJPROP_COLOR, ColorSell);
}


Verstehe ich das richtig, dass bei jedem neuen Tick das gleiche Rechteck

(gleiche Größe mit gleicher Anzahl von Balken) gelöscht und neu gezeichnet werden?

Lohnt es sich, eine Prüfung der Anzahl der Balken hinzuzufügen (wenn es mehr Balken gibt, dann wird nur dann neu gezeichnet)

um die CPU des Computers zu entlasten, oder wird der Gewinn minimal sein und es nicht wert, sich damit zu beschäftigen?