Diskussion zum Artikel "Übersetzung von MQL4 in MQL5" - Seite 13 1...678910111213 Neuer Kommentar billz_billz 2023.10.08 17:11 #121 Ich habe viel von diesem tollen Leitfaden profitiert. Hier ist meine kleine Verbesserung der Funktion zu teilen. double iMAOnArrayMQL4(double &array[], int total, int period, int ma_shift, int ma_method, int shift) { double buf[],arr[]; if(total==0) total=ArraySize(array); if(total>0 && total<=period) return(0); if(shift>total-period-ma_shift) return(0); switch(ma_method) { case MODE_SMA : { total=ArrayCopy(arr,array,0,shift+ma_shift,period); if(ArrayResize(buf,total)<0) return(0); double sum=0; int i,pos=total-1; for(i=1;i<period;i++,pos--) sum+=arr[pos]; while(pos>=0) { sum+=arr[pos]; buf[pos]=sum/period; sum-=arr[pos+period-1]; pos--; } return(buf[0]); } case MODE_EMA : { if(ArrayResize(buf,total)<0) return(0); double pr=2.0/(period+1); int pos=total-2; while(pos>=0) { if(pos==total-2) buf[pos+1]=array[pos+1]; buf[pos]=array[pos]*pr+buf[pos+1]*(1-pr); pos--; // optimization if(pos < (shift+ma_shift)) break; } return(buf[shift+ma_shift]); } case MODE_SMMA : { if(ArrayResize(buf,total)<0) return(0); double sum=0; int i,k,pos; pos=total-period; while(pos>=0) { if(pos==total-period) { for(i=0,k=pos;i<period;i++,k++) { sum+=array[k]; buf[k]=0; } } else sum=buf[pos+1]*(period-1)+array[pos]; buf[pos]=sum/period; pos--; // optimization if(pos < (shift+ma_shift)) break; } return(buf[shift+ma_shift]); } case MODE_LWMA : { if(ArrayResize(buf,total)<0) return(0); double sum=0.0,lsum=0.0; double price; int i,weight=0,pos=total-1; for(i=1;i<=period;i++,pos--) { price=array[pos]; sum+=price*i; lsum+=price; weight+=i; } pos++; i=pos+period; while(pos>=0) { buf[pos]=sum/weight; if(pos==0) break; pos--; i--; price=array[pos]; sum=sum-lsum+price*period; lsum-=array[i]; lsum+=price; // optimization if(pos < (shift+ma_shift)) break; } return(buf[shift+ma_shift]); } default: return(0); } return(0); } Meine Optimierung beseitigt unnötige Berechnung. Xing Shun Li 2025.04.24 11:39 #122 MetaQuotes: Der neue Artikel Migration von MQL4 zu MQL5 wurde veröffentlicht: Autor: Sergey Pavlov icustom ist der fatale Fehler der Konvertierung: Unsichere Parameter sind ein Albtraum zoudong 2025.06.06 07:05 #123 ziemlich gut 1...678910111213 Neuer Kommentar
Ich habe viel von diesem tollen Leitfaden profitiert. Hier ist meine kleine Verbesserung der Funktion zu teilen.
Meine Optimierung beseitigt unnötige Berechnung.
Der neue Artikel Migration von MQL4 zu MQL5 wurde veröffentlicht:
Autor: Sergey Pavlov
icustom ist der fatale Fehler der Konvertierung: Unsichere Parameter sind ein Albtraum