Eine Frage für MQL-Kenner - Seite 4

 
Was soll's... Ich bin in die "Frage nach MMS-Expertise" geraten... Tut mir leid, aber ich bin ein ebenso guter Programmierer wie d.... aber ich bin immer objektiv! :)
 
leonid553:

Ich glaube, ich hab's. Ich habe den Namen des Objekts in der Funktion festgelegt.

ObjectCreate(name+ WindowExpertName(), OBJ_LABEL, WindowFind(WindowExpertName()), 0, 0);


Es geht nicht um Objekte...

Sie schreiben es in init()

IndicatorShortName("CC-STOKS ");

Sie verwenden WindowExpertName() als Indikatorname in einer Rendering-Funktion...

Entscheiden Sie sich, mein Lieber (entschuldigen Sie die Vertrautheit), entweder heißt der Indikator "CC-STOKS" (ein Pseudonym), oder er ist nach dem Experten benannt...

 

Ich spreche von meinem...

Nun, ich sehe keine Prüfung für ein Objekt.

 

Die Zeile IndicatorShortName("CC-STOKS ") wurde entfernt;

Scheint jetzt zu funktionieren.

//------------------------------------------

Ich habe es überprüft.

 string info =ObjectFind("Symbol1+WindowExpertName()");
     IndicatorShortName(info);     

Der Kommentar gibt "-1" zurück.

Und - es spielt keine Rolle, ob der "Alias" vorhanden ist oder gelöscht wurde.

 

Ja, es funktioniert gut...

Vielen Dank an alle, die geholfen und Fragen beantwortet haben!

 

Ich habe schon ein paar Bier getrunken, aber du machst mich wahnsinnig...

klarstellen, was vor sich geht...


oder

1. kein Kurzname und

static int WINDOW = -1;

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( WindowExpertName() );
}

Ihr init() so wie es ist

oder setzen Sie den Kurznamen in Ihrem int()

string short = "CC-STOKS";

int init(){
   IndicatorShortName( short );
   // остальное прочее
}

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( short );
}

und dann beim Zeichnen von Objekten WINDOW als Unterfensternummer verwenden

ObjectCreate(name + WindowExpertName(), OBJ_LABEL, WINDOWS, 0, 0);

sollte die Objektfunktion wie folgt aussehen

void object(string name, int window, string text, color col, int corner,
            int x, int y, bool back = false, int fontsize = 9, 
            string fontname = "Tahoma") {
   if (ObjectFind(name)==-1)      
      ObjectCreate(name, OBJ_LABEL, window, 0, 0);
   ObjectSetText(name, text, fontsize, fontname, col);
   ObjectSet(name, OBJPROP_CORNER, corner);
   ObjectSet(name, OBJPROP_BACK,back);
   ObjectSet(name, OBJPROP_XDISTANCE, x);
   ObjectSet(name, OBJPROP_YDISTANCE, y);     
}

auf diese Weise werden alle Schlüsselattribute als Parameter übergeben, und der Objektname sollte übrigens außerhalb der Funktion gebildet werden ...

 
GUT. Ich gehe Ihre Anweisungen durch ...
 

Guten Tag. Bitte beraten Sie mich.

Ist es möglich, ein Dreieck in das Indikatorfenster zu zeichnen? Wenn ja, wie kann man die Koordinaten festlegen?

Ich kann in der mql-Hilfe keine Möglichkeit finden, die Koordinaten eines Dreiecks festzulegen.

 
Rita:

Guten Tag. Bitte beraten Sie mich.

Ist es möglich, ein Dreieck in das Indikatorfenster zu zeichnen? Wenn ja, wie können die Koordinaten angegeben werden?

Ich kann in der mql-Hilfe keine Möglichkeit finden, die Koordinaten eines Dreiecks festzulegen.


ObjectCreate(имя_объекта, OBJ_TRIANGLE, 0, вершина1_время, вершина1_цена, вершина2_время, вершина2_цена, вершина3_времявершина3_цена);
Falls nicht im Hauptunterfenster, verwenden Sie die entsprechende Unterfensternummer anstelle von 0: https://docs.mql4.com/ru/windows/WindowFind
 


ObjectCreate(name, OBJ_TRIANGLE, WindowFind(WindowExpertName(), Time[-1],vertex1_price,

Zeit[-5],vertex2_price,

Zeit[-7],vertex3_price, );

//--------------------------------------------------------------------------------------------------------------------------

Ich habe die Koordinaten der Dreiecksknoten zeitlich festgelegt (z. B. nach dem Zeitpunkt der Öffnung der zukünftigen Balken). Der Rest ist für mich nicht ganz klar. Es ist nicht der Preis, der auf der Skala des Indikatorfensters angezeigt wird. Es ist die Abstufung der Indikatorwerte.

Ich muss ein Dreieck mit starr fixierten Oberseiten, unabhängig vom Preis, "setzen".

Und vorzugsweise sollte sie fest in der rechten (oder unteren) Ecke angebracht sein.

Und ich weiß nicht, wie ich die Koordinaten seiner Scheitelpunkte - auf der vertikalen Achse der Indikatorskala - festlegen kann: