Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Gewinn prüfen (http://www.expert-advisor.com/forum/showthread.php?t=1759)

enni01 13.12.11 13:38

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

JoeDormann 13.12.11 18:21

Zitat:

Zitat von enni01 (Beitrag 6924)
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

Gibt es.
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

Bobs 14.12.11 06:11

Gewinn prüfen
 
OrderProfit(); AccountProfit();

enni01 14.12.11 10:24

Danke :)
mal schauen ob ich was damit anfangen kann.

Programmierer 14.12.11 22:41

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());

JoeDormann 15.12.11 22:32

Genauso gehts ;)
Das ganze in eine Schleife für alle Positionen und fertig.

forex2006 17.12.11 11:48

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


Programmierer 19.12.11 13:59

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