Hallo zusammen,
eigentlich sollte das kein Problem sein:
Ich möchte ein Label im 2. Unterfenster platzieren. Mit der Anweisung ObjectCreate an der 3. Position die 2 Eintrage wird das Label trotzdem im 1. Unterfenster platziert.
Danach dachte ich, es ist vielleicht gut die aktuelle Fensternummer auszulesen und in eine Variable zu schreiben. Diese dann in ObjectCreate einsetzen. Keine Änderung, obwohl die Variable richtigerweise mit einer 2 durch WindFind gefunden wurde.
Warum wird die Adressierung des 2. Unterfensters ignoriert) Ich kann übrings eine x-beliebe Nummer dort eintragen - keine Änderung.
Der Screenshot zeigt den Cart und das 1. Unterfenster mit der gelben Beschriftung, ist auch richtig.
Die weiße Beschriftung soll ins 2. Unterfenster, landet aber immer im 1. Unterfenster (UF). Probehalber hab ich das Label mit der gefundenen Variable windowIndex gefüllt. Und siehe, es zeigt eine 2. Aber warum wird dann das Label nicht auch richtigerweise im 2. UF platziert?
ich habs nicht probiert,
aber hast Du es mal mit der ChartID() probiert?
beim setzten des Labels wirst Du ja auch nach der Chart ID gefragt.
- Ich würde ja erst einmal in der Hilfe (tja, immer wieder das gute alte F1) nachschauen, welche Optionen die Funktion ObjectCreate hat!
- Dann würde ich mir die FehlerWerte _LastError (oder so) ansehen und mit dem Debugger durch den Code gehen und mir alle Werte ansehen.
- Den Code sollte man hier mit ALT-S eintragen nicht als Foto.
- Verständnisfrage: Wie viel Fenster hast Du und auf welchem (welcher Nummer) willst Du Dein Objekt platzieren?
- docs.mql4.com
Hallo Carl,
danke für den Hinweis, aber die Beschreibung kann ich mittlerweile singen. Meine Screenshots anscheinend nicht mit übertragen daher der Anhang.
der Codeausschnitt:
int OnInit() { IndicatorShortName("Momentum"); int windowIndex=WindowFind("Momentum"); int ChartID=windowIndex; ObjectCreate(0,"Label", OBJ_LABEL,windowIndex,0,0); ObjectSetInteger(0,"Label", OBJPROP_CORNER,1); ObjectSetInteger(0,"Label", OBJPROP_XDISTANCE,40); ObjectSetInteger(0,"Label", OBJPROP_YDISTANCE,12); ObjectSetText("Label",windowIndex,25,"Tahoma",Lime);
Nochmal der Versuch mit dem Bildschirm Screenshot, nicht als Anhang:
Nochmal der Versuch mit dem Bildschirm Screenshot, nicht als Anhang:
Sag bist Du wirklich im MT5?
Deine Input variablen deuten ja darauf hin, aber
ObjectSetText(...) kennt nichtmal die Doku
Hallo Amando,
es ist MT4. Code übernommen aus diversen veröffentlichten Beispielen.
Noch eine Bemerkung: Ich habe alles möglich für den Wert "WindowIndex" versucht. Es ist völlig egal, was ich da reinschreibe, es landet immer im ersten Unterfenster. Egal ob der Wert 0, 1, 2 oder was auch immer ist.
Nochmal im Anhang den Screenshot des Bildschirms. Einbetten in den Kommentar scheint nicht zu klappen.
Grüße, Dominik
Hallo Amando,
es ist MT4. Code übernommen aus diversen veröffentlichten Beispielen.
Noch eine Bemerkung: Ich habe alles möglich für den Wert "WindowIndex" versucht. Es ist völlig egal, was ich da reinschreibe, es landet immer im ersten Unterfenster. Egal ob der Wert 0, 1, 2 oder was auch immer ist.
Nochmal im Anhang den Screenshot des Bildschirms. Einbetten in den Kommentar scheint nicht zu klappen.
Grüße, Dominik
jetzt bin ich sowieso überfragt, arbeite schon seit ewigkeiten mit mt5, bei mt4 bin ich überfragt
jetzt bin ich sowieso überfragt, arbeite schon seit ewigkeiten mit mt5, bei mt4 bin ich überfragt
nächst Frage, hab ich noch nicht probiert, da ich mir die Labels immer im Hauptfenster anzeigen lasse
hier kann ich dir gerne mal die Funktion geben um ein Label zu erzeugen
bool LabelCreate(const long chart_ID=0,// ID des Charts const string name="",// Name des Labels const int sub_window=0, // Nummer des Unterfensters const int x=0, // X-Koordinate const int y=0, // Y-Koordinate const ENUM_BASE_CORNER corner=CORNER_LEFT_LOWER, // Winkel des Charts zu Binden const string text="", // Text const string font="", // Schrift const int font_size=0,// Schriftgröße const color clr=clrRed, // Farbe const double angle=0.0, // Text Winkel const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // Bindungsmethode const bool back=false, // Im Hintergrund const bool selection=false, // Wählen um zu bewegen const bool hidden=true, // Ausgeblendet in der Objektliste const long z_order=0) // Priorität auf Mausklick { //--- Setzen den Wert des Fehlers zurück ResetLastError(); //--- ein Text-Label erstellen if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0)) { Print(__FUNCTION__, ": Text-Label konnte nicht erstellt werden! Fehlercode = ",GetLastError()); return(false); ;} //--- Die Koordinaten des Schilds setzen ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); //--- wählen die Ecke des Charts, relativ zu der die Punktkoordinaten eingegeben werden ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- den Text setzen ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- Textschrift setzen ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- Schriftgröße setzen ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- Text-Winkel angeben ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); //--- die Bindungsmethode setzen ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); //--- Farbe setzen ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- Im Vordergrund (false) oder Hintergrund (true) anzeigen ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- Aktivieren (true) oder deaktivieren (false) Mausbewegung Modus ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- die erfolgreiche Umsetzung return(true); ;}
ist quasi aus der doku und nur für mich angepasst ,
aufrufen tu ich das ganze dann über
LabelCreate(0,"Profit Total",0,10,20,CORNER_LEFT_LOWER, "D:"+" "+DoubleToString(ProfitDayTotal(),2)+" | "+DoubleToString(ProzentDayTotal(),2)+"%"+ " | W:"+" "+DoubleToString(ProfitWeekTotal(),2)+" | "+DoubleToString(ProzentWeekTotal(),2)+"%"+ " | M:"+" "+DoubleToString(ProfitMonthTotal(),2)+" | "+DoubleToString(ProzentMonthTotal(),2)+"%" ,"Courier",10,White,0,0);
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen,
eigentlich sollte das kein Problem sein:
Ich möchte ein Label im 2. Unterfenster platzieren. Mit der Anweisung ObjectCreate an der 3. Position die 2 Eintrage wird das Label trotzdem im 1. Unterfenster platziert.
Danach dachte ich, es ist vielleicht gut die aktuelle Fensternummer auszulesen und in eine Variable zu schreiben. Diese dann in ObjectCreate einsetzen. Keine Änderung, obwohl die Variable richtigerweise mit einer 2 durch WindFind gefunden wurde.
Warum wird die Adressierung des 2. Unterfensters ignoriert) Ich kann übrings eine x-beliebe Nummer dort eintragen - keine Änderung.
Der Screenshot zeigt den Cart und das 1. Unterfenster mit der gelben Beschriftung, ist auch richtig.
Die weiße Beschriftung soll ins 2. Unterfenster, landet aber immer im 1. Unterfenster (UF). Probehalber hab ich das Label mit der gefundenen Variable windowIndex gefüllt. Und siehe, es zeigt eine 2. Aber warum wird dann das Label nicht auch richtigerweise im 2. UF platziert?