Build600以降のMQL4では構造体が使用できます。
関数の戻り値として構造体を使用すると二つ以上の値を一度に戻すことができます。
これを利用することで同じ計算から求められる値をまとめて取得することが可能です。
// メイン・シグナル構造体 struct MainSignalValue { //メイン double main; //シグナル double signal; }; //配列に対するストキャス値を求める。 MainSignalValue StochasticOnArray( const double &array[], // 元データ int total, // 総数 int kPeriod, // Kライン期間 int dPeriod, // Dライン期間 int slowing, // スローイング ENUM_MA_METHOD method, // 移動平均手法 int shift // シフト ) { // 返却値 MainSignalValue value ; value.main = 0 ; value.signal = 0; //今回は省略 return value; }
二つ以上の値を戻す方法は、これ以外にも関数の引数を実体渡し(&をつけて宣言するやつです)する方法もありますが、引数に値がかえってくるよりも戻り値でかえってくる方が関数としての形が統一されて私はこちらをよく使います。
MQL4には指定配列のストキャスを求めるiStochasticOnArrayが見当たりませんでした。以前作成した「ストキャスティクスRSI オシレーターを作成してみた。」からストキャスを算出している部分を抽出して関数化しています。次回の記事では、こちらを紹介したいと思います。