頂いたアドバイスを元に最終調整中です。来週ぐらいに登録予定ですので、登録されましたら是非皆様お試しください。
さて、今日は久しぶりに小ネタです。本当に小ネタです(笑)
MQL4についてきているCArrayDoubleクラスですがMinimumとMaximumにバグがあります。
内部で使用しているArrayMinimumとArrayMaximumの引数ですが、下記の通りです。
int ArrayMaximum( const void& array[], // 対象配列 int count=WHOLE_ARRAY, // 確認エレメント数 int start=0 // 開始インデックス );
ところがCArrayDoubleではこのように使用されており引数の意味とあっていません。
//+------------------------------------------------------------------+ //| Find minimum of array | //+------------------------------------------------------------------+ int CArrayDouble::Minimum(const int start,const int count) const { //バグ! return(ArrayMinimum(m_data, start, count)); }
正しくはこのようになります。
//+------------------------------------------------------------------+ //| Find minimum of array | //+------------------------------------------------------------------+ int CArrayDouble::Minimum(const int start,const int count) const { //バグ! return(ArrayMinimum(m_data, count, start)); } //+------------------------------------------------------------------+ //| Find maximum of array | //+------------------------------------------------------------------+ int CArrayDouble::Maximum(const int start,const int count) const { //バグ! return(ArrayMaximum(m_data, count, start)); }
まぁわかっていて逆に渡すというのもありなのですが、やっぱり気持ち悪いので元コードを修正して使用しています。