现在你是一位非常资深的量化投资专家现在我需要使用joinquant平台来找到ETF基金159949的所有支撑位和阻力位请问该如何操作并给出对应的可复制的python代码。
首先,我们需要导入需要使用的库,包括joinquant的api、pandas、numpy和matplotlib等:
import jqdatasdk as jq
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
接着,我们需要调用joinquant的api,获取ETF基金159949的每日行情数据:
jq.auth('账号', '密码') # 使用自己的账号和密码
start_date = '2016-01-01'
end_date = '2021-12-31'
security = '159949.XSHE'
df = jq.get_price(security, start_date=start_date, end_date=end_date, frequency='daily', fields=['open', 'high', 'low', 'close', 'volume'])
这里我们获取了ETF基金159949从2016年1月1日到2021年12月31日的每日开盘价、最高价、最低价、收盘价和成交量数据,并将其存储在一个pandas的DataFrame中。
接下来,我们可以使用技术分析中的支撑位和阻力位的计算公式来计算ETF基金159949的支撑位和阻力位:
def support_resistance(df):
levels = []
pivot = df['close'].iloc[0]
high = df['high']
low = df['low']
close = df['close']
for i in range(len(df)):
if i == 0:
levels.append({'PP': pivot, 'R1': 0, 'S1': 0, 'R2': 0, 'S2': 0, 'R3': 0, 'S3': 0})
else:
prev_high = high[i-1]
prev_low = low[i-1]
prev_close = close[i-1]
diff_high = prev_high - pivot
diff_low = pivot - prev_low
if diff_high > diff_low:
r1 = 2 * pivot - prev_low
s1 = pivot - diff_high
else:
r1 = 2 * pivot - prev_high
s1 = pivot - diff_low
r2 = pivot + (prev_high - prev_low)
s2 = pivot - (prev_high - prev_low)
r3 = r2 + (prev_high - prev_low)
s3 = s2 - (prev_high - prev_low)
levels.append({'PP': pivot, 'R1': r1, 'S1': s1, 'R2': r2, 'S2': s2, 'R3': r3, 'S3': s3})
pivot = (prev_high + prev_low + prev_close) / 3
return pd.DataFrame(levels)
这里我们定义了一个名为support_resistance的函数,该函数接受一个pandas的DataFrame作为参数,返回一个包含支撑位和阻力位的数据框。该函数使用了标准的技术分析计算公式来计算支撑位和阻力位。
最后,我们可以使用上述代码,计算ETF基金159949的支撑位和阻力位,并绘制出相应的支撑位和阻力位的图表:
levels = support_resistance(df)
plt.figure(figsize=(16, 8))
plt.plot(df.index, df['close'], color='black')
plt.plot(levels.index, levels['PP'], color='blue')
plt.plot(levels.index, levels['R1'], color='red')
plt.plot(levels.index, levels['S1'], color='green')
plt.plot(levels.index, levels['R2'], color='red', linestyle='--')
plt.plot(levels.index, levels['S2'], color='green', linestyle='--')
plt.plot(levels.index, levels['R3'], color='red', linestyle='-.')
plt.plot(levels.index, levels['S3'], color='green', linestyle='-.')
plt.legend(['Price', 'PP', 'R1', 'S1', 'R2', 'S2', 'R3', 'S3'])
plt.title('ETF基金159949的支撑位和阻力位')
plt.xlabel('日期')
plt.ylabel('价格')
plt.show()
这里我们使用matplotlib库绘制出了ETF基金159949的支撑位和阻力位的图表,并将其显示出来。
原文地址: http://www.cveoy.top/t/topic/blXS 著作权归作者所有。请勿转载和采集!