![]() |
|
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 |
|
|||
![]()
Hallo liebe Gemeinde,
mir kam da so eine Idee und ich weiß nicht wie ich sie umsetzten kann. Beispiel. Ich habe zwei Order im Währungspaar EUR/USD, beides Buy Positionen. Dazu habe ich 4 Order offen im Währungspaar EUR/AUD. Davon 3 Sellpositionen und eine Buyposition. Die Trades stehen im Moment wie folgt. EUR/USD Buy +2.50€ EUR/USD Buy +1.30€ EUR/AUD Sell + 1.50€ EUR/AUD Sell + 0.80€ EUR/AUD Sell + 0.50€ EUR/AUD Buy - 1.00€ Wie stelle ich es jetzt an, dass mir im Chart EUR/USD +3.80€ EUR/AUD +1.80€ angezeigt wird? Ich hoffe Ihr versteht was ich meine. Ich wäre hier für einige Programmiertechnische Denkanstösse dankbar. Ich bin im Moment auf der Arbeit und konnte daher noch nichts selber ausprobieren. Im Netz bin ich nicht wirklich auf hilfreiche Denkanstösse gestoßen. Schönes und hoffentlich klimatisierte Wochenende wünsche ich Euch |
|
|||
![]() Zitat:
- speicherst das OrderSymbol in einer Hilfsvariablen - siehst nach ob die letzten 3 Buchstaben USD oder AUD sind: - dazu mußt Du in Deinem Fall den Separator "/" bestimmen - Du holst Dir die Position des Separators - und vergleichst, ob der SubString ab der Separatorposition bis Ende - z.B. =="USD" ist, wenn ja addierst Du die OrderProfit (+Commission+Swap) - Am Ende hat Du das Ergebnis für Deine EUR/USD ! Vorsicht, wenn Du mal beabsichtigst, GBP/USD zu handeln, dann mußt Du zusätzlich noch die ersten 3 Buchstaben untersuchen (bei vielen verschieden Paaren ist das Speichern von Ergebnissen in Arrays besser). Ich hoffe, die Wegbeschreibung reicht auf die Schnelle (hab schon alles zu). Schönes Wochenende. AVT |
|
|||
![]()
Hi,
danke erst mal für die schnelle Antwort. Klingt komplizierter als ich gedacht habe ![]() Mein Gedanke war halt, wenn ich viele offene Orders in unterschiedlichen Währungspaaren habe, dann wäre das eine schöne Möglichkeit direkt auf dem Chart zu sehen bei welchen Währungspaaren ich in Summe im Plus liege um dann zu entscheiden, ob ich alle Trades dieses Währungspaares schließe. Ich versuche mir mal was zusammen zu wurschteln ![]() Für weitere Vorschläge/Ideen wäre ich natürlich immer zu haben ![]() |
|
|||
![]()
Leihe Dir meinen Wurschtel Werkzeugkoffer, fröhliches Werkeln
![]() Und Testen nicht vergessen, falls irgendwo ne Schraube fehlt. AVT |
|
|||
![]() Zitat:
![]() Ich hatte jetzt so mit dem Gedanken gespielt, die OrdersTotal auszulesen und die Werte in Arrays zu speichern. Danach dann die Arrays miteinander zu vergleichen und bei identischen Währungspaaren die OrderProfit miteinander zu addieren. War aber auch nur so ein erster Einfall. Ob das funktionieren würde, weiss ich nicht. |
|
|||
![]()
Hier mal mein gewurschtel. Ist nicht die tollste Lösung, funktioniert für mich aber wunderbar.
Code:
//+------------------------------------------------------------------+ //| frank-test-auslesen.mq4 | //| Copyright 2022, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int trade = 0; int wmax = 13; string wah =""; int x = 19; int a = 0; input int Schriftgroesse = 10; string waehrung[] ={"EURUSD","USDCHF","EURGBP","NZDCAD","EURAUD","GBPUSD","AUDCAD","AUDUSD","CADCHF","EURNZD","GBPCHF","USDCAD","EURCHF","XAUUSD"}; struct STradeBSum { int countb; double profitb; double trailPriceb; double profitab; }; void OnTick() { STradeBSum sumB; ObjectCreate ("Bid",OBJ_LABEL,0,0,0); ObjectSet ("Bid",OBJPROP_CORNER,4); ObjectSet ("Bid",OBJPROP_XDISTANCE,10); ObjectSet ("Bid",OBJPROP_YDISTANCE,18); ObjectSetText ("Bid","Währungspaar offene Trades Profit",Schriftgroesse,"Arial",Red); x = 19; a = 0; for ( a = 0; a <= wmax; a++ ){ wah = waehrung[a]; GetSumB(sumB); x = x +30; ObjectCreate ("test"+a,OBJ_LABEL,0,0,0); ObjectSet ("test"+a,OBJPROP_CORNER,4); ObjectSet ("test"+a,OBJPROP_XDISTANCE,14); ObjectSet ("test"+a,OBJPROP_YDISTANCE,x); ObjectSetText ("test"+a," "+wah+" "+trade+" "+DoubleToString(sumB.profitb,2),Schriftgroesse,"Arial",Red); } } //+------------------------------------------------------------------+ //////////////// PROFIT BUY berechnen void GetSumB(STradeBSum &sumB) { sumB.countb = 0; sumB.profitb = 0.0; sumB.trailPriceb = 0.0; sumB.profitb = 0.0; int z = OrdersTotal(); trade = 0; for (int i = z-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ( OrderSymbol()==wah){ trade = trade+1; sumB.countb++; sumB.profitb += OrderProfit()+OrderSwap()+OrderCommission(); if (sumB.trailPriceb ==0 || OrderOpenPrice()<sumB.trailPriceb) { sumB.trailPriceb = OrderOpenPrice(); } } } } return; } ![]() Als nächstes bastel ich mir noch einen Close-Button hinter jedes Währungspaar, so dass ich alle Trades dieses Währungspaares mit einem Klick schließen kann. Wie gesagt, nicht die schönste Lösung. Aber funktioniert und reicht für meine Zwecke |
![]() |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|