python:talib 计算 SAR

SAR指标,由技术分析大师Welles Wilder发明,是一种简单易学、准确的中短期技术分析工具。本文详细介绍了SAR指标的原理、应用及如何通过Python进行实际操作。当股价从SAR曲线下方向上突破时,为买入信号;反之,为卖出信号。SAR指标因其操作简便、稳重可靠,被称为“傻瓜”指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SAR指标解释:baike.baidu.com/item/SAR指标/6329095?fr=aladdin 

talib_sar.py 

# -*- coding: utf-8 -*-
import os, sys
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import talib

if len(sys.argv) ==2:
    code = sys.argv[1]
else:
    print('usage: python talib_sar.py stockcode ')
    sys.exit(1)

if len(code) !=6:
    print('stock code length: 6')
    sys.exit(2)

df = ts.get_k_data(code)
if df.empty ==True:
    print(" df is empty ")
    sys.exit(2)

df = df[ df['date'] > '2020-01-01']
if len(df) <10:
    print(" len(df) <10 ")
    sys.exit(2)

# SAR,Stop and Reverse,是 Welles Wilder发明的,SAR是一个基于价格/时间的指标.
sar = talib.SAR(df.high, df.low)
print(sar[-5:])

df['ma10'] = df['close'].rolling(window=10).mean()
df.index = pd.to_datetime(df.date)
# 画股票收盘价图 , SAR 散点图
df[['close','ma10']].plot(grid=True, title=code)
plt.plot(df.index, sar, '.',c='black', label='sar')
plt.legend(loc='best', shadow=True)
plt.show()

运行 python talib_sar.py 000063

在股市中我们有时会听到有股民谈到SAR指标,那什么是SAR指标呢?在股市中SAR指标都有哪些应用呢?现在让我们来了解一下相关的知识吧!
抛物线转向(SAR)也称停损点转向,其全称叫“Stop and Reveres”,缩写“SAR”,是由美国技术分析大师威尔斯·威尔德(Wells Wilder)所创造的,是一种简单易学、比较准确的中短期技术分析工具。由于SAR指标简单易懂、操作方便、稳重可靠等优势,因此,SAR指标又称为“傻瓜”指标,被广大投资者特别是中小散户普遍运用。SAR指标的一般研判标准包括以下四方面:
1、当股票价格从SAR曲线下方开始向上突破SAR曲线时,为买入信号,预示着股票价格一轮上升行情可能展开,投资者应迅速及时地买进该股票。
2、当股票价格向上突破SAR曲线后继续向上,而SAR曲线也同时向上运动时,表明上涨趋势已形成。SAR曲线对股票价格构成强劲的支撑,投资者应坚决看多或逢低买入该股票。
3、当股票价格从SAR曲线上方开始向下突破SAR曲线时,为卖出信号,预示着股票价格一轮下跌行情可能展开,投资者应及时地卖出该股票。
4、当股票价格向下突破SAR曲线后继续向下,而SAR曲线也同时向下运动的话,表明下跌趋势已形成,SAR曲线对价格会构成巨大的压力,投资者应坚决看空或逢高做空该股票。

 

<think>我们使用TA-Lib库中的MACD函数来计算MACD指标,该函数返回三个值:DIF(MACD线)、DEA(信号线)和MACD柱(histogram)。 根据用户需求,我们只需要计算并打印DIF部分(即MACD函数返回的第一个数组)。 步骤: 1. 确保已经安装TA-Lib库。如果没有安装,可以通过`pip install TA-Lib`安装(注意:在安装之前可能需要安装一些依赖,具体参考官方文档)。 2. 导入TA-Lib库(通常使用`import talib`)。 3. 准备数据:需要有一个包含收盘价的数组(或序列)。假设我们有一个名为`close_prices`的数组,存储了每日的收盘价。 4. 调用`talib.MACD`函数,并指定参数:fastperiod(默认12)、slowperiod(默认26)、signalperiod(默认9)。用户也可以自定义这些参数。 5. 函数返回三个数组:dif, dea, macdhist(即DIF, DEA, MACD柱)。我们只需要第一个数组dif。 6. 打印dif数组(即DIF值)。 注意:由于MACD计算需要一定长度的数据,所以返回的数组前面部分可能是NaN(无效值),直到有足够的数据计算第一个MACD值。 示例代码: 假设我们有一个包含收盘价的数据集(例如一个列表或NumPy数组),我们将计算DIF并打印。 参考引用[1]中给出的调用方式:dif, dea, bar = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9) 下面我们编写代码示例。</think>在Python中使用TA-Lib库计算MACD指标的DIF值并打印结果,可以按照以下步骤操作: ### 计算MACD的DIF值步骤 1. **导入TA-Lib库** 2. **准备收盘价数据**(需为NumPy数组格式) 3. **调用MACD函数**计算三个指标值 4. **提取DIF值**(返回的第一个数组) 5. **打印DIF结果** ```python import talib import numpy as np # 示例收盘价数据(替换为实际数据) close_prices = np.array([45.23, 46.54, 47.82, 48.15, 47.98, 49.25, 50.12]) # 计算MACD指标(默认参数:fast=12, slow=26, signal=9) dif, dea, macd_hist = talib.MACD(close_prices) # 打印DIF值 print("MACD的DIF值:") for i, value in enumerate(dif): print(f"第{i+1}天: {value:.4f}" if not np.isnan(value) else f"第{i+1}天: 数据不足") ``` ### 关键说明: 1. **数据要求**: - 输入数据必须是`numpy.ndarray`类型 - 前25个DIF值通常为`NaN`(因需26周期计算慢速EMA)[^1] 2. **参数调整**: ```python # 自定义参数示例(快线周期8,慢线周期17,信号周期9) dif_custom = talib.MACD(close_prices, fastperiod=8, slowperiod=17, signalperiod=9)[0] ``` 3. **输出示例**: ``` MACD的DIF值: 第1天: 数据不足 第2天: 数据不足 ... 第26天: 0.7821 第27天: 0.8653 ``` ### 实际应用建议 - 结合K线数据使用:`dif = talib.MACD(df['close'].values)[0]`[^2] - 交易策略应用:DIF与DEA形成金叉/死叉时作为买卖信号[^3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值