Propiedades descriptivas de los gráficos

Las funciones de ChartSetString/ChartGetString permiten la lectura y el ajuste de las siguientes propiedades de cadena de los gráficos:

Identificador

Descripción

CHART_COMMENT

Texto del comentario del gráfico

CHART_EXPERT_NAME

Nombre del Asesor Experto que se ejecuta en el gráfico (r/o)

CHART_SCRIPT_NAME

Nombre del script que se ejecuta en el gráfico (r/o)

En el capítulo Visualización de mensajes en la ventana de gráficosdescubrimos la función Comment, que muestra un mensaje de texto en la esquina superior izquierda del gráfico. La propiedad CHART_COMMENT permite leer el comentario actual del gráfico: ChartGetString(0, CHART_COMMENT). También es posible acceder a los comentarios de otros gráficos pasando sus identificadores a la función. Utilizando ChartSetString puede cambiar los comentarios del gráfico actual y de otros gráficos, si conoce su ID: ChartSetString(ID, CHART_COMMENT, "text").

Si un Asesor Experto y/o un script se está ejecutando en cualquier gráfico, podemos averiguar sus nombres utilizando estas llamadas: ChartGetString(ID, CHART_EXPERT_NAME) y ChartGetString(ID, CHART_SCRIPT_NAME).

El script ChartList3.mq5, similar a ChartList2.mq5, complementa la lista de gráficos con información sobre Asesores Expertos y scripts. Más adelante añadiremos información sobre los indicadores.

void ChartList()
{
   const long me = ChartID();
   long id = ChartFirst();
   int count = 0used = 0tempexperts = 0scripts = 0;
 
   Print("Chart List\nN, ID, Symbol, TF, *active");
   // keep iterating over charts until there are none left
   while(id != -1)
   {
      temp =0;// sign of MQL programs on this chart
      const string header = StringFormat("%d %lld %s %s %s",
         countidChartSymbol(id), PeriodToString(ChartPeriod(id)),
         (id == me ? " *" : ""));
      // fields: N, id, symbol, timeframe, label of the current chart
      Print(header);
      string expert = ChartGetString(idCHART_EXPERT_NAME);
      string script = ChartGetString(idCHART_SCRIPT_NAME);
      if(StringLen(expert) > 0expert = "[E] " + expert;
      if(StringLen(script) > 0script = "[S] " + script;
      if(expert != NULL || script != NULL)
      {
         Print(expert" "script);
         if(expert != NULLexperts++;
         if(script != NULLscripts++;
         temp++;
      }
      count++;
      if(temp > 0)
      {
         used++;
      }
      id = ChartNext(id);
   }
   Print("Total chart number: "count", with MQL-programs: "used);
   Print("Experts: "experts", Scripts: "scripts);
}

Este es un ejemplo de la salida de este script:

Chart List
N, ID, Symbol, TF, *active
0 132358585987782873 EURUSD M15 
1 132360375330772909 EURUSD H1  *
 [S] ChartList3
2 132544239145024745 XAUUSD H1 
3 132544239145024732 USDRUB D1 
4 132544239145024744 EURUSD H1 
Total chart number: 5, with MQL-programs: 1
Experts: 0, Scripts: 1

Aquí puede ver que sólo se está ejecutando un script.