2017-04-04 2 views
1

Ich versuche, einen einfachen Technical-Analysis-Indikator mit xlwings zu replizieren. Die Liste/Daten scheinen jedoch keine Excel-Werte lesen zu können. Unten ist der CodeExcel xlwings Dateneingabe für Python Technische Indikatoren

import pandas as pd 
import datetime as dt 
import numpy as np 

@xw.func 
def EMA(df, n): 
    EMA = pd.Series(pd.ewma(df['Close'], span = n, min_periods = n - 1), name = 'EMA_' + str(n)) 
    df = df.join(EMA) 
    return df 

Wenn ich eine Liste von Excel-Daten eingeben: EMA = ({1,2,3,4,5}, 5}, bekomme ich folgende Fehlermeldung Typeerror: Muss Liste Indizes Ganzzahlen sein, nicht str EMA = pd.Serie (pd.ewma (df ['Schließen'], span = n, min_perioden = n - 1), Name = 'EMA_' + str (n))

(Expert) hilfe sehr geschätzt! Danke.

+0

EMA = ({1,2,3,4,5 }, 5} ist keine gültige Python-Syntax, bitte korrigieren Sie das. Ich nehme an, Sie rufen EMA ([1, 2, 3, 4, 5], 5) oder etwas Ähnliches an. – acidtobi

Antwort

1

EMA() erwartet ein DataFrame df und ein skalar n, und es gibt die EMA in einer separaten Spalte in der Quelle DataFrame.Sie übergeben eine einfache Liste von Werten, dies soll nicht funktionieren

einen Datenrahmen Konstruieren und die Werte in die Nähe Spalte zuzuweisen:

v = range(100) # use your list of values instead 
df = pd.DataFrame(v, columns=['Close']) 

Anruf EMA() mit diesem Datenrahmen:

EMA(df, 5)