Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 727
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Können Sie mir sagen, wie ich ein Objekt auswählen kann, wenn es erstellt wird, so dass es seine Auswahl nicht verliert und sich nicht selbst auswählt, wenn der Benutzer die Auswahl aufhebt. In der vierten Runde war es einfach, aber in der fünften Runde geht es nicht mehr.
Das war früher so, und es hat gut funktioniert:
if(ObjectFind(chart_ID,nm)!=0) {
ObjectCreate(chart_ID,nm,OBJ_HLINE,0,0,0);
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
...
}
ObjectSetDouble(chart_ID,nm,OBJPROP_PRICE,p);
}
Wie Sie sehen können, können wir beim Erstellen das zu erstellende Objekt sofort auswählen oder nicht auswählen und es wird sich nicht mehr ändern und es wird keine Referenz darauf geben, aber beim fünften Objekt funktioniert es nicht, es wird ohne Auswahl erstellt.
Wie kann man mql5 so gestalten, dass das Objekt bei der Erstellung ausgewählt werden kann und dann bei Bedarf manuell verwaltet werden kann - auswählen/nicht auswählen
Nun, das ist es, aber das Symbol fällt nicht auf.
if(ObjectFind(0,nm)!=0) {
ObjectCreate(0,nm,type==0?OBJ_ARROW_BUY:OBJ_ARROW_SELL,0,0,0);
ObjectSetInteger(0,nm,OBJPROP_COLOR,col);
ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);
ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
ObjectSetString(0,nm,OBJPROP_TOOLTIP,tooltxt);
}
ObjectSetDouble(0,nm,OBJPROP_PRICE,p);
ObjectSetInteger(0,nm,OBJPROP_TIME,t);
}
Ja, aber das Symbol ist nicht hervorgehoben.
if(ObjectFind(0,nm)!=0) {
ObjectCreate(0,nm,type==0?OBJ_ARROW_BUY:OBJ_ARROW_SELL,0,0,0);
ObjectSetInteger(0,nm,OBJPROP_COLOR,col);
ObjectSetInteger(0,nm,OBJPROP_SELECTED,true);
ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
ObjectSetString(0,nm,OBJPROP_TOOLTIP,tooltxt);
}
ObjectSetDouble(0,nm,OBJPROP_PRICE,p);
ObjectSetInteger(0,nm,OBJPROP_TIME,t);
}
Alles ist hervorgehoben:
Alles fällt auf:
Mir ist eine merkwürdige Eigenschaft aufgefallen: Wenn man es so einstellt, werden die Zeilen nicht hervorgehoben, wenn man sie erstellt
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
Wenn Sie aber das Gegenteil tun, dann gibt es kein Problem mit der Auswahl:
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
Aus irgendeinem Grund ändert das Ersetzen von Summanden die Summe?
Mir ist eine merkwürdige Eigenschaft aufgefallen: Wenn man es so einstellt, werden die Zeilen nicht hervorgehoben, wenn man sie erstellt
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
Wenn Sie aber das Gegenteil tun, dann gibt es kein Problem mit der Auswahl:
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
Aus irgendeinem Grund verändert das Ersetzen von Summanden die Summe?
Offensichtlich, wenn
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
letzten Befehl, wird die Karte aktualisiert
Mir ist eine merkwürdige Eigenschaft aufgefallen: Wenn man es so einstellt, werden die Zeilen nicht hervorgehoben, wenn man sie erstellt
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
Wenn Sie aber das Gegenteil tun, dann gibt es kein Problem mit der Auswahl:
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
Aus irgendeinem Grund verändert das Ersetzen von Summanden die Summe?
Dann wählen Sie es aus (aber das Objekt ist nicht auswählbar), folglich wird nichts ausgewählt
Dann stellen Sie sie als auswählbar ein. Aber es ist "zu spät, den Borjomi zu trinken" ...
Hier ist also der vollständige Code:
string tooltxt="",bool sel=false,bool back=false) {
if(ObjectFind(chart_ID,nm)<0) {
ObjectCreate(chart_ID,nm,OBJ_VLINE,0,tm,0);
ObjectSetInteger(chart_ID,nm,OBJPROP_TIME,tm);
ObjectSetInteger(chart_ID,nm,OBJPROP_BACK,back);
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,sel);
// ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,true);
ObjectSetString(chart_ID,nm,OBJPROP_TOOLTIP,tooltxt);
ObjectSetInteger(chart_ID,nm,OBJPROP_COLOR,cl);
ObjectSetInteger(chart_ID,nm,OBJPROP_WIDTH,wd);
ObjectSetInteger(chart_ID,nm,OBJPROP_STYLE,st);
}
}
Ja, ich habe es bei allen Objekttypen überprüft, und Sie müssen zuerst"SELECTTABLE" und dann"SELECTED" eingeben.
Vielen Dank für Ihre Teilnahme und Ihre Hilfe bei der Lösung des Problems!
Kann ich vorschlagen, dass ich 1. benutzerdefinierte Indikatoren in 1 Block hinzufügen kann? Wenn ja, wie soll ich das tun?
2. Ist es möglich, den Code so zu korrigieren, dass die Geschäfte in beide Richtungen geöffnet werden (jetzt, zum Beispiel, wenn ein Kaufgeschäft geöffnet wird, wird das Verkaufsgeschäft nicht geöffnet, bis das Kaufgeschäft geschlossen ist)