我试图从头开始实现Chaikin振荡器,但与真正的API相比,它给出了错误的结果(例如TradingView)
代码:
def exponential_moving_average_series(ts, n):
"""
:param df: pandas.DataFrame
:param n:
:return: pandas.DataFrame
"""
EMA = pd.Series(pd.ewma(ts, span = n, min_periods = n - 1), name = 'EMA_' + str(n))
return EMA
def chaikin_oscillator(df):
"""Calculate Chaikin Oscillator for given data.
:param df: pandas.DataFrame
:return: pandas.DataFrame
"""
ad = (2 * df['Close'] - df['High'] - df['Low']) * df['Volume'] / (df['High'] - df['Low'])
ad = ad + ad.shift(1)
ema3 = exponential_moving_average_series(ad,3);
ema10 = exponential_moving_average_series(ad,10);
Chaikin = pd.Series((ema3-ema10), name='Chaikin')
df = df.join(Chaikin)
return df
结果:
Chaikin oscillator from this code comparing to asset's closing positions graph
Chaikin oscillator reference from TradingView
数据格式为:
index Timestamp Open Close High Low Volume Chaikin
目前没有回答
相关问题 更多 >
编程相关推荐