ChartSetSymbolPeriod

指定されたチャートの銘柄値と期間を変更します。この関数は非同期的です。すなわち、コマンドを送信後に実行完了は待たれません。コマンドは、チャートメッセージキューに追加され、以前の全てのコマンドの処理後に実行されます。

bool  ChartSetSymbolPeriod(
  long            chart_id,    // チャート識別子
  string          symbol,      // 銘柄名
  ENUM_TIMEFRAMES  period        // 期間
  );

パラメータ

chart_id

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

symbol

[in]  チャートシンボル(NULL はエキスパートアドバイザーが接続されている現在のチャートのシンボル)

period

[in]  チャート期間(時間軸)。ENUM_TIMEFRAMES のいずれかの値。(0 は現在のチャート期間)

戻り値

コマンドがチャートキューに追加された場合は true、そうでない場合は false。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

銘柄/期間の変更はチャートに取り付けられたエキスパートアドバイザーの再初期化につながります。

同じシンボルと時間枠でのChartSetSymbolPeriodの呼び出しはチャートの更新に使われることができます(ターミナルのRefreshコマンドと同じ)。 チャートの更新によって、取り付けられているインディケータの再計算がトリガされます。 したがって、ティックがない場合でも(たとえば、週末に)チャート上のインディケータを計算することができます。

例:

#define   SYMBOL   "GBPUSD"
#define   PERIOD   PERIOD_H1
 
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 現在のチャートID、銘柄、期間を取得する
  long           chart_id= ChartID();
  string         symbol  = Symbol();
  ENUM_TIMEFRAMES period  = Period();
 
//--- 現在のチャートの銘柄と期間を SYMBOL と PERIOD で設定されたものに置き換えたことを操作ログ報告する
  PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
              symbol, TimeframeDescrioption(period), chart_id, SYMBOL, TimeframeDescrioption(PERIOD));
             
//--- チャートの銘柄と期間を変更する
  ChartSetSymbolPeriod(chart_id, SYMBOL, PERIOD);
  /*
  結果:
  Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
  */
 }
//+------------------------------------------------------------------+
//| チャートの期間の説明を返す                                              |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
 {
  return(StringSubstr(EnumToString(timeframe), 7));
 }

参照

ChartSymbolChartPeriod