|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
MQL4 Starthilfe
Sehr geehrte Damen und Herren,
ich möchte gerne in diesem Thread Fragen stellen um MQL4 überhaupt erstmal in seinem Aufbau zu verstehen. Es geht mir bei allen Fragen nicht darum den richtigen Code an sich zu kriegen sondern vorallem darum zu verstehen, warum und wieso etwas funktioniert oder nicht funktioniert. Vermutlich werdet ihr euch bei einigen Fragen an den Kopf fassen, seht es mir nach. Frage 1 Ich möchte überprüfen, wieviele Orders im Markt sind, und einen Kommentar oben Links im Chart ausgeben, wenn die Orderanzahl größer oder gleich 1 sind. Ich möchte also KEIN Kommentar wenn die Orderanzahl 0 ist. Code:
void OnTick() { int Anzahl = OrdersTotal(); if(Anzahl>=1); { Comment ("eine Order"); } } Wo liegt mein Denkfehler? |
|
|||
Na ja, nun ist ein ; zu viel an Bord.
Code:
void OnTick() { int Anzahl = OrdersTotal(); if (Anzahl >= 1) { Comment ("eine Order"); } } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke Doc, ich hab gehofft das du dich hier beteiligt..
Dann war nur ein ; zuviel... das lässt mich hoffen. Ich möchte nun den Code von oben etwas ausbauen. Dafür habe ich den Code so umgestellt das bei OrdersTotal == 0 das Comment "keine Order" ausgegeben wird, und "Order", sobald eine besteht. Um dieses Meisterwerk zu testen möchte ich wieder per if Bedingung, eine Buy Order setzen wenn wie oben, der OrdersTotal == 0. Ich möchte also immer wenn KEINE Order besteht eine senden. Code:
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { int Anzahl = OrdersTotal(); if (Anzahl == 0) { Comment ("keine Order"); } else Comment ("Order"); if (Anzahl == 0) { int OrderSenden = OrderSend(NULL,OP_BUY,0.1,Ask,10,100,200,NULL,12,0,clrGreen); } } Wo liegt der Fehler? MfG Lampe |
|
|||
//Update zur vorherigen Frage
Ich habe die Fehler gefunden. 1. viel mir auf das ich beim StoppLoss das "-" Zeichen vergessen habe Das brachte jedoch noch nicht den gewünschten Erfolg. 2. viel mir auf das ich bei SL und TP auch den Wert dazu schreiben muss von wo die Werte berechnet werden müssen. Die korrekte OrderSend Zeile lautet also wie folgt: Code:
int OrderSenden = OrderSend(NULL,OP_BUY,0.1,Ask,10,Ask-100,Ask+200,NULL,12,0,clrGreen); Feierabend. MfG Lampe |
|
|||
Sehr geehrte Damen und Herren,
heute möchte ich mich mit einer weiteren allgemeinen Frage an euch richten und hoffe, auf deine, Mithilfe.. Ich habe Verständnisprobleme was das bearbeiten von Orders angeht, und benötige einen Denkanstoß. Nehmen wir an ich habe 2 StopOrders gesetzt, eine Buy_Stop und eine Sell_Stop. Und möchte nun, sobald eine der beiden Orders ausgelöst wird, die jeweilige andere Stop_Order löschen. Das sieht wie folgt aus: Zitat:
Kannst du, mir bitte einen kurzen Anstoß geben wie ich von diesem Punkt aus weiter machen kann? Hilfreich wäre auch eine kurze einfache Beschreibung der OrderSelect Funktion. Ich bin für jeden Ratschlag dankbar. MfG Lampe |
|
|||
moin,
würd sagen das du einfach die Orders nach dem Typ abfragst und das Ergebnis mit nem Bool wert ausgibst, sobald eine von denen keine Limit oder Stoporder ist, kannst du die bestehende dann eben löschen...du musst die Orders nicht zwingend in eine Variable speichern, bei der Ordererstellung kann man auch einen Kommentar zu der jeweiligen Order setzten. Dann fragst du einfach die OrderComment() ab und wenn einer fehlt ,die LimitStop Order auswählen und dann löschen, so grob gesagt... |
|
|||
Hallo Trader666,
vielen Dank für deine Antwort. Ich hab mich zwischenzeitlich auch weiter eingelesen und denke ich werds hin bekommen. Jedenfalls bin ich guter Hoffnung. Bis hierher erstmal Dankeschön! Feierabend. Mit freundlichen Grüßen Lampe |
|
|||
Sehr geehrte Damen und Herren,
heute möchte ich mich mit einer sehr einfachen Frage an euch wenden und hoffe, du nimmst dir kurz die Zeit, für eine Antwort. Folgendes: Wenn ich im Strategietester, eine Strategie Backteste und das Journal aufrufe, gibt er mir dort verschiedene Informationen. Es gibt ganz linkt beispielsweise ein rotes Dreieck das für einen Error steht und somit einen Fehler anzeigt. Es gibt aber auch ein gelbes Dreieck wie beispielsweise in folgender Zeile: Code:
Gelbes Dreieck! 2018.01.09. 12:03:15.322 2018.01.05. 22:57:30 Tester:order#7 is closed Dient diese Zeile und das gelbe Dreieck mit Ausrufezeichen lediglich dazu mich über eine Ausführung zu Informieren? In diesem Fall hätte es keine weitere Bedeutung für mich. Oder ist diese Zeile ebenfalls ein Hinweis darauf, das irgendwie in irgendeiner Form, ein Fehler aufgetreten ist? Ich würde mich über eine kurze Antwort von dir sehr freuen. MfG Lampe |
|
|||
Ich habe eine weitere Frage.
Für eine For Schleife wird häufig folgende Zeile verwendet: Zitat:
Das i–– am Ende besagt doch das man jeweils um eins herunterzählt, aber wieso verringert man bereits am Anfang die Orderanzahl um -1? Wäre sehr nett wenn mir jemand die Frage kurz beantworten könnte. Mit freundlichen Grüßen Lampe |
|
|||
OrdersTotal -1
Hi Lampe,
der Grund für die "-1" in dem Ausdruck Code:
for (int i = OrdersTotal()-1; i >= 0; i--) Wenn Du also 5 Orders im Markt hast, dann haben die die Indexnummer 0,1,2,3 und 4. Die Anzahl der Orders ist aber 5. Beim Herunterzählen fängst Du also mit 4 an und hörst bei 0 auf. Deshalb die -1. Ähnliches gilt auch für frei definierte Arrays, IndexBuffers, TimeSeries, etc. Cheers, mocwoc |
Lesezeichen |
Stichworte |
hilfe, lernen, mql4, mql4 aufbau, mql4 hilfe, mql4 lernen, programmierung, programmierung metatrader, programmierung mql4, starthilfe |
|
|