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
Eine flüchtige Prüfung zeigt, dass es funktionieren sollte. Aber Sie könnten die Effizienz verbessern.
Denken Sie daran, wie viele verschiedene Objekte Sie in Ihrem Diagramm gezeichnet haben. Wenn Sie auf *ein* dieser Objekte klicken, müssen Sie eine Schleife durch jede einzelne Order ziehen und versuchen, eine Übereinstimmung zu finden. Viele Objekte haben wahrscheinlich nichts mit Aufträgen zu tun. Das ist ineffizient.
Deshalb habe ich vorgeschlagen, das erste Zeichen von sparam auf "#" zu überprüfen. Dadurch wird das Objekt automatisch als mit einem Auftrag verbunden identifiziert.
Außerdem ist es nicht nötig, eine Schleife durch die Aufträge zu ziehen. Der Objektname und/oder der Objekttext enthält bereits die Ticketnummer. Extrahieren Sie also die Ticketnummer von dort und schließen Sie den Auftrag
Beispiel:
Sie öffnen einen Auftrag. Er erhält die Ticketnummer 12345
Erstellen Sie einen OBJ_BUTTON mit dem Namen"#12345".
Der Code in OnChartEvent() würde etwa so aussehen (unkompiliert, ungetestet, spät in der Nacht...):
{
int ticket=(int)StringSubstr(sparam,1); // extract the ticket number
if(OrderSelect(ticket,SELECT_BY_TICKET)) // select the order
{
if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,CLR_NONE)) // close the order
{
Print("# Error ",GetLastError());
}
}
}
Wow! Das habe ich nicht gewusst.
Also, du hast es zweimal erwähnt, und genau das habe ich nicht herausgefunden.
Jetzt werde ich es für mich selbst testen und es in meine Haupt-EA-Datei bringen.
Vielen Dank noch einmal.
Ich verwende OrderTicket() für andere Objekte, jetzt sehe ich, wenn ich auf diese Objekte klicke - Bestellung schließen.
Ich mochte Sie Methode, aber sieht aus wie es ist Einfluss andere Objekte.
Andere Objekte heißen so, hier ist eines davon.
Vielen Dank im Voraus.
Ich verwende OrderTicket() für andere Objekte, jetzt sehe ich, wenn ich auf diese Objekte klicke - Bestellung schließen.
Ich mochte Sie Methode, aber sieht aus wie es ist Einfluss auf andere Objekte.
Andere Objekte wie dieses hier sind eines davon.
Vielen Dank im Voraus.
Die elegantere Lösung ist, das Benennungssystem zu ändern.
Trotzdem können Sie die Bestellnummer weglassen. Es kommt nur auf das genaue Benennungsformat an.
Aber zunächst einmal: Was ist der OBJPROP_TEXT der Schaltfläche? Haben irgendwelche anderen Objekte denselben OBJPROP_TEXT?
Die elegantere Lösung ist, das Benennungssystem zu ändern.
Trotzdem können Sie die Bestellnummer weglassen. Es kommt nur auf das genaue Benennungsformat an.
Aber zunächst einmal: Was ist der OBJPROP_TEXT der Schaltfläche? Gibt es andere Objekte, die denselben OBJPROP_TEXT haben?
Yeah! Ich weiß, dass ich die Namen von Button-Objekten ändern kann (ich verwende auch Prefix), wenn ich die Button-Namen ändere, könnte ich viele Dinge ändern, z.B. das Löschsystem und andere Dinge, die alle miteinander verbunden sind.
Unten sind Button und HLine Namen.
"#"+IntegerToString(OrderTicket())+" -"+"Object Button"
(Natürlich sind die Objektnamen ein wenig anders, aber die Methode ist die gleiche)
Vielen Dank im Voraus.
Markt geschlossen
Vielleicht habe ich es gefunden, aber ich bin mir nicht sicher.
Wenn dies nicht gut ist, lassen Sie es mich bitte wissen.
Vielen Dank im Voraus.
//--- 2. Mal bearbeitet
Hey! Mann!
Vielen Dank! Bis jetzt keine Probleme. Funktioniert einwandfrei!
#Crossover-Objekte - Offen
Ich habe mehrmals mit diesem Problem konfrontiert, manchmal habe ich bestanden, manchmal habe ich aufgegeben, jetzt möchte ich nicht noch einmal aufgeben.
Ich habe 2 Objekte " HLine und Button " sie überkreuzen sich, d.h. wenn ich auf eines von ihnen klicke, werden beide ausgewählt, was nicht gut für mich ist. ( BUTTON Breite = 20, HLINE Breite = wie Sie wissen )
F: Was kann ich tun, wenn ich auf das BUTTON-Objekt klicke und das HLINE-Objekt nicht ausgewählt wird, während sie sich überkreuzen, bitte?
(Ich kann einfach HLINE auswählen, wo sie sich nicht überkreuzen)
Vielen Dank im Voraus.
(Ich arbeite daran, jeder gute Kommentar wäre besser, bitte).
#Gewinn in Pips - Offen |#Gewinn in Pips - Vorläufig geschlossen - Ich habe es gelöst
Mr. William- Ich benutze Ihre "Pip, Point ... " Berechnungscodes.
Jetzt versuche ich, den Gewinn in Pips mit den folgenden Codes zu berechnen. Ich habe 2 Orders, eine davon zeigt korrekt an (OP_BUY), die zweite zeigt nicht korrekt an - 399 - eigentlich 400 (OP_SELL).
F: Mache ich bei der Berechnung des Gewinns in Pips etwas falsch, bitte?
Vielen Dank im Voraus.
(ich habe gestern in verschiedenen Foren nachgeschaut - das war nicht hilfreich für mich)
Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien
MetaTrader 4 Build 574 mit aktualisierter MQL4 Sprache und Market of Applications veröffentlicht
whroeder1, 2014.01.27 14:11
Eines der erstaunlichen " if " Operator Beispiele für eine komplexe Bedingung von Herrn William.
Einfach danke!
Ich habe die letzten 2 Tage damit gekämpft, meine komplexe Bedingung mit dem "if"-Operator zu lösen, aber ich konnte mein Problem nicht lösen, bis ich das obige großartige Beispiel gefunden habe.
Bitte helfen Sie mir, ich habe wirklich Mühe, dieses Problem zu lösen.
#296
Vielen Dank im Voraus.
Der untenstehende Code funktioniert manchmal perfekt, manchmal nicht. Ich kann dieses Problem nicht lösen. Wenn ich eine einzelne Bestellung verwende, funktioniert es perfekt, aber wenn ich mehrere Bestellungen öffne, funktioniert diese Funktion nicht richtig.
Bitte helfen Sie mir, und ein wenig mehr erklärt (, dass das, was falsch ist an der unten Code ), die besser für mich sein würde.
(Jetzt arbeite ich daran.)
{
ticketnumber=(int) StringSubstr(sparam,1);
if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
{
if(StringFind(sparam,Button_1,0)>=0)
{
// ...
}
if(StringFind(sparam,Button_2,0)>=0)
{
//...
}
for(i=OrdersTotal()-1; i>=0; i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if(Symbol()!=OrderSymbol()) continue;
update_1();
update_2();
update_3();
}
}
}
Vielen Dank im Voraus.