![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Rundet MathFloor Nachkommastellen auf die nächste GANZE Zahl ab?
MathFloor() tut, was in der Dokumentation steht ... "Die Funktion MathFloor gibt einen numerischen Wert zurück, der die größte ganze Zahl darstellt, die kleiner oder gleich x ist."
Macht FirstTarget als benutzerdefinierter Parameter innerhalb von "OrderClose()" Sinn - vorausgesetzt "sizeClose" war korrekt? (siehe zitierten Code)
Nein ... Sie haben das hier:
wenn Sie wahrscheinlich dies meinen ...
FirstTarget = OrderOpenPrice() + ( ( OrderTakeProfit()-OrderOpenPrice() ) / 2 ) ;
Verwenden Sie Klammern (und Leerzeichen), um die Dinge klar und eindeutig zu machen.
Ihr Code hat nicht geholfen - sorry.
Warum? Ist das falsch? Inwiefern?
Können Sie benutzerdefinierte Variablen drucken? Wenn ja, muss ich etwas falsch machen, da es im Journal nicht angezeigt wird.
Ja, Sie können beliebige Variablen ausgeben. . was tust du? zeige deinen Code.
In Bezug auf das Drucken von benutzerdefinierten Variablen, wie würde ich über tun dies für "FirstTarget_Buy" gehen?
Ich werde einige Zeit damit verbringen, meinen gesamten Code durchzugehen und eine Menge auszudrucken - ich weiß, wie man es mit bools und ints macht (Integer -1 schlägt fehl und bool ist eine wahre oder falsche Aussage - einfach.), aber ich verstehe nicht, wie man es macht, wenn man einer benutzerdefinierten Variablen Funktionen zuweist?
Danke für die Aufklärung der obigen "FirsTarget"-Formel! Entschuldigung, ich wollte sagen, dass Ihr Code nicht hilfreich ist, weil ich nicht verstehe, wie man die Formel zusammensetzt... Ich finde es wirklich kontraintuitiv - Man sollte meinen, dass der Aufruf von "OrderSelect" es Ihnen ermöglichen würde, einfach zu sehen, was die Losgröße auf dieser Tickorder war... und sie dann einfach zu teilen...
Tut mir leid, dass ich wie ein kompletter Schwachkopf rüberkomme!
Tut mir leid, dass ich wie ein Vollidiot rüberkomme!
Ganz und gar nicht, Sie müssen nur Ihren blinden Fleck finden und ihn aufklären. Sobald Sie das getan haben, werden Sie sich fragen, warum Sie es so schwer fanden, alles ist einfach, wenn man weiß, wie es geht.
Was das Drucken von benutzerdefinierten Variablen angeht, wie würde ich das für "FirstTarget_Buy" machen?
Ich werde einige Zeit damit verbringen, meinen gesamten Code durchzugehen und eine Menge auszudrucken - ich weiß, wie man es mit bools und ints macht (Integer -1 schlägt fehl und bool ist eine wahre oder falsche Aussage - einfach), aber ich verstehe nicht, wie man es macht, wenn man einer benutzerdefinierten Variablen Funktionen zuweist?
Ich wollte damit sagen, dass Ihr Code in dem Sinne nicht hilfreich ist, dass ich nicht verstehe, wie man die Formel zusammensetzt... Ich finde es wirklich kontraintuitiv - Sie hätten gedacht, dass der Aufruf von "OrderSelect" es Ihnen ermöglichen würde, einfach zu sehen, was die Losgröße auf dieser Tickorder war... und sie dann einfach zu teilen...
Sie können einfach OrderSelect die Reihenfolge, die Verwendung OrderLots() und dividieren durch zwei ... Sie können das tun, und in vielen Situationen wird es funktionieren. Ich schreibe Code für alle Fälle, die ich vorhersehen kann, damit ich ihn nicht ständig korrigieren muss, wenn er nicht funktioniert...
Wenn Ihre Positionsgröße 2,0 Lots beträgt, ist das geteilt durch zwei 1,0 Lots, und das wird funktionieren...
Wenn Ihre Positionsgröße 0,3 Lots beträgt, ist dies geteilt durch zwei 0,15 Lots und dies ist eine ungültige Positionsgröße, wenn MODE_LOTSTEP 0,1 ist... Sie können 0,1 oder 0,2 NICHT 0,15 verwenden, also müssen Sie diese Prüfung und Anpassung codieren.
Was Sie hier haben, wird nicht in allen Fällen funktionieren...
Ahhhh! Ich habe gerade die letzten 15-20 Minuten damit verbracht, Drucke überall zu verteilen - ich beginne zu verstehen, was ich falsch mache. Ich wähle grundsätzlich den PENDING-Auftrag aus... JEDOCH, da es sich um eine schwebende Order handelt, besteht zu dem Zeitpunkt, an dem ich sie auswähle, eine ziemlich hohe Wahrscheinlichkeit, dass sich die OrderLots, der Stop und die Ziele geändert haben, weshalb ich sie in eine Schleife einfügen muss, um sie mit meinen schwebenden Orders zu synchronisieren, die ständig berechnet werden, bevor sie ausgelöst werden.
Diese verflixte doubletostr :P - Spot on RaptorUK! Ich kann jetzt sehen, dass dies korrekt berechnet wird, dank Ihrer Anpassung :)
Ich glaube, ich weiß jetzt, wie ich das meiste machen kann. Nur aus Neugierde, welche "if"-Anweisung würde funktionieren, um NUR den Auftrag aufzurufen, der ausgelöst wurde. Im Moment rufe ich sie auf, wenn ich eine Marktorder offen habe, aber ich versuche herauszufinden, wie ich sie aufrufe, wenn die Pending Order ausgelöst wurde?
Der Code unten und die entsprechende "if"-Anweisung scheint nur auf offene schwebende Aufträge zu rufen. Ich möchte nur eine Möglichkeit finden, eine bestimmte benutzerdefinierte Funktion (z. B. void) auf der Grundlage einer ausgelösten Order aufzurufen? (wenn das Sinn macht!)
Danke, dass Sie so viel für mich geklärt haben :)
Ahhhh! Ich habe gerade die letzten 15-20 Minuten damit verbracht, Drucke überall zu verteilen - ich beginne zu verstehen, was ich falsch mache.
Einfach, wenn Sie wissen, wie![](https://c.mql5.com/mql4/forum/2013/07/rofl_3.gif)
Ich denke, ich weiß jetzt, wie ich das meiste machen kann. Nur aus Neugierde: Welche "if"-Anweisung würde funktionieren, um NUR den Auftrag aufzurufen, der AUSGELÖST wurde? Im Moment rufe ich sie auf, wenn ich einen Marktauftrag geöffnet habe, aber ich versuche herauszufinden, wie ich sie aufrufe, wenn der schwebende Auftrag ausgelöst wurde?
Wenn eine Pending Order ausgelöst wurde, wird sie zu einem OP_BUY oder OP_SELL, also ...
if(OrderType() == OP_BUY || OrderType() == OP_SELL) { }
Ein Tipp: Verwenden Sie mehr Leerzeichen ... wenn Sie einen Fehler bei der Division durch Null erhalten und herausfinden wollen, wo er auftritt, ist es einfach, nach Leerzeichen zu suchen und nur Ihre Divisionen zu finden, anstatt all Ihre Kommentare ... Ich verwende also Leerzeichen um = + - / % usw.
Guter Tipp - werde ich machen! Vielen Dank für deine Hilfe :) Ich melde mich, wenn ich es geschafft habe!
Ich erhalte keine Informationen über die Drucke? Im Journal taucht absolut nichts auf. Ich nehme an, dass dies daran liegt, dass in der ersten "if"-Anweisung nichts ausgewählt wird, was den OrderType betrifft. Von dem, was ich hier im Code sehen kann, hätte ich gedacht, dass ich zumindest nicht weit davon entfernt bin...?
Okay, ich bin wieder da! ... Allerdings gibt es keine guten Nachrichten - ich habe mehrere Varianten des Codes ausprobiert und getestet, ohne Erfolg. Das ist mein momentaner Stand der Dinge.
Ich erhalte keine Informationen über die Ausdrucke? Im Journal taucht absolut nichts auf. Ich nehme an, dass dies daran liegt, dass in der ersten "if"-Anweisung nichts ausgewählt wird, was den OrderType betrifft. Von dem, was ich hier im Code sehen kann, hätte ich gedacht, dass ich zumindest nicht weit davon entfernt bin...?
Wie wählen Sie den Auftrag aus, bevor Sie dies tun?
if(OrderType() == OP_BUY ){
Sie haben hier immer noch Probleme
Warum nicht . . .
2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: Order Select returned the error of 0 // Not sure what is going on here? 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000 // This is the right calculation based // upon the total lots opened on a pending order - to half. 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931 // This price is also correct.