2010-08-07 12 views
0

je jouais avec ActiveQuant FinancialLibrary fonction SimpleMovingAverage SMA() ci-dessous:moyenne mobile simple pour les cours des actions

Y at-il une erreur dans le algo ci-dessous, où il calcule la moyenne en regardant « dans l'avenir » (comme est-ce que je < (période + skipdays))?

public static double SMA(int period, double[] vals, int skipdays) { 
    double value = 0.0; 
    for (int i = skipdays; i < (period + skipdays); i++) { 
     value += vals[i]; 
    } 
    value /= (double) period; 
    return value; 
} 

La boucle for peut être remplacée par celle ci-dessous, où elle semble tournée vers l'arrière.

for (int i = skipdays - period; i < skipdays; i++) { 
     value += vals[i]; 
    } 

Ai-je raté quelque chose?

+0

Code reformaté; s'il vous plaît revenir si incorrect. – trashgod

+0

Avez-vous une raison de préférer une implémentation à l'autre? – trashgod

Répondre

1

Je ne vois aucune erreur. L'algorithme calcule correctement la valeur moyenne du tableau de données de l'index skipdays (inclus) à l'index skipdays + period (exclusif) pour period > 0.

Vous devez peut-être reformuler la question.

+0

Oui, il n'y a pas d'erreur, car ActiveQuant attend les premières données ou vals [0] pour la date actuelle, vals [1] est les données pour hier, etc. Je l'utilisais dans l'autre sens. – portoalet