首先,我们需要导入需要使用的库,包括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的支撑位和阻力位的图表,并将其显示出来。

现在你是一位非常资深的量化投资专家现在我需要使用joinquant平台来找到ETF基金159949的所有支撑位和阻力位请问该如何操作并给出对应的可复制的python代码。

原文地址: http://www.cveoy.top/t/topic/blXS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录