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 MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Ende der Session (http://www.expert-advisor.com/forum/showthread.php?t=7200)

traderdoc 16.06.22 23:27

Ende der Session
 
Ich suche in den Untiefen des MQL5 eine Funktion, die das Ende der Handelszeit eines Handelsinstrumentes am Tag zurückgibt.
Klar Forex von Montag bis Donnerstag gibt es kein "Ende", aber sehr wohl am Freitag.
Noch bedeutender ist das bei z.B. Indices, Rohstoffen oder allgemein CFDs.

Hat jemand auf die Schnelle einen Tipp?

traderdoc

TraderMike 16.06.22 23:54

SymbolInfoSessionQuote()

https://www.mql5.com/en/docs/marketi...fosessionquote

meinst du das?

Mike

Ca$hDigger 17.06.22 11:50

Oder alternativ SymbolInfoSessionTrade. Für mich wäre neben der Kursstellung noch entscheidender, kann ich im Zielzeitraum eine Order öffnen oder nicht.
https://www.mql5.com/en/docs/marketi...fosessiontrade

ps: genau genommen gibt es bei FX auch täglich "ein Ende", jede Nacht eine kleine Pause.

traderdoc 17.06.22 17:02

Danke, ich werde beide Funktionen mal implementieren.

traderdoc

Indikator-Trading 17.06.22 23:52

du musst beachten, das dir die o.g. Funktionen nur die Start und Endzeiten der angegebenen Session zurück geben. Manche Symbole haben aber mehrere Sessions. In meiner Implementierung habe ich dreifach Arrays genommen, wovon nur das erste Element dynamisch ist. Eleganter wäre eine Struct als dynamisches Array (für die Symbole) in dem die Zeitarrays ebenfalls dynamisch wären. Den Umweg mit der Struct muss man nur machen, da MT4/5 ja leider für ein mehrfaches Array nur einen Teil dynamisch zulässt. Ich entwickle immer nur EAs, welche Multisymbol fähig sein. Für einfache EAs, welche nur auf einem Symbol laufen sollen, kannst du ja den Code simpler gestalten.

Das Anpassen der Variablen ist ja kein Problem für dich, daher hier mein Code für dich:
Code:

bool SetupTradeTimeSessionArrays()
{
  for(int i = 0 ; i < NumberOfTradeableSymbols ; i++)
  {
    for(int Day = 0 ; Day <= 6 ; Day++)
    {
      TradeTimeStart_Session[i][Day][0] = -1;
      TradeTimeEnd_Session[i][Day][0] = -1;
      TradeTimeStart_Session[i][Day][1] = -1;
      TradeTimeEnd_Session[i][Day][1] = -1;
      TradeTimeStart_Session[i][Day][2] = -1;
      TradeTimeEnd_Session[i][Day][2] = -1;
      TradeTimeStart_Session[i][Day][3] = -1;
      TradeTimeEnd_Session[i][Day][3] = -1;
      TradeTimeStart_Session[i][Day][4] = -1;
      TradeTimeEnd_Session[i][Day][4] = -1;
      switch(GetNumberOfSessionsOfSymbol(i, (ENUM_DAY_OF_WEEK)Day,true))
      {
      case 5:
        SymbolInfoSessionTrade(SymbolArray[i], (ENUM_DAY_OF_WEEK)Day, 4, TradeTimeStart_Session[i][Day][4], TradeTimeEnd_Session[i][Day][4]);
      case 4:
        SymbolInfoSessionTrade(SymbolArray[i], (ENUM_DAY_OF_WEEK)Day, 3, TradeTimeStart_Session[i][Day][3], TradeTimeEnd_Session[i][Day][3]);
      case 3:
        SymbolInfoSessionTrade(SymbolArray[i], (ENUM_DAY_OF_WEEK)Day, 2, TradeTimeStart_Session[i][Day][2], TradeTimeEnd_Session[i][Day][2]);
      case 2:
        SymbolInfoSessionTrade(SymbolArray[i], (ENUM_DAY_OF_WEEK)Day, 1, TradeTimeStart_Session[i][Day][1], TradeTimeEnd_Session[i][Day][1]);
      case 1:
        SymbolInfoSessionTrade(SymbolArray[i], (ENUM_DAY_OF_WEEK)Day, 0, TradeTimeStart_Session[i][Day][0], TradeTimeEnd_Session[i][Day][0]);
        break;

      case 0:
        Print("Symbol ", SymbolArray[i], " has got no Sessions for ", DayToString((ENUM_DAY_OF_WEEK)Day), "! ");
        if(((ENUM_DAY_OF_WEEK)Day != SUNDAY) && ((ENUM_DAY_OF_WEEK)Day != SATURDAY))
          return false;
        break;
      default:
        Print("Symbol ", SymbolArray[i], " has got ", GetNumberOfSessionsOfSymbol(i, (ENUM_DAY_OF_WEEK)Day,false), " as the Number of Sessions for ", DayToString((ENUM_DAY_OF_WEEK)Day), "! ");
        return false;
      }
    }
  }
  return  true;
}



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