08/06/29 01:34:24.25 46pXAyld
どうしても関数呼び出す毎に配列を全部読んで再計算してるのか糞重いんだけど、
一度計算した値を再計算しないようにするにはどうしたらいいんだろう?
IndicatorCounted()を外部から貰う為にint Countedを新たに引数とし、
配列を外部から取得しないで済むように内部で作った配列へコピーとかしてみたけど、
効果は気持ちあったかな?って程度。
このままだとインジケーターロードするたびに2秒くらいフリーズする><
数値には間違いがないから根本的におかしいって訳じゃ無いと思うんだけど・・・
double iFastStochasticsOnArray(double getArray[],int Sto_Period,int Shift,int Counted){
int Limit = ArraySize(getArray) - Sto_Period - Counted;
double StoArray[], ArrayBuf[];
if((Shift+Sto_Period)>=ArraySize(getArray)){
// ErrorDescription(4002); //Debug
return(0);
}
ArrayResize(StoArray, Limit); //number 0~Limit-1
ArrayResize(ArrayBuf, ArraySize(getArray));
ArrayCopy(ArrayBuf, getArray);
for(int i=Limit-1; i>=0; i--){
double HH =-100000, LL=100000;
for(int j=0; j<Sto_Period; j++){
if(ArrayBuf[i+j] > HH) HH = ArrayBuf[i+j];
if(ArrayBuf[i+j] < LL) LL = ArrayBuf[i+j];
}
StoArray[i] = (ArrayBuf[i]-LL)/(HH-LL)*100;
}
return(StoArray[Shift]);
}