ChartIndicatorDelete

指定されたチャートウィンドウから指定された名前のインジケーターを削除します。このコマンドはチャートメッセージキューに追加され、以前のすべてのコマンドが処理された後にのみ実行されます。

bool  ChartIndicatorDelete(
   long           chart_id,              // chart id
   int            sub_window,            // number of the subwindow
   const string   indicator_shortname    // short name of the indicator
   );

パラメーター

chart_id

[in]チャートID。0は現在のチャートを示します。

sub_window

[in]チャートサブウィンドウの番号。0はメインチャートサブウィンドウを示します。

const indicator_shortname

[入力] IndicatorSetString()関数を使用してINDICATOR_SHORTNAMEプロパティに設定されるインジケーターの短い名前。インジケーターの短縮名を取得するには、ChartIndicatorName()関数を使用します。

戻り値

コマンドがチャートキューに追加された場合はtrueを、それ以外の場合はfalseを返します。エラーの詳細を取得するには、GetLastError()関数を使用します。

注意

チャートのサブウィンドウに同じ短い名前の2つのインジケーターが存在する場合、行の最初のインジケーターが削除されます。

このチャートの他のインジケーターが削除されるインジケーターの値に基づいている場合、そのようなインジケーターも削除されます。

インジケーターの短縮名が明示的に設定されていない場合、インジケーターのソースコードを含むファイルの名前がコンパイル中に指定されます。

インディケーターのショートネームは正しく形成される必要があります。IndicatorSetString()関数を使用して、INDICATOR_SHORTNAMEプロパティに書き込まれます。ChartIndicatorDelete()関数によってチャートから削除されるインジケーターはショートネームで識別されるため、ショートネームにはインジケーターのすべての入力パラメーターの値を含めることをお勧めします

初期化が失敗した後にインジケーターを削除する例:

//+——————————————————————+
//|                                    Demo_ChartIndicatorDelete.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+——————————————————————+
#property copyright “Copyright 2011, MetaQuotes Software Corp.”
#property link      “https://www.mql5.com”
#property version   “1.00”
#property indicator_separate_window
#property indicator_buffers 1
//— plot Histogram
#property indicator_label1  “Histogram”
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//— input parameters
input int      first_param=1;
input int      second_param=2;
input int      third_param=3;
input bool     wrong_init=true;
//— indicator buffers
double         HistogramBuffer[];
string         shortname;
//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int OnInit()
  {
   int res=INIT_SUCCEEDED;
//— Link the HistogramBuffer array to the indicator buffer
   SetIndexBuffer(0,HistogramBuffer,INDICATOR_DATA);
//— Construct a short indicator name based on input parameters
   shortname=StringFormat(“Demo_ChartIndicatorDelete(%d,%d,%d)”,
                          first_param,second_param,third_param);
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//— If forced completion of an indicator is set, return a non-zero value
   if(wrong_init) res=INIT_FAILED;
   return(res);
  }
//+——————————————————————+
//| Custom indicator iteration function                              |
//+——————————————————————+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//— Starting position for working in a loop
   int start=prev_calculated-1;
   if(start<0) start=0;
//— Fill in the indicator buffer with values
   for(int i=start;i<rates_total;i++)
     {
      HistogramBuffer[i]=close[i];
     }
//— return value of prev_calculated for next call
   return(rates_total);
  }
//+——————————————————————+
//| Handler of the Deinit event                                      |
//+——————————————————————+
void OnDeinit(const int reason)
  {
   PrintFormat(“%s: Deinitialization reason code=%d”,__FUNCTION__,reason);
   if(reason==REASON_INITFAILED)
     {
      PrintFormat(“An indicator with a short name %s (file %s) deletes itself from the chart”,shortname,__FILE__);
      int window=ChartWindowFind();
      bool res=ChartIndicatorDelete(0,window,shortname);
      //— Analyse the result of call of ChartIndicatorDelete()
      if(!res)
        {
         PrintFormat(“Failed to delete indicator %s from window #%d. Error code %d”,
                     shortname,window,GetLastError());
        }
     }
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">