バッファーは、さらにジグザグの計算に使用するデータに満ちています。インジケーターを制御します。仮想メソッドを追加します。CheckHandle(){return(true);}};複数の子クラスを作成します。i=start;i<rates_total;i++){BufferHigh[i]=high[i];BufferLow[i]=low[i];}return(rates_total);}};もう一つは、終値用。ループ内のコードでのみ異なります。CSorceData"です。メソッドは、今のところは使用されません。幾つかのインジケーターからデータを取得するためのクラスを作成します。クラスを書いてみよう。CSorceData"という名前を付けます。セクションに追加します。パラメータは、インジケーター中にロードされます。メソッドは、バッファーの簡単なコピーです。失敗した場合0、正常なコピーの場合はrates_totalを返すことに注意してください。失敗した場合はインジケーターの後、再計算を許可します。CSorceData"という名前のクラスを作成します。トラクタで違いがあります。メソッドが完全に同一であることが判明します。"CSorceData.mqh"ファイルは、添付ファイルにあります。動作のみ暫定的に注意してください。他のインジケーターの新しい子メソッドの追加による拡大をします。方向のクラスこのクラスは、基本クラスの名前"CZZDirection.mqh"ファイルに配置されます-"CZZDirection"。メソッドが含まれます。インジケーターを使用し、ジグザグの方向を決定することができます。前に述べたように、インジケーターを使用する関数も追加されます。メソッドを追加します。CheckHandle(){return(true);}};"IHighLowZigZag"インジケーターと同様に、方向性を決める子クラスを記述します。このメソッドを使用して方向を決定する「period」パラメータが必要になります。セクションに追加されます。インジケーターに基づいて方向を決定するもう一つの子クラスを作成します。ゼロの上のCCIの位置は、ジグザグの方向に対応します。if(buf[0]<0){BufferDirection[i]=-1;}}return(rates_total);}};CCIパラメータは、クラスのコンストラクターに渡され、読み込まれます。メソッドを使用することで、オブジェクトを作成した後、呼び出す必要があります。バッファーに格納します。"CZZDirection.mqh"ファイルは、添付ファイルにあります。プロットのクラスジグザグのプロットにはさまざまなオプションがあります。単一行で描画することができ、色を指定でき、頂点のドットを持つことができます。この記事で1つだけのプロットメソッドを検討しますが、将来のために開発のベースと子クラスを作成します。"CZZDraw.mqh"ファイル、クラスの名前-「CZZDraw」。メソッドが含まれます。つの配列を渡されます。1:BufferZigZag[i]=BufferLow[i];BufferLastLowBar[i]=i;break;}break;}}return(rates_total);}};すでにセクション「高値/安値に基づいてシンプルなジグザグ」および「終値に基づくシンプルなジグザグ」セクションに記載されているように、このクラスは詳しく取り上げません。CZZDraw.mqh"ファイルは、添付ファイルにあります。つのクラスを使用して、インジケーターを作成する必要があります。価格とRSIインジケーターは、サブウィンドウで動作する通常のデータを使用する関数を提供します。よって、サブウィンドウのインジケーターを作成します。つのファイルが含まれます。<CZZDraw.mqh>インジケーターには、ソースデータの種類と方向を決定するの種類を選択するためのパラメータが必要です。この目的のため、2つの列挙を作成します。EDirection{Dir_NBars=0,Dir_CCI=1};2つの外部パラメータを作成します。