Ok, ich denke, ich hab´s.
So viel ich nun "erforscht" habe, wird NormalizeDouble maximal mit 4 Ziffern ausgegeben (Warum auch immer), intern jedoch wird jedoch mit der angeforderten Stellenzahl gerechnet.
Um das Ergebnis zu kontrollieren bzw. die korrekte Stellenzahl BEIM AUSDRUCK (Print / Comment) zu erhalten, sollte man die Funktion DoubleToStr() verwenden.
Also nochmal: NormalizeDouble() taugt m.E. für Lotsize-Berechnungen. Intern wird die double-Variable mit hinreichender (Nachkomma-)Genauigkeit berechnet ( besser als float). Zum Darstellen dann die DoubleToStr()-Funktion nehmen.
Hier die Abänderung:
Code:
double MAErgebnis;
double MA[11];
for (int Index = 10;Index > 0;Index --) //Zähle "Index" Kerzen rückwärts bis zur aktuellen Kerze
{
MAErgebnis=(iMA(NULL,1,4,0,1,0,Index)); //NULL bedeutet das aktuelle Paar, 1 bedeutet M1, 4 die Periode der EMA4, 0 = MA_shift, 1 = die Methode EMA, die 0 der Close und der Index der um den Index Kerzen verschobenen Indikator
MA[Index]=MAErgebnis;
}
Comment(" MA9 = ",DoubleToStr(MA[9],5)," MA5 = ",MA[5]," MA1 =",MA[1]);