【Quant102】 经典技术指标 Pandas 实现(第一部分)(3)

简介: 【Quant102】 经典技术指标 Pandas 实现(第一部分)

【Quant102】 经典技术指标 Pandas 实现(第一部分)(2)https://developer.aliyun.com/article/1524457

RSI 策略

假设你是个高级程序员和量化研究员,编写函数实现RSI策略。函数接受数据帧df,RSI列名称rsi_colinplace参数控制是否原地更新df。买卖信号应保存在signal列中。最后返回df

def rsi_strategy(df, rsi_col='rsi', inplace=False):
    """
    实现RSI策略,生成买卖信号。
    
    参数:
    df : DataFrame
        包含RSI指标数据的DataFrame,必须包含'rsi_col'列。
    rsi_col : str
        RSI指标的列名。
    inplace : bool, optional
        是否在原地更新DataFrame,默认为False。
    
    返回:
    df : DataFrame
        原始DataFrame,增加了一个名为'signal'的列,包含买卖信号。
    """
    
    # 复制DataFrame以避免修改原始数据
    if not inplace:
        df = df.copy()
    
    # 初始化信号列,默认为无操作
    df['signal'] = 0
    
    # 产生买入信号:RSI低于30
    df.loc[df[rsi_col] < 30, 'signal'] = 1
    
    # 产生卖出信号:RSI高于70
    df.loc[df[rsi_col] > 70, 'signal'] = -1
    
    return df

KDJ 指标

假设你是个高级程序员和量化研究员,编写函数实现 KDJ 指标。函数接受数据帧dfinplace参数控制是否原地更新dfdf包含四个列:open开盘价、high最高价、low最低价和close收盘价。所有指标都应当保存到df中,最后返回df

def kdj(df, k_col='K', d_col='D', j_col='J', n=9, m1=3, m2=3, inplace=False):
    """
    计算KDJ指标,并更新DataFrame。
    
    参数:
    df : DataFrame
        包含价格数据的DataFrame,必须包含'open', 'high', 'low', 'close'列。
    n : int, optional
        计算KDJ指标的时间窗口,默认为9。
    m1 : int, optional
        计算D线的时间窗口,默认为3。
    m2 : int, optional
        计算J线的参数,默认为3。
    inplace : bool, optional
        是否在原地更新DataFrame,默认为False。
    
    返回:
    df : DataFrame
        包含KDJ指标的新DataFrame(如果inplace为False)。
    """
    
    # 复制DataFrame以避免修改原始数据
    if not inplace:
        df = df.copy()
    
    # 计算最小值和最大值
    low_min = df['low'].rolling(window=n).min()
    high_max = df['high'].rolling(window=n).max()
    
    # 计算K值
    df[k_col] = (df['close'] - low_min) / (high_max - low_min) * 100
    
    # 计算D值
    df[d_col] = df[k_col].rolling(window=m1).mean()
    
    # 计算J值
    df[j_col] = m2 * df[d_col] - df[k_col].rolling(window=m2).mean()
    
    return df

【Quant102】 经典技术指标 Pandas 实现(第一部分)(4)https://developer.aliyun.com/article/1524459

相关文章
|
7月前
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(4)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
28 0
|
7月前
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(1)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
27 0
|
7月前
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(5)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
38 0
|
7月前
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(2)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
29 0
|
7月前
|
数据可视化 数据挖掘 Linux
第四章 Pandas 统计分析基础
第四章 Pandas 统计分析基础
254 0
|
数据挖掘 数据处理 索引
Python数据分析大杀器之Pandas基础2万字详解(学pandas基础,这一篇就够啦)
Python数据分析大杀器之Pandas基础2万字详解(学pandas基础,这一篇就够啦)
|
数据可视化 Linux 索引
第四章 Pandas 统计分析基础(下)
第四章 Pandas 统计分析基础(下)
834 0
第四章 Pandas 统计分析基础(下)
|
数据挖掘 索引 Python
第四章 Pandas 统计分析基础(上)
第四章 Pandas 统计分析基础
163 0
第四章 Pandas 统计分析基础(上)
|
数据挖掘 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas高级—数据转换(1)(八)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
135 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas高级—数据转换(1)(八)
|
数据挖掘 Python
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas高级—数据转换(2)(九)
你好,感谢你能点进来本篇博客,请不要着急退出,相信我,如果你有一定的 Python 基础,想要学习 Python数据分析的三大库:numpy,pandas,matplotlib;这篇文章不会让你失望,本篇博客是 【AIoT阶段一(下)】 的内容:Python数据分析,
126 0
数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解)—Pandas—pandas高级—数据转换(2)(九)
下一篇
无影云桌面