Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 17.06.22
Benutzerbild von Indikator-Trading
Indikator-Trading Indikator-Trading ist offline
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

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