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)
-   -   Summe der einzelnen Währungspaare im Chart anzeigen (http://www.expert-advisor.com/forum/showthread.php?t=7228)

Frank2404 12.08.22 20:44

Summe der einzelnen Währungspaare im Chart anzeigen
 
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

AVT 12.08.22 23:38

Zitat:

Zitat von Frank2404 (Beitrag 46235)
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.

- Du machst einen Loop über alle laufenden Orders
- 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

Frank2404 13.08.22 17:40

Hi,

danke erst mal für die schnelle Antwort. Klingt komplizierter als ich gedacht habe :D aber immerhin ein kleiner Ansatz.
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 :eek:
Für weitere Vorschläge/Ideen wäre ich natürlich immer zu haben :D

AVT 14.08.22 01:19

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Frank2404 (Beitrag 46237)
Ich versuche mir mal was zusammen zu wurschteln :eek:

Leihe Dir meinen Wurschtel Werkzeugkoffer, fröhliches Werkeln :D
Und Testen nicht vergessen, falls irgendwo ne Schraube fehlt.
AVT

Frank2404 14.08.22 19:49

Zitat:

Zitat von AVT (Beitrag 46238)
Leihe Dir meinen Wurschtel Werkzeugkoffer, fröhliches Werkeln :D
Und Testen nicht vergessen, falls irgendwo ne Schraube fehlt.
AVT

Cool :cool: Dank Dir. Werde ich mir mal anschauen und testen.

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.

Frank2404 22.08.22 14:49

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;
   
}

Das ganze ziehe ich mir als EA in ein leeres Chart und bekomme angezeigt wie viele Trades von den einzelnen Währungspaaren offen sind und wieviel Profit das jeweilige Währungspaar gerade in Summe abwirft (oder eben nicht :D )
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:24 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