2016-10-16 3 views
0

J'ai un code (ci-dessous) que j'essaie de corriger. Le but est de vérifier s'il y a eu 7 jours positifs consécutifs (la fermeture est supérieure à l'ouverture). Nous allons ensuite placer une valeur binaire le 8ème jour si cela est vrai, c'est-à-dire 1 si elle est Vrai et 0 si elle est Faux.Codage Nouvel indicateur de négociation

seven.bar.buy = function(open,close,n){ 
    seven.bar.buy = rep(0, length(open)) 
    for(i in (n+2):length(open)){ 
    for(j in (i-n-1):(i-1)){ 
    if(open[(i-n-1):(i-1)]<close[(i-n-1):(i-1)]){ 
    seven.bar.buy[i] == 1 
} 

} 
} 
    return(seven.bar.buy) 
} 

seven.bar.buy(open = Op(EURUSD.st1), close = Cl(EURUSD.st1), n = 7) 

Le code ci-dessus s'exécute sans erreur, mais la sortie est un vecteur de 0.

Je pense que l'erreur provient de la ligne 5 où j'essaie de comparer 7 fermées consécutives et s'ouvre dans une seule instruction if, puis affecter la valeur binaire pour vrai/faux.

Je sais pour un fait que 7 jours de hausse consécutifs existent dans l'échantillon OHLC données que j'ai pour l'EUR/USD, donc il ne devrait pas être un vecteur de 0.

Y a-t-il un moyen de contourner cela? Est-ce la seule erreur?

Répondre

0

J'ai apporté plusieurs modifications à votre code. Veuillez tester ma solution.

seven.bar.buy = function(open,close,n){ 
    seven.bar.buy = rep(0, length(open)) 
    for(i in (n+2):length(open)){ 
     if(open[(i-n):i]<close[(i-n):i]){ 
      seven.bar.buy[i] = 1 
     } 
    } 
    return(seven.bar.buy) 
}