ChartSetSymbolPeriod

Change le symbole et la période du graphique spécifié. La fonction est asynchrone, c'est à dire qu'elle envoie la commande et n'attend pas la fin de l'exécution. La commande est ajoutée dans la queue des messages du graphique et sera exécutée après l'exécution de toutes les commandes précédentes.

bool  ChartSetSymbolPeriod(
   long             chart_id,     // Identifiant du graphique
   string           symbol,       // Nom du symbole
   ENUM_TIMEFRAMES  period        // Période
   );

Paramètres

chart_id

[in]  Identifiant du graphique. 0 signifie le graphique courant.

symbol

[in]  Symbole du graphique. La valeur NULL signifie le symbole du graphique courant (celui auquel l'Expert Advisor est attaché)

period

[in]  Période du graphique. Peut être l'une des valeurs de ENUM_TIMEFRAMES. 0 signifie la période du graphique courant.

Valeur de Retour

Retourne true si la commande a été ajoutée dans la queue du graphique, false sinon. Pour connaître l'erreur, utilisez la fonction GetLastError().

Note

Le changement de symbole/période déclenche la réinitialisation de l'Expert Advisor attaché à un graphique.

L'appel à ChartSetSymbolPeriod avec le même symbole et la même période peut être utilisé pour mettre à  jour le graphique (de façon similaire à la commande Rafraîchir du terminal). A son tour, la mise à jour du graphique déclenche le recalcul des indicateurs qui sont atachés. Il est donc possible de calculer un indicateur sur le graphique même s'il n'y a aucun tick (par exemple les weekends).

Exemple :

#define   SYMBOL    "GBPUSD"
#define   PERIOD    PERIOD_H1
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- récupère l'identifiant, le symbole et la période du graphique actuel
   long            chart_idChartID();
   string          symbol  = Symbol();
   ENUM_TIMEFRAMES period  = Period();
 
//--- inscrit dans le journal le remplacement du symbole et de la période actuels du graphique par ceux définis dans SYMBOL et PERIOD
   PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
               symbolTimeframeDescrioption(period), chart_idSYMBOLTimeframeDescrioption(PERIOD));
               
//--- change le symbole et la période du graphique
   ChartSetSymbolPeriod(chart_idSYMBOLPERIOD);
   /*
   résultat :
   Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
   */
  }
//+------------------------------------------------------------------+
//| Retourne la description de la période du graphique            |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
  {
   return(StringSubstr(EnumToString(timeframe), 7));
  }

Voir aussi

ChartSymbol, ChartPeriod