2016-08-16 1 views
-1

Ich habe Probleme, technische Lagerindikatoren zu finden, die eine For-Schleife verwenden, um Bestände zu durchlaufen.Wie verwenden Sie für die technische Analyse Börsenkurse und For-Schleifen in R zusammen?

Unten verwende ich 10 Aktien und versuche zu sehen (durch die Ausgabe), wenn der aktuelle 10-tägige gleitende Durchschnitt (MA) für jede Aktie über, unter oder zum aktuellen Aktienkurs ist.

library(quantmod) # also loads xts and TTR 
ticker = c("GD","BA","ALV","AGU","MOS","POT","MON","CF","BG","SQM") 
#10 ticker symbols that I want to find the 10 day MA of 

z<-1 # z starts with a value of 1 
for (z in 1:10) { 
    myStock<-getSymbols(ticker[z]) 
#gets the z'th stock ticker are puts in into variable myStock 
    stock_ts = ts(myStock$myStock.Adjusted) 

##Moving Average Calculations back 10 steps using TTR: 
    #SMA(stock_ts, n=10) 
    x<- length(stock_ts) 
    y <- 0 
    averagediv <- 10 
    for (i in (x-9):x) { 
    y <- y + stock_ts[i] 
    } 

    ma10 <- y/averagediv 

    print(ticker[z]) 
    if(ma10 < stock_ts[x]) { 
     print(mySP) 
     print ("green") 
     finalMA<-"green" 
    } else if (ma10 > stock_ts[x]) { 
     print(mySP) 
     print ("red") 
     finalMA<-"red" 
    } else { 
     print(mySP) 
     print("even") 
     finalMA<-"even" 
    } 
} 

Der Code wird nicht erfolgreich ausgeführt werden, da myStock$myStock.Adjusted läuft nicht richtig. Ich bin mir ziemlich sicher, dass die Variable myStock nur den Börsenticker (zum Beispiel AAPL) enthält, nicht die tatsächlichen Aktieninformationen mit den Hochs, Tiefs, offenen, Schlusskursen und dergleichen.

Mein 10-Tage-MA-Code funktioniert meines Wissens nach perfekt für einzelne Bestände, nur nicht mit der for-Schleife. Zum Beispiel der Code:

... 
getSymbols("AAPL") 
stock_ts = ts(AAPL$AAPL.Adjusted) 
##Moving Average Calculations back 10 steps using TTR: 
... 

Ich plane, diesen Code mehr Ticker und komplexere Analyse hinzuzufügen. Daher ist die Auflistung des gesamten Codes für jede Aktie keine sehr praktikable oder effiziente Lösung.

Danke für Ihre Hilfe.

Antwort

0

Keine manuelle Berechnung der gleitenden Durchschnitte erforderlich. quant mod/TTR hat eine ganze Reihe von verschiedenen MAs. (SMA, EMA, WMA ...) ? ist dein Freund :-). Mit nur wenigen Zeilen können Sie MAs an Ihre Symbole und Diagramme anhängen, mit dem aktuellen Preis vergleichen oder tun, was Sie wollen. dh ein einfacher 10 Tage MA die eingestellten Schließungen mit:

tickers <- c('GE','IBM') 
getSymbols(tickers, from = '2016-01-01') 
smas <- lapply(1:length(tickers),function(x) SMA(get(tickers[x])[,6],10)) 
stocks <- lapply(1:length(tickers), function(x) cbind(get(tickers[x]),smas[[x]][,1])) 
names(stocks) <- tickers 

Alle Aktien in einer Liste sind jetzt und Sie können sie wie so Zugang: dh zu bekommen GE

> tail(stocks$GE) 
      GE.Open GE.High GE.Low GE.Close GE.Volume GE.Adjusted SMA 
2016-08-08 31.30 31.40 31.21 31.27 20434100  31.27 31.219 
2016-08-09 31.23 31.35 31.15 31.30 20108800  31.30 31.202 
2016-08-10 31.25 31.34 31.20 31.27 18538100  31.27 31.201 
2016-08-11 31.31 31.37 31.20 31.29 37986200  31.29 31.205 
2016-08-12 31.20 31.28 31.18 31.24 21327000  31.24 31.215 
2016-08-15 31.30 31.35 31.22 31.24 19546600  31.24 31.224 

Wenn Sie das konvertierende Liste zurück zu einzelnen benannten XTS-Objekten können Sie die list2env Funktion verwenden.

+0

Vielen Dank für Ihre Hilfe! Nur als Referenz habe ich die SMA-Zeile in meinem Code auskommentiert und manuell eine SMA-Berechnung durchgeführt, weil mir gesagt wurde, dass ich für die Untersuchung arbeite, die ich mache :). – scuba

Verwandte Themen