|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Frage zur Orderhistory!
Guten Abend Leute,
ihr habt mir letztens Wunderbar geholfen. ..Danke nochmals dafür. Ich habe heute ne frage, wie ich eine Anfrage Starte um nach geiner Verlustserie von bsp. 5 trades die Lotgröße um die hälfte zu verringern. Um dann wieder wenns gut läuft, wieder mit voller Größe zu fahren. Sehe in den englischsprachigen Foren bei den Codes nicht so richtig durch. ..und wollte eigentlich nur was Programmieren was ich auch verstehe. Danke euch im voraus. .. |
|
||||
F9 drücken, andere lotgröße eingeben, order senden ...
Soll das für einen EA sein hänge ihn hier mit dran und ggf. baut Dir jemand eine entsprechende Funktion ein ... Und wenn man richtig sucht dann findet sich auch vieles -> https://www.google.de/#q=get+last+tr...rofit+%2B+mql4 |
|
||||
Dann muß man mal ein wenig googeln/die mql4-Dokumentation lesen (einzelne Befehle nachschlagen/Beispiel-Codes ansehen) ...
|
|
||||
Hm, ich kann den obigen Beitrag nicht mehr editieren, deshalb ein neuer:
Auch die Forensuche kann ergiebig sein, bspw. http://www.expert-advisor.com/forum/...-auslesen.html |
|
|||
In etwa so:
Code:
double GetLot() { int cnt=0; double profit; int ls = 1; double lotmod = Lot; //Lot - initiale LotSize if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) ls = 2; for(i=OrdersHistoryTotal(); i >=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if (OrderSymbol() == Symbol()) { profit = OrderProfit() + OrderSwap() + OrderCommision(); if (profit < 0) cnt++; else break; if (cnt == 5) { lotmode = NormalizeDouble(Lot/2, ls); return(lotmod); } } } } return(lotmod); } |
|
|||
Der Code ist Super....Prima Danke.
|
|
|||
Da ich nicht mehr editieren kann:
for(i=OrdersHistoryTotal(); i >=0;i--) muß korrekterweise lauten: for(int i=OrdersHistoryTotal(); i >=0;i--) oder i wird in der Funktion vorher deklariert! traderdoc |
|
|||
Ja das mit dem deklarieren habe ich gesehen..wie mache aber dann den Befehl in der
Ordersend Funktion das jeweils mit vollem Lot oder nur mit halber Größe die Order geöffnet wird? Hatte jetzt jeweils in meiner Logik nach der History abgefragt ob Profit >0 ...dann Ordersend (..., Lots....) oder Profit <0 dann Ordersend (..., Lots/2,..).Irgendwie macht er jetzt garnichts mehr. |
|
|||
Als externe Variable müßte stehen:
extern double Lot = 0.1; Irgendwo im Programm, wo die Lotzahl abgefragt werden soll, steht dann lot = GetLot(); //Achtung auf die Schreibweise von lot! und vorher deklarieren mit double Und dann wird in die Funktion OrderSend() an der richtigen Stelle die Variable lot eingefügt. Und auch auf die Variablenbezeichnungen achten. Wenn bei Dir Lots steht, dann mußt Du meinen Code mit dem s anpassen, oder Du passt Deine externe Variable an den Bezeichner Lot an! Sonst läuft nix! Fertig! traderdoc |
|
|||
So nun nochmal den Code ohne Fehlerchen:
Code:
double GetLot() { int cnt=0; double profit; int ls = 1; double lotmod = Lot; //Lot - initiale LotSize if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) ls = 2; for(int i=OrdersHistoryTotal(); i >=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if (OrderSymbol() == Symbol()) { profit = OrderProfit() + OrderSwap() + OrderCommision(); if (profit < 0) cnt++; else break; if (cnt == 5) { lotmod = NormalizeDouble(Lot/2, ls); return(lotmod); } } } } return(lotmod); } |
Lesezeichen |
Stichworte |
historie, history, mql4, orderhistorie, orderhistory, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|