ChartRedraw

この関数は指定されたチャートの強制再描画を呼び出します。

void  ChartRedraw(
  long  chart_id=0      // チャート識別子
  );

パラメータ

chart_id=0

[in]  チャート識別子。( 0 は現在のチャート)

注意事項

通常 object propertiesが更新された後で使用されます。

例:

#define   WIDTH     50   // rectangle width in bars
 
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 現在のチャートIDを取得し、グラフィカルオブジェクト名を設定する
  long   chart_id = ChartID();
  string obj_name = MQLInfoString(MQL_PROGRAM_NAME)+"_RectLabel";
 
//--- 2つの長方形の時間座標を取得する
  datetime time1  = iTime(_Symbol, _Period, WIDTH);
  datetime time2  = iTime(_Symbol, _Period, 0);
  if(time1==0 || time2==0)
    {
    Print("Error getting time ", GetLastError());
    return;
    }
 
//--- 長方形の幅の範囲内の最大価格と最小価格を取得する
  double price1 = HighestHigh(_Symbol, _Period, 0, WIDTH);
  double price2 = LowestLow(_Symbol, _Period, 0, WIDTH);
  if(price1==EMPTY_VALUE || price2==EMPTY_VALUE)
    return;
 
//--- 長方形オブジェクトを作成する
  Print("Create a wheat-colored rectangle");
  if(!ObjectCreate(chart_id, obj_name, OBJ_RECTANGLE, 0, time1, price1, time2, price2))
    {
    Print("ObjectCreate() failed. Error ", GetLastError());
    return;
    }
 
//--- 元の色で四角形を塗りつぶす
  ObjectSetInteger(chart_id, obj_name, OBJPROP_FILL, true);
  ObjectSetInteger(chart_id, obj_name, OBJPROP_BACK, true);
  ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrWheat);
  ChartRedraw();
 
//--- 1秒待って四角形をDodgerBlue色で塗りつぶし、グラフを更新する
  Sleep(1000);
  Print("Change color to DodgerBlue");
  ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrDodgerBlue);
  ChartRedraw();
 
//--- 1秒待って四角形をLimeGreen色で塗りつぶし、グラフを更新する
  Sleep(1000);
  Print("Change color to LimeGreen");
  ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrLimeGreen);
  ChartRedraw();
 
//--- 1秒待って四角形をOrangeRed色で塗りつぶし、グラフを更新する
  Sleep(1000);
  Print("Change color to OrangeRed");
  ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrOrangeRed);
  ChartRedraw();
 
//--- 1秒待って四角形をWheat色で塗りつぶし、グラフを更新する
  Sleep(1000);
  Print("Reset color to original");
  ObjectSetInteger(chart_id, obj_name, OBJPROP_COLOR, clrWheat);
  ChartRedraw();
 
//--- 3秒後、チャートからオブジェクトを削除する
  Sleep(3000);
  Print("Delete the rectangle");
  ObjectDelete(chart_id, obj_name);
 }
//+------------------------------------------------------------------+
//| 指定されたバーの範囲内の最大の高値を返す                                  |
//+------------------------------------------------------------------+
double HighestHigh(const string symbol, const ENUM_TIMEFRAMES timeframe, const uint start, const uint count)
 {
  ResetLastError();
  int index=iHighest(symbol, timeframe, MODE_HIGH, count, start);
  if(index==-1)
    {
    PrintFormat("%s: iHighest() failed. Error %d",__FUNCTION__, GetLastError());
    return(EMPTY_VALUE);
    }
  GetLastError();
  double price=iHigh(symbol, timeframe, index);
  if(price==0)
    {
    PrintFormat("%s: iHigh() failed. Error %d",__FUNCTION__, GetLastError());
    return(EMPTY_VALUE);
    }
  return(price);
 }
//+------------------------------------------------------------------+
//| 指定されたバーの範囲内の最小の安値を返す                                  |
//+------------------------------------------------------------------+
double LowestLow(const string symbol, const ENUM_TIMEFRAMES timeframe, const uint start, const uint count)
 {
  ResetLastError();
  int index=iLowest(symbol, timeframe, MODE_LOW, count, start);
  if(index==-1)
    {
    PrintFormat("%s: iLowest() failed. Error %d",__FUNCTION__, GetLastError());
    return(EMPTY_VALUE);
    }
  GetLastError();
  double price=iLow(symbol, timeframe, index);
  if(price==0)
    {
    PrintFormat("%s: iLow() failed. Error %d",__FUNCTION__, GetLastError());
    return(EMPTY_VALUE);
    }
  return(price);
 }

参照

オブジェクト関数