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)
-   -   Offene Postitionen automatisch zu bestimmter Zeit schliessen (http://www.expert-advisor.com/forum/showthread.php?t=6216)

ForexMax 23.09.18 11:41

Offene Postitionen automatisch zu bestimmter Zeit schliessen
 
Liste der Anhänge anzeigen (Anzahl: 3)
Geschätzte Forengemeinde,

ich habe meinen EA nach dem Muster des Beitrages

http://www.expert-advisor.com/forum/...chliessen.html

wie folgt erweitert:

Code:

//----------------------------------Close all at the End Of Day
extern bool ClosePosAllEndOfDay = false;
extern int  close_pos_hour =21;
extern int  close_pos_min = 56;

int zaehler;

int CurrentTime;
/////////////#################################### Close all Position at the End of Day
void closeAtStopTime()
 {
 

  int pAsk=0;
  int pBid=0;

 
  Print("Zeit ", Hour(), ":", Minute(), " = ", close_pos_hour, ":", close_pos_min);
if ((Hour()==close_pos_hour && Minute()>=close_pos_min) && (ClosePosAllEndOfDay=true) )
  {
      Comment("\nschliesse alle offenen Orders");
      for (int j=OrdersTotal()-1; j>=0; j--)
      {
        Comment("\nSchleifendurchlauf: " + j);
        if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
        {
          Comment("\nOrderSelect erfolgreich, pruefe magic:" + OrderMagicNumber() + " = " + magic + "?");
          if (OrderMagicNumber()==magic)
            {
            if (OrderType()==OP_BUY)
              {
              pBid=MarketInfo(OrderMagicNumber(), MODE_BID);
              OrderClose(OrderTicket(),OrderLots(),pBid,3,CLR_NONE);
            }
            if (OrderType()==OP_SELL)
            {
              pAsk=MarketInfo(OrderMagicNumber(), MODE_ASK);
              OrderClose(OrderTicket(),OrderLots(),pAsk,3,CLR_NONE);
            }
          }
        }
      }
  }

}

Weshalb werden zur angegebene Zeit im Strategietester die offenen Positionen nicht geschlossen!!
Mir ist auch aufgefallen, daß im Journal beim Zeitabgleich nie die Zeit zum Vergleich zur Vorgegeben close_pos-hour aufscheint.

Danke im Voraus für eure Hilfe.
Max

MA-EA 23.09.18 12:38

Code:

extern bool ClosePosAllEndOfDay = false;
Den bool auch zuerst unten abfragen. Sonst checkt er die Uhrzeit umsonst.

Leopold 23.09.18 23:06

Hallo,

Code:

pBid=MarketInfo(OrderMagicNumber(), MODE_BID);
Hier musst du statt OrderMagicNumber() Symbol() eintragen.

https://docs.mql4.com/marketinformation/marketinfo

---Leopold---

ForexMax 24.09.18 19:00

Liste der Anhänge anzeigen (Anzahl: 2)
Danke für eure Tipps!

Code:

MA-EA
extern bool ClosePosAllEndOfDay = false;

Den bool auch zuerst unten abfragen. Sonst checkt er die Uhrzeit umsonst.

Wie würde der Code Lauten?

Code:

Leopold

Code:

pBid=MarketInfo(OrderMagicNumber(), MODE_BID);

Hier musst du statt OrderMagicNumber() Symbol() eintragen.

Habe ich versucht, funktioniert auch nicht!
Hab die deaktivierten zeilen auch durchprobiert.
Die offnenen Pos. werden nicht wie gewünscht geschlossen!
Code:


  int pAsk=0;
  int pBid=0;
 
 
  Print("Zeit ", Hour(), ":", Minute(), " = ", close_pos_hour, ":", close_pos_min);
 
if ((Hour()==close_pos_hour && Minute()>=close_pos_min) && (ClosePosAllEndOfDay=true) )
  {
      Comment("\nschliesse alle offenen Orders");
      for (int j=OrdersTotal()-1; j>=0; j--)
      {
        Comment("\nSchleifendurchlauf: " + j);
        if (OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
        {
          Comment("\nOrderSelect erfolgreich, pruefe magic:" + OrderMagicNumber() + " = " + magic + "?");
 //          if ( OrderSymbol()==Symbol())
            if (OrderMagicNumber()==magic)
            {
            if (OrderType()==OP_BUY)
              {
 //              pBid=MarketInfo(OrderSymbol(), MODE_BID);
              pBid=MarketInfo(Symbol(), MODE_BID);
              OrderClose(OrderTicket(),OrderLots(),pBid,3,CLR_NONE);
            }
            if (OrderType()==OP_SELL)
            {
//              pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
              pAsk=MarketInfo(Symbol(), MODE_ASK);
              OrderClose(OrderTicket(),OrderLots(),pAsk,3,CLR_NONE);
            }
          }
        }
      }
  }
  }

mfg Max

Leopold 25.09.18 09:56

Hättest du mal einen Auszug aus dem Journal?

---Leopold---

MA-EA 25.09.18 12:14

Code:

extern bool ClosePosAllEndOfDay = true;
Code:

if(ClosePosAllEndOfDay==true && Hour()>=close_pos_hour && Minute()>=close_pos_min){ ... }

Leopold 25.09.18 12:58

Zitat:

Zitat von MA-EA (Beitrag 41664)
Code:

extern bool ClosePosAllEndOfDay = true;
Code:

if(ClosePosAllEndOfDay==true && Hour()>=close_pos_hour && Minute()>=close_pos_min){ ... }

Bist du dir wirklich sicher, dass das einen unterschied macht?

traderdoc 25.09.18 14:30

Der @MA-EA ist immer wieder für Überraschungen gut.

traderdoc

Xypa 26.09.18 21:21

Wenn die Zeit vom Anfang an bekannt ist, dann kann man die Uhrzeit auch direkt in die Order schreiben (Expiration date)

Leopold 26.09.18 21:41

Zitat:

Zitat von Xypa (Beitrag 41669)
Wenn die Zeit vom Anfang an bekannt ist, dann kann man die Uhrzeit auch direkt in die Order schreiben (Expiration date)

Das gilt aber nur für Pending Orders!!

---Leopold---


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