ChartSetSymbolPeriod

Cambia il simbolo ed il periodo per il grafico specificato. La funzione è asincrona, cioè invia il comando e non aspetta per il suo completamento. Il comando viene aggiunto alla coda dei messaggi del chart e verrà eseguito dopo l'elaborazione di tutti i comandi precedenti.

bool  ChartSetSymbolPeriod(
   long             chart_id,     // ID del Grafico
   string           symbol,       // Nome del Simbolo
   ENUM_TIMEFRAMES  period        // Periodo
   );

Parametri

chart_id

[in] ID del Grafico. 0 significa il grafico corrente.

symbol

[in] Simbolo del Grafico. Il valore NULL significa che il corrente simbolo del grafico (a cui l'Expert Advisor è allegato)

period

[in]  Periodo del Grafico (timeframe). Può essere uno dei valori ENUM_TIMEFRAMES. 0 indica il corrente periodo del grafico.

Valore restituito

Restituisce true se il comando è stato aggiunto alla coda del chart, altrimenti false. Per avere informazioni sull' errore, Chiamare la funzione GetLastError().

Nota

Il cambio di simbolo/periodo porta alla re-inizializzazione dell' Expert Advisor allegato al grafico.

La chiamata di ChartSetSymbolPeriod con lo stesso simbolo e timeframe può essere utilizzata per aggiornare il grafico (simile al comando Aggiorna del terminale). A sua volta, l'aggiornamento del chart innesca ri-calcolo degli indicatori ad esso collegati. Così, è possibile calcolare un indicatore sul grafico, anche se non ci sono ticks (ad esempio, nei fine settimana).

Esempio:

#define   SYMBOL    "GBPUSD"
#define   PERIOD    PERIOD_H1
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- ottenere l'ID del grafico corrente, il simbolo e il periodo
   long            chart_idChartID();
   string          symbol  = Symbol();
   ENUM_TIMEFRAMES period  = Period();
 
//--- riportare nel journal la sostituzione del simbolo grafico e del periodo attuali con quelli impostati in SYMBOL e PERIOD
   PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
               symbolTimeframeDescrioption(period), chart_idSYMBOLTimeframeDescrioption(PERIOD));
               
//--- cambiare il simbolo del grafico e il periodo
   ChartSetSymbolPeriod(chart_idSYMBOLPERIOD);
   /*
   risultato:
   Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
   */
  }
//+------------------------------------------------------------------+
//| Restituire la descrizione del periodo grafico |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
  {
   return(StringSubstr(EnumToString(timeframe), 7));
  }

Vedi anche

ChartSymbol, ChartPeriod