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

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/metatrader-4/programmierung-mql4/)
-   -   History Select (http://www.expert-advisor.com/forum/metatrader-4/programmierung-mql4/6493-history-select.html)

MIMO 30.08.19 17:19

History Select
 
Hallo,

ich versuche aus der History, Order mit bestimmenten Comment zu selektieren.
Es gibt genau 2 Positionen, welche im Profit geschlossen wurden, aber es werden keine Ergebnisse angezeigt.
Es soll das Ergebnis (+/-) von Profit, Loss, Swap, Commission ausgegeben werden

Habe es mit allen Varianten durch probiert.
Jemand eine Idee die mich weiterbringt, besten Dank

Mimo

HTML-Code:

  double PairHistoryProfitLossCalc(){
  double bapairprofitloss=0,babuyprofit=0,basellprofit=0;
  for(cnt=0;cnt<OrdersTotal();cnt++){
    if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==111 && StringFind(OrderComment(),"111",0))
      if(OrderType()==OP_BUY )babuyprofit=babuyprofit+OrderProfit()+OrderSwap()+OrderCommission();
      if(OrderType()==OP_SELL)basellprofit=basellprofit+OrderProfit()+OrderSwap()+OrderCommission();
        bapairprofitloss=babuyprofit+basellprofit;
  }
  return(bapairprofitloss);
 }


traderdoc 30.08.19 17:42

Nun, dann schreibe mal statt:

for(cnt=0;cnt<OrdersTotal();cnt++){

die Zeile:

for (cnt = 0 ; cnt < OrdersHistoryTotal(); cnt++) {

traderdoc

MIMO 30.08.19 18:53

Du hast vollkommen recht! Danke! Zuviel Arbei, zuwenig Schlaf...

Aber die Summe die nun rauskommt entspricht nicht der Summe in der History für das Symbol + Magic,
erschwerend kommt hinzu wenn ich statt 111 z.B. 777 (ist nirgendwo im Einsatz) kommt die selbe Summe raus, eigentlich müßte es "0", denn es gibt weder als Magic noch im Comment die "777".

Mimo

AVT 30.08.19 19:33

Zitat:

Zitat von MIMO (Beitrag 42793)
Aber die Summe die nun rauskommt entspricht nicht der Summe in der History für das Symbol + Magic,
erschwerend kommt hinzu wenn ich statt 111 z.B. 777 (ist nirgendwo im Einsatz) kommt die selbe Summe raus, eigentlich müßte es "0", denn es gibt weder als Magic noch im Comment die "777".

So auf die Schnelle fehlt mir ne Klammer um die beiden if OrderType()==xxx.
AVT

Max2018 24.09.19 17:36

Hallo,
ich bin an dem selben Problem. Gibt es eine Lösung zu dem Ansatz hier?
Code:


void Historie()
{
   
  double bapairprofitloss=0,babuyprofit=0,basellprofit=0;
  int cnt;
  for(cnt=0;cnt<OrdersHistoryTotal();cnt++)
  {
    if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magicnummer)
      if(OrderType()==OP_BUY )babuyprofit=babuyprofit+OrderProfit()+OrderSwap()+OrderCommission();
      if(OrderType()==OP_SELL)basellprofit=basellprofit+OrderProfit()+OrderSwap()+OrderCommission();
        bapairprofitloss=babuyprofit+basellprofit;
Print("Gewinn fuer Magicnr",Magicnummer,": ",bapairprofitloss);
  }
 }


traderdoc 24.09.19 19:41

Was soll denn gelöst werden?

traderdoc

MA-EA 24.09.19 19:46

Fehlen da nicht ein paar { und } ?

https://docs.mql4.com/trading/orderselect

AVT 24.09.19 20:27

Zitat:

Zitat von Max2018 (Beitrag 42864)
Hallo,
ich bin an dem selben Problem. Gibt es eine Lösung zu dem Ansatz hier?

Ein TestScript, wir haben hier keine MagicNummer, darum habe ich Deine Zeile geändert
Code:

// ===================================================================
void OnStart()
{
  Historie();
}
// ===================================================================
void Historie()
{
   
  double bapairprofitloss=0,babuyprofit=0,basellprofit=0;
  int cnt;
  for(cnt=0;cnt<OrdersHistoryTotal();cnt++)
  {
    if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
    //if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magicnummer)
    if(OrderSymbol()==Symbol() )                                                // FürAlleOrdersDisesSymbols
    {
      if(OrderType()==OP_BUY )
          babuyprofit=babuyprofit+OrderProfit()+OrderSwap()+OrderCommission();  //AlleBuysSummieren
      if(OrderType()==OP_SELL)
          basellprofit=basellprofit+OrderProfit()+OrderSwap()+OrderCommission(); //AlleSellsSummieren
    }
  }
  bapairprofitloss=babuyprofit+basellprofit;                                    //SummenAddieren
  Print("Gewinn gesamt: ",DoubleToStr(bapairprofitloss,2)," €");                //UndMelden
}

Du hast 2 Operationen auf dem OrderSymbol durchzuführen: die Buys und die Sells zu summieren, also müssen die in Klammern gefaßt werden. AVT

Max2018 25.09.19 00:18

Danke - werde ich gleich mal testen. Wenn Du nix mehr hörst hat´s geklappt

:D
:D


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:22 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2020 vbdesigns.de
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum