ChartSetDouble

Define um valor para uma propriedade específica de um gráfico. Propriedade de gráfico deve ser do tipo double. Este comando é adicionado a uma fila de mensagens de gráfico e será executado após o processamento de todos os comandos anteriores.

bool  ChartSetDouble(
   long                           chart_id,     // ID Gráfico
   ENUM_CHART_PROPERTY_DOUBLE     prop_id,      // ID Propriedade
   double                         value         // Valor
   );

Parâmetros

chart_id

[in]  ID Gráfico. Representa o gráfico atual.

prop_id

[in]  ID Propriedade do gráfico. Pode ser um valores de ENUM_CHART_PROPERTY_DOUBLE (exceto apenas a leitura das propriedades).

value

[in] Valor da Propriedade.

Valor retornado

Retorna verdadeiro se o comando foi adicionado à fila do gráfico, caso contrário será falso. Para obter uma informação sobre o erro, chamar a função GetLastError().

Observação

A função é assíncrona, isto é, ela não espera a execução do comando que foi colocado com sucesso na fila do gráfico especificado, em vez disso, ela retorna o controle imediatamente. A propriedade será alterada somente após o processamento do comando na fila do gráfico. Para executar imediatamente comandos na fila de agendamento, você precisa chamar a função ChartRedraw.

Se quiser alterar várias propriedades do gráfico de uma só vez, você deverá executar as funções correspondentes (ChartSetString, ChartSetDouble, ChartSetString) num bloco de código e, em seguida, chamar uma vez ChartRedraw.

Para verificar o resultado da execução, você pode usar a função que solicita a propriedade especificada do gráfico (ChartGetInteger, ChartGetDouble, ChartSetString). Ao fazer isto, deve-se ter em mente que essas funções são síncronas e esperam o resultado da execução.

Exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtemos o identificador do gráfico atual
   long chart_id = ChartID();
   
//--- lembramo-nos do recuo original da barra zero em relação à borda direita em porcentagem e do sinalizador de rolagem automática
   double shift = ChartGetDouble(chart_idCHART_SHIFT_SIZE);
   bool   scrollChartGetInteger(chart_id,CHART_AUTOSCROLL);
   
//--- redefinimos o sinalizador para rolagem automática do gráfico
   ChartSetInteger(chart_idCHART_AUTOSCROLLtrue);
   PrintFormat("Initial chart shift size: %.2f"shift);
 
//--- em laços de 2,0% a 50,0% em incrementos de 0,5%
   for(int i=20i<=500i+=5)
     {
      //--- definimos o tamanho do recuo como i / 10 e imprimimos no log o valor definido
      ChartSetDouble(chart_idCHART_SHIFT_SIZEi/10.0);
      PrintFormat("Set chart shift size to %.1f%%"i/10.0);
      
      //--- mantemos a barra zero do gráfico à distância de recuo definida
      ChartNavigate(chart_idCHART_END0);
      
      //--- aguardamos um pouco mais
      Sleep(16);
     }
 
//--- definimos o recuo inicial e a rolagem automática do gráfico
   Print("Set the chart shift size to the initial value of "shift);
   ChartSetDouble(ChartID(), CHART_SHIFT_SIZEshift);
   ChartSetInteger(chart_idCHART_AUTOSCROLLscroll);
  }