ChartSetSymbolPeriod

Damit können das Symbol und der Zeitrahmen des angegebenen Charts verändert werden. Die Funktion arbeitet asynchron, sie übergibt den Befehl und wartet nicht auf die Durchführung. Der Befehl wird in die Warteschlange des Charts gestellt und wird nach der Erledigung aller vorherigen Befehle abgearbeitet.

bool  ChartSetSymbolPeriod(
   long             chart_id,     // Identifikator des Charts
   string           symbol,       // Symbolname
   ENUM_TIMEFRAMES  period        // Zeitrahmen
   );

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet denen Chart.

symbol

[in]  Symbol des Charts. NULL bedeutet Symbol des aktuellen Charts (auf dem der Experte läuft)

period

[in]  Zeitrahmen des Charts (Timeframe). Kann einen der Werte der Enumeration ENUM_TIMEFRAMES annehmen. 0 bedeutet Zeitrahmen des aktuellen Charts.

Rückgabewert

Gibt true zurück, wenn der Befehl in die Warteschlange des Charts gestellt wurde, andernfalls false. Um die Information über den Fehler zu erhalten, muss man die Funktion GetLastError() aufrufen.

Hinweis

Ein Wechsel von Symbol/Zeitrahmen veranlasst den Expert Advisor, der auf dem Chart läuft, sich neu zu initialisieren.

Der Aufruf von ChartSetSymbolPeriod mit demselben Symbol und Zeitrahmen kann für ein Update des Charts verwendet werden (ähnlich dem Befehl zur Aktualisierung des Charts). Ein Update des Charts wiederum löst eine Neuberechnung der mit ihm verbundenen Indikatoren aus. Auf diese Weise können Sie einen Indikator auf dem Chart berechnen, auch wenn es keine Ticks gibt (z.B. an Wochenenden).

Beispiel:

#define   SYMBOL    "GBPUSD"
#define   PERIOD    PERIOD_H1
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- liefert die aktuelle Chart-ID, das Symbol und den Zeitrahmen
   long            chart_idChartID();
   string          symbol  = Symbol();
   ENUM_TIMEFRAMES period  = Period();
 
//--- Bericht im Journal über das Ersetzen des aktuellen Chartsymbols und des Zeitrahmens durch die in SYMBOL und PERIOD festgelegten Werte
   PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
               symbolTimeframeDescrioption(period), chart_idSYMBOLTimeframeDescrioption(PERIOD));
               
//--- Chartsymbol und Zeitrahmen ändern
   ChartSetSymbolPeriod(chart_idSYMBOLPERIOD);
   /*
   Ergebnis:
   Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
   */
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Zeitrahmens des Charts             |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
  {
   return(StringSubstr(EnumToString(timeframe), 7));
  }

Siehe auch

ChartSymbol, ChartPeriod