Gewinn prüfen
Gibt es einen Befehl bei dem der EA prüft ob eine Trade im Gewinn oder im Verlust ist?
Ich möchte eine Aktion ausführen, aber nur wenn der Trade im Gewinn ist. Gruß Enrico |
Zitat:
Position öffnen und die Methoden für Kosten und Gewinn aufrufen. Addieren und sehn was übrig bleibt ;) Noch einfacher ist es einfach festzustellen, ob das Equity größer als die Balance ist. Gruß Joe |
Gewinn prüfen
OrderProfit(); AccountProfit();
|
Danke :)
mal schauen ob ich was damit anfangen kann. |
wenn man den G/V einer einzelnen Position überprüfen möchte, muss man sie zuerst per OrderSelect(..) selektieren und dann ein paar Werte addieren, OrderProfit() reicht für eine korrekte Berechnung nicht.
Hier meine Methode für die Berechnung: double profit = (OrderProfit() + OrderSwap() + OrderCommission()); |
Genauso gehts ;)
Das ganze in eine Schleife für alle Positionen und fertig. |
hallo leute
ich bin leider anfänger beim MT4 programmieren und hätte da mal eine frage an die spezialisten weils zu diesem thema passt - ich hab da tage rumgemurckst und ich denke das ich wieder ein wenig zu kompliziert denke als es ist.......ein rätsel ist mir auch wann verwende ich eine variable im globalen, im start() oder im init() bereich - vielleicht liegt da der fehler?? ziel wäre grundsätzlich: montag 0 uhr zähler auf NULL setzen , alle gewinne bis einschließlich freitag 0 uhr aufaddieren und am montag wieder auf 0 setzen usw. ich hab vor einigen tagen versucht einen "laufenden" einen "täglichen" und "wöchentlichen" gewinn zu ermitteln jedoch ist mir das nur bei dem "laufenden" und "täglichen" gelungen , jedoch wöchentlich geht das nicht .....hat jemand eine idee - hilfe oder tips wäre super... so wie in meinem beispiel unten kommt jedenfalls schrott raus und da hab ich schon sehr viele möglichkeiten probiert..... bei mir sieht das etwas so aus: for(int j=0; j<totalorders;j++) { if(OrderSelect(j, SELECT_BY_POS, MODE_HISTORY) && (OrderMagicNumber()==MagicNumber)) { if(OrderType()==OP_BUY) {HistAnzBuys++ ;HistBuyProfit +=OrderProfit();} if(OrderType()==OP_SELL){HistAnzSells++;HistSellPr ofit+=OrderProfit();} if(TimeDay(OrderCloseTime())==Day()) { if(OrderType()==OP_BUY) {DailyHistAnzBuys++ ;DailyHistBuyProfit +=OrderProfit();} if(OrderType()==OP_SELL){DailyHistAnzSells++;Daily HistSellProfit+=OrderProfit();} } if(TimeDayOfWeek(OrderCloseTime())==DayOfWeek()) if(DayOfWeek()>=1 && DayOfWeek()<=5) { if(DayOfWeek()==1 && Hour()==0 && Minute()==1){WeeklyHistAnzBuys=0;WeeklyHistAnzSell s=0;WeeklyHistBuyProfit=0.0;WeeklyHistSellProfit=0 .0;} else if(OrderType()==OP_BUY) {WeeklyHistAnzBuys++ ;WeeklyHistBuyProfit +=OrderProfit();} if(OrderType()==OP_SELL){WeeklyHistAnzSells++;Week lyHistSellProfit+=OrderProfit();} } für hilfe wäre ich sehr dankbar vielen dank gü |
Hi,
grundsätzlich bist du mit solchen Fragen hier im Forum richtig. M.E. würde das Problem auch locker zu nem eigenen Thread taugen, aber verschieben kann ichs ja nicht :) Also deiner Herangehensweise ist nicht gerade die direkteste. Wenn ich dich recht verstehe, willst du doch einfach nur die Gewinne der aktuellen Woche zusammenrechnen, oder? Das kannst du machen, indem du nur die Orders einbeziehst, die nach dem letzten Sonntag geschlossen wurden. Erster Schritt ist also, das Datum für den letzten Sonntag zu finden. Dann G/V aller folgenden Orders addieren. Ich weiß nicht, ob es der Fehler ist, den du suchst: aber nach dem letzten "else" solltest du mal schauen: Das else führt das folgende If-Statement aus, das direkt darunter aber nicht! Die leere Zeile, die du nach dem else gelassen hast, wird vom Compiler ignoriert! |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:31 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum