跳至内容

ChartSetDouble

ChartSetDouble

设置指定图表相关属性值。图表属性是双精度类型。该命令添加到图表信息队列并且将在处理完之前所有命令后开始执行。

bool  ChartSetDouble(
   long                           chart_id,     // 图表 ID
   ENUM_CHART_PROPERTY_DOUBLE     prop_id,      // 属性 ID
   double                         value         // 值
   );

参量

chart_id

[in] 图表 ID. 0 意味着当前图表。

prop_id

[in] 图表属性 ID. 可以是 ENUM_CHART_PROPERTY_DOUBLE值中的一个(除了只读属性)。

value

[in] 属性值。

返回值

如果该命令已添加到图表队列则返回true,否则false。若获得额外错误信息,需要调用函数GetLastError()

注意

该函数为异步函数,这意味着该函数不等待执行已成功添加到指定图表队列的命令。相反,而是立即返回控制。该属性将只会在处理图表队列的对应命令之后更改。若要立即执行来自图表队列的命令,请调用ChartRedraw函数。

如果您想立即改变多个图表属性,那么应该在一个代码框中执行对应的函数(ChartSetStringChartSetDoubleChartSetString),在此之后您应该马上调用ChartRedraw

若要检查命令执行的结果,您可以使用一个函数,请求指定的图表属性(ChartGetIntegerChartGetDoubleChartSetString)。然而,请注意,这些都是同步函数,等待执行结果。

示例:

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 取得当前图表ID
   long chart_id = ChartID();

//--- 保存从右边数第零柱的初始偏移百分比和自动滚动标志
   double shift = ChartGetDouble(chart_id, CHART_SHIFT_SIZE);
   bool   scroll= ChartGetInteger(chart_id,CHART_AUTOSCROLL);

//--- 重置自动滚动图表标志
   ChartSetInteger(chart_id, CHART_AUTOSCROLL, true);
   PrintFormat("Initial chart shift size: %.2f", shift);

//--- 从2.0%到50.0%以步长0.5%做循环
   for(int i=20; i<=500; i+=5)
     {
      //--- 以平移大小为 i / 10 并在日志中打印指定的数值
      ChartSetDouble(chart_id, CHART_SHIFT_SIZE, i/10.0);
      PrintFormat("Set chart shift size to %.1f%%", i/10.0);

      //--- 使图表的第零柱保持在指定的偏移距离
      ChartNavigate(chart_id, CHART_END, 0);

      //--- 等待一会儿
      Sleep(16);
     }

//--- 设置初始的图表偏移和自动滚动
   Print("Set the chart shift size to the initial value of ", shift);
   ChartSetDouble(ChartID(), CHART_SHIFT_SIZE, shift);
   ChartSetInteger(chart_id, CHART_AUTOSCROLL, scroll);
  }