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

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

双均线策略

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

def dual_moving_average_strategy(df, short_col='sma_short', long_col='sma_long', inplace=False):
    """
    实现双均线策略,生成买卖信号。
    
    参数:
    df : DataFrame
        包含价格数据的DataFrame。
    short_col : str
        短周期均线的列名。
    long_col : str
        长周期均线的列名。
    
    返回:
    df : DataFrame
        原始DataFrame,增加了一个名为'signal'的列,包含买卖信号。
    """
    if not inplace:
        df = df.copy()
    # 初始化信号列,默认为无操作
    df['signal'] = 0
    
    # 产生买入信号:短周期均线由下向上穿越长周期均线
    df.loc[(df[short_col] > df[long_col]) & (df[short_col].shift(1) <= df[long_col].shift(1)), 'signal'] = 1
    
    # 产生卖出信号:短周期均线由上向下穿越长周期均线
    df.loc[(df[short_col] < df[long_col]) & (df[short_col].shift(1) >= df[long_col].shift(1)), 'signal'] = -1
    
    return df

布林带指标

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

def bollinger_bands(
  df, mid_col='mid_band', 
  upper_col='upper_band', 
  lower_col='lower_band', 
  window=20, num_std=2, 
  inplace=False
):
    """
    计算布林带指标,并更新DataFrame。
    
    参数:
    df : DataFrame
        包含价格数据的DataFrame,必须包含'open', 'high', 'low', 'close'列。
    window : int, optional
        计算简单移动平均线SMA的窗口大小,默认为20。
    num_std : int, optional
        计算布林带通道时使用的标准差倍数,默认为2。
    inplace : bool, optional
        是否在原地更新DataFrame,默认为False。
    
    返回:
    df : DataFrame
        包含布林带指标的新DataFrame(如果inplace为False)。
    """
    
    # 复制DataFrame以避免修改原始数据
    if not inplace:
        df = df.copy()
    
    # 计算中轨(简单移动平均线SMA)
    df['mid_band'] = df['close'].rolling(window=window).mean()
    
    # 计算价格的标准差
    std = df['close'].rolling(window=window).std()
    
    # 计算布林带上轨
    df['upper_band'] = df['mid_band'] + (std * num_std)
    
    # 计算布林带下轨
    df['lower_band'] = df['mid_band'] - (std * num_std)
    
    return df

布林带策略

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

def bollinger_bands_strategy(df, mid_col='mid_band', upper_col='upper_band', lower_col='lower_band', inplace=False):
    """
    实现布林带策略,生成买卖信号。
    
    参数:
    df : DataFrame
        包含价格数据的DataFrame,必须包含'mid_col', 'upper_col', 'lower_col'列。
    mid_col : str
        中轨(通常是简单移动平均线SMA)的列名。
    upper_col : str
        上轨的列名。
    lower_col : str
        下轨的列名。
    inplace : bool, optional
        是否在原地更新DataFrame,默认为False。
    
    返回:
    df : DataFrame
        原始DataFrame,增加了一个名为'signal'的列,包含买卖信号。
    """
    
    # 复制DataFrame以避免修改原始数据
    if not inplace:
        df = df.copy()
    
    # 初始化信号列,默认为无操作
    df['signal'] = 0
    
    # 产生买入信号:价格跌破下轨
    df.loc[df['close'] < df[lower_col], 'signal'] = 1
    
    # 产生卖出信号:价格突破上轨
    df.loc[df['close'] > df[upper_col], 'signal'] = -1
    
    return df

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

相关文章
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(5)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
164 0
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(4)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
175 0
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(2)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
189 0
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
378 0
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
575 0
|
6月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
528 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
371 1
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
379 0
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
332 2