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)
-   -   Anzahl der orders ohne Stopploss und mit Magicnr (http://www.expert-advisor.com/forum/showthread.php?t=6151)

Leopold 19.07.18 10:52

Zitat:

Zitat von Hippo25 (Beitrag 41213)
Ich habe es mal ausprobiert
Habe aber folgende Meldung

return value of 'OrderSelect' should be checked Offenetrades.mq4

Filtert es richtig oder nicht ?

grus Hippo

Hallo!

Ist nicht zwingend notwendig solltest du aber abfragen und in die if-Bedingung einbauen:

Code:

bool Select = OrderSelect(.....)

if (Select == True && OrderSymbol() == Symbol && ...)

Hoffe das ist verständlich.

---Leopold---

Leopold 19.07.18 11:03

Zitat:

Zitat von Hippo25 (Beitrag 41216)
Also
Nochmal den ganzen code
PHP-Code:

int offeneorders=0//Speichert die Anzahl der Orders zur späteren Verwendung
   
int ordersohnestop=0//Speichert die Anzahl der Orders ohne ein Stoploss

   
int anzahlorders=OrdersTotal();

   for(
zaehler=0;zaehler<anzahlorders;zaehler++) // for schleife
     
{
      
OrderSelect(zaehlerSELECT_BY_POSMODE_TRADES); // MODE_TRADES = offene und aufgegebene Orders
       // check offene Positionen, Symbol & MagicNumber
       
if (OrderSymbol()== Symbol())
        {
          if (
OrderMagicNumber()==MagicNumber
            {
               
offeneorders++;

               if ( 
OrderStopLoss() == 
               {
                  
ordersohnestop++;
               }
  
            }
        } 
     }  
        
  
Comment (
              
"Offene Trades: ",offeneorders,"\n"
               "Offen ohne SL: "
,ordersohnestop,"\n"
              
               
               
);   
  }
//+------------------------------------------------------------------+ 

Wie ihr seht - int ordersohnestop = 0; vor der for schleife.
Wo müsste ordersohnestop++ hin ?


gruss
Hippo

Das passt so, traderdoc hat nur die Deklaration gemeint, die stimmt bei dir aber. (int ordersohnestop=0; )
Ich denke er ist auf den Kommentar von MA-EA eingegangen, dort war die Deklaration falsch!

---Leopold---

Leopold 19.07.18 11:12

Vereinfachung des Codes
 
Hallo zur Vereinfachung und Übersichtlichkeit würde ich das ganze so schreiben:

Code:

for(zaehler=0;zaehler<anzahlorders;zaehler++)
    {
      bool Select = OrderSelect(zaehler, SELECT_BY_POS, MODE_TRADES);

      if (Select == True && OrderSymbol()== Symbol() && OrderMagicNumber()==MagicNumber)
        {
        offeneorders++;
        if (OrderStopLoss() == 0) ordersohnestop++;
        } 
    }


---Leopold---

Leopold 19.07.18 11:41

Zitat:

Zitat von MA-EA (Beitrag 41215)
Kenn mich mit den Schleifen nicht so aus. :rolleyes:

Aber fängt er nicht sowieso bei 0 an zu zählen? :confused:

Eine Schleife an sich zählt gar nicht, diese wird solange ausgeführt bis eine Bedingung Diese abbricht.

Ich hoffe ich hab das richtig ausgedrückt.


---Leopold---

traderdoc 19.07.18 12:37

Sorry, ja ich meinte die falsche Deklaration von @MA-EA.

Es reicht aber völlig aus, zu schreiben:

if (OrderSelect(...) ) {
...
}

Falls false, dann wird die gesamte if-Abfrage ignoriert, incl. der if-Abfragen innerhalb der o.g. Abfrage.

traderdoc

Leopold 19.07.18 12:55

Stimmt, aber ich finde am Anfang ist es mit der eigenen deklaration leichter zu verstehn. Zumindest hab ich mir da immer leichter getan.

---Leopold---

Hippo25 19.07.18 15:41

Komplette lösung
 
Ich werde immer die komplette Lösung des Problem hier am Ende anfügen.
Stichworte Filter Selekt select auswahl Order Auftrage Trades Filtern
PHP-Code:

//+------------------------------------------------------------------+
//|                                                 Offenetrades.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


int MagicNumber;
int zaehler;


void OnTick()
  {
//---
   
int offeneorders=0//Speichert die Anzahl der Orders zur späteren Verwendung
   
int ordersohnestop=0//Speichert die Anzahl der Orders ohne ein Stoploss
   
int anzahlorders=OrdersTotal();

   for(
zaehler=0;zaehler<anzahlorders;zaehler++)
     { 
      
bool Select OrderSelect(zaehlerSELECT_BY_POSMODE_TRADES);

      if (
Select == True && OrderSymbol()== Symbol() && OrderMagicNumber()==MagicNumber
        { 
         
offeneorders++; 
         if (
OrderStopLoss() == 0ordersohnestop++; 
        }  
     }
        
  
Comment (
              
"Offene Trades: ",offeneorders,"\n"
               "Offen ohne SL: "
,ordersohnestop,"\n"
              
               
               
);   
  }
//+------------------------------------------------------------------+ 

Danke an alle.

gruss
Hippo


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