股价波动指标ATR的计算及绘制

指标基础知识:ATR(Average True Range,平均真实波幅) ATR(平均真实波幅)是技术分析中衡量资产价格波动强度的核心指标,由J.WellesWilder于1978年提出。它通过计算最高价与最低价、前收盘价之间的最大差值(真实波幅TR)的移动平均值,反映市场波动幅度而不指示方向。ATR具有动态适应性、跨市场普适性但存在滞后性特点,主要应用于动态止损设置(如止损价=最高价-2×ATR)、仓位控制(头寸规模=风险额度/ATR)和趋势强度判断。其局限性包括无法指示价格方向、对跳空行情敏感等,需结合趋势指标使用。相比标准差和布林带,ATR更专注于纯波动幅度测量,是多资产风 阅读详情
AI摘要

本文介绍了如何计算股价的平均真实波动幅度(ATR),这是一个衡量市场波动程度的技术分析指标。通过计算ATR并设置为止损指标,可以避免短期市场噪声干扰。文中给出了具体的Python代码示例,展示了如何从招商银行的日K线数据中计算ATR,并以3倍ATR作为止损价格,将结果叠加到K线图上,同时包括了均线、成交量等信息的绘制。

在范·K·撒普的《通向财务自由之路》这本书中分析止损指标时提到波动幅度止损,并认为该资本是可以选用的最好的止损指标之一。股价的平均波动幅度在某种程度上代表了市场中的噪声,为了防止止损被短期的市场噪声所干扰,可以把初始止损价格设置为股价波动幅度的倍数,通常建议设置为ATR的3倍。那么股价的平均波动幅度究竟要如何计算呢?下面我们来仔细分析一下。

股价的平均波动幅度指标是由JR. Welles Wilder在其著作《技术交易系统中的新概念(New Concepts in Technical Trading Systems)》中提出的技术分析指标,全称为平均真实波动幅度(ATR,Average True Range),指的是一定时间周期内的股价波动幅度的移动平均值。计算方法如下:

(1)当日最高价和最低价之差;

(2)上一收盘价和当日最高价之差;

(3)上一收盘价和当日最低价之差;

(4)取以上三个差值的绝对值中的最大值作为当日的股价波动幅度TR。

(5)ATR指标是N个交易日波动幅度TR的移动平均值,N一般取14。

ATR指标在实际使用过程中经常用来衡量市场波动的程度,也可以称为波动变化率或市场活跃度。当ATR指标较小时,表示市场较为平稳;ATR指标变化较大时表示市场成交活跃。在短期交易中,由于剧烈的价格波动会导致短期的价格频繁达到止损位,因此趋势交易需要监测该指标,以便对止损位做出合理设置。

下面以上一篇绘制K线和成交量的文章中获取的招商银行日K线数据为例,来计算一下ATR指标,并以3倍ATR作为止损曲线将其叠加到K线中。

计算ATR的代码如下:

df = ak.stock_zh_a_hist(symbol="600036", start_date='20220101',end_date='20220916', adjust="qfq").iloc[:, :6]
df.columns = ['date','open','close','high','low','volume',] #列名改为英文方便下面操作
df['ATR1']=df['high']-df['low'] #当日最高价-最低价
df['ATR2']=abs(df['close'].shift(1)-df['high']) #上一日收盘价-当日最高价
df['ATR3']=abs(df['close'].shift(1)-df['low']) #上一日收盘价-当日最低价df['ATR4']=df['ATR1']
for i in range(len(df)): #取价格波动的最大值
    if df.iloc[i,14]<df.iloc[i,12] :
        df.iloc[i,14]=df.iloc[i,12]
    if df.iloc[i,14]<df.iloc[i,13] :
        df.iloc[i,14]=df.iloc[i,13]
df['ATR']=df.ATR4.rolling(14).mean() # N=14的ATR值
df['stop']=df['close'].shift(1)-df['ATR']*3 #止损价=(上一日收盘价-3*ATR)

其中’ATR’为最终计算得到的ATR指标值,这里取N=14,即采用14天移动平均。

注意:上述代码在操作表的过程中,是采用iloc(),通过列序号来找对应的列。这种方式操作简单,但是代码可读性非常差。这里可以改用loc()通过列名来操作表,这样就不用管列序号了。

df.index=range(len(df))
df['ATR1']=df['high']-df['low'] #当日最高价-最低价
df['ATR2']=abs(df['close'].shift(1)-df['high']) #上一日收盘价-当日最高价
df['ATR3']=abs(df['close'].shift(1)-df['low']) #上一日收盘价-当日最低价
df['ATR4']=df['ATR1']
for i in range(len(df)): #取价格波动的最大值
    if df.loc[i,'ATR4']<df.loc[i,'ATR2'] :
        df.loc[i,'ATR4']=df.loc[i,'ATR2']
    if df.loc[i,'ATR4']<df.loc[i,'ATR3'] :
        df.loc[i,'ATR4']=df.loc[i,'ATR3']
df['ATR']=df.ATR4.rolling(14).mean() # N=14的ATR值
df['stop']=df['close'].shift(1)-df['ATR']*3 #止损价=(上一日收盘价-3*ATR)

需要注意的是,loc()要想方便的操作行,需要将行索引设置为数字序号。这个是通过重新设置索引实现的:

df.index=range(len(df))

对于loc()和iloc()操作经常弄混的,可以看下这篇《DataFrame常用操作实例》。

把以上ATR和计算与上一篇的K线绘制代码整合起来如下:

import akshare as ak
import pandas as pd
from pyecharts.charts import *
from pyecharts import options as opts

df = ak.stock_zh_a_hist(symbol="600036", start_date='20220101',end_date='20220916', adjust="qfq").iloc[:, :6]
df.columns = ['date','open','close','high','low','volume',] #列名改为英文方便下面操作

# 把date作为日期索引
df.index = pd.to_datetime(df.date)
df.index=df.index.strftime('%Y%m%d')
df=df.sort_index()
df['sma']=df.close.rolling(5).mean()
df['lma']=df.close.rolling(10).mean()
df['lma20']=df.close.rolling(20).mean()
df['lma30']=df.close.rolling(30).mean()
df['lma60']=df.close.rolling(60).mean()
df.index=range(len(df)) #修改索引为数字序号
df['ATR1']=df['high']-df['low'] #当日最高价-最低价
df['ATR2']=abs(df['close'].shift(1)-df['high']) #上一日收盘价-当日最高价
df['ATR3']=abs(df['close'].shift(1)-df['low']) #上一日收盘价-当日最低价
df['ATR4']=df['ATR1']
for i in range(len(df)): #取价格波动的最大值
    if df.loc[i,'ATR4']<df.loc[i,'ATR2'] :
        df.loc[i,'ATR4']=df.loc[i,'ATR2']
    if df.loc[i,'ATR4']<df.loc[i,'ATR3'] :
        df.loc[i,'ATR4']=df.loc[i,'ATR3']
#for i in range(len(df)): #取价格波动的最大值
#    if df.iloc[i,14]<df.iloc[i,12] :
#        df.iloc[i,14]=df.iloc[i,12]
#    if df.iloc[i,14]<df.iloc[i,13] :
#        df.iloc[i,14]=df.iloc[i,13]
df['ATR']=df.ATR4.rolling(14).mean() # N=14的ATR值
df['stop']=df['close'].shift(1)-df['ATR']*3 #止损价=(上一日收盘价-3*ATR)

df.index = pd.to_datetime(df.date)
df.index=df.index.strftime('%Y%m%d')
kline = (
    Kline(init_opts=opts.InitOpts(width="1200px",height="600px"))
    .add_xaxis(xaxis_data=list(df.index)) #X轴数据
    .add_yaxis(
        series_name="klines", #序列名称
        y_axis=df[["open","close","low","high"]].values.tolist(), #Y轴数据
        itemstyle_opts=opts.ItemStyleOpts(color="#ec0000", color0="#00da3c"),
        markpoint_opts=opts.MarkPointOpts(
            data=[#添加标记符
            opts.MarkPointItem(type_='max', name='最大值'),
            opts.MarkPointItem(type_='min', name='最小值'), ],
            #symbol='circle',
            #symbol_size=[100,30]
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="K线及均线",pos_left='45%'), #标题位置
        legend_opts=opts.LegendOpts(pos_right="35%",pos_top="5%"), #图例位置
        #legend_opts=opts.LegendOpts(is_show=True, pos_bottom=10, pos_left="center"),
        datazoom_opts=[
            opts.DataZoomOpts(
                is_show=False,
                type_="inside", #内部缩放
                xaxis_index=[0,1],  #可缩放的x轴坐标编号
                range_start=0, range_end=100, #初始显示范围
            ),
            opts.DataZoomOpts(
                is_show=True, #显示滑块
                type_="slider", #滑块缩放
                xaxis_index=[0,1],  #可缩放的x轴坐标编号
                pos_top="85%",
                range_start=0, range_end=100, #初始显示范围
            ),
        ],
        yaxis_opts=opts.AxisOpts(
            is_scale=True, #缩放时是否显示0值
            splitarea_opts=opts.SplitAreaOpts( #分割显示设置
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1) ),
        ),
        tooltip_opts=opts.TooltipOpts( #提示框配置
            trigger="axis", #坐标轴触发提示
            axis_pointer_type="cross", #鼠标变为十字准星
            background_color="rgba(245, 245, 245, 0.8)", #背景颜色
            border_width=1, border_color="#ccc", #提示框配置
            textstyle_opts=opts.TextStyleOpts(color="#000"), #文字配置
        ),
        visualmap_opts=opts.VisualMapOpts( #视觉映射配置
            is_show=False, dimension=2,
            series_index=5, is_piecewise=True,
            pieces=[ {"value": 1, "color": "#00da3c"}, {"value": -1, "color": "#ec0000"}, ],
        ),
        axispointer_opts=opts.AxisPointerOpts( #轴指示器配置
            is_show=True,
            link=[{"xAxisIndex": "all"}],
            label=opts.LabelOpts(background_color="#777"), #显示标签设置
        ),
        brush_opts=opts.BrushOpts(
            x_axis_index="all", #所有series
            brush_link="all", #不同系列选中后联动
            out_of_brush={"colorAlpha": 0.1}, #高亮显示程度
            brush_type="lineX", #纵向选择
        ),
    )
)

#均线
line=Line()
line.add_xaxis( df.index.tolist() ) #X轴数据
line.add_yaxis( 'MA5', #序列名称
                df.sma.round(2).tolist(), #Y轴数据
                is_smooth=True, #平滑曲线
                is_symbol_show=False #不显示折线的小圆圈
)
line.add_yaxis( 'MA10',df.lma.round(2).tolist(),is_smooth=True,is_symbol_show=False )
line.add_yaxis( 'MA20',df.lma20.round(2).tolist(),is_smooth=True,is_symbol_show=False )
line.add_yaxis( 'MA30',df.lma30.round(2).tolist(),is_smooth=True,is_symbol_show=False )
line.add_yaxis( 'MA60',df.lma60.round(2).tolist(),is_smooth=True,is_symbol_show=False )
line.set_series_opts(
    label_opts=opts.LabelOpts(is_show=False), #是否显示数据标签
    linestyle_opts=opts.LineStyleOpts(width=1), #线宽
)
line.set_global_opts(
    datazoom_opts=[
        opts.DataZoomOpts(
            is_show=False,
            type_="inside", #图内缩放调整
            xaxis_index=[0,1],  #可缩放的x轴坐标编号
            range_start=0, range_end=100, #初始显示范围
        ),
        opts.DataZoomOpts(
            is_show=True, #是否显示滑块
            type_="slider", #外部滑块缩放调整
            xaxis_index=[0,1],  #可缩放的x轴坐标编号
            pos_top="85%",
            range_start=0, range_end=100, #初始显示范围
        ),
    ],
    legend_opts=opts.LegendOpts(pos_right="20%",pos_top="5%"), #图例位置
    tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross") #趋势线设置
)
stop=(
    Line()
    .add_xaxis( df.index.tolist() ) #X轴数据
    .add_yaxis( 'STOP', #序列名称
                df.stop.round(2).tolist(), #Y轴数据
                is_smooth=True, #平滑曲线
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False), #是否显示数据标签
        linestyle_opts=opts.LineStyleOpts(width=2), #线宽
    )
    .set_global_opts(
        datazoom_opts=[
            opts.DataZoomOpts(
                is_show=False,
                type_="inside", #图内缩放调整
                xaxis_index=[0,1],  #可缩放的x轴坐标编号
                range_start=0, range_end=100, #初始显示范围
            ),
            opts.DataZoomOpts(
                is_show=True, #是否显示滑块
                type_="slider", #外部滑块缩放调整
                xaxis_index=[0,1],  #可缩放的x轴坐标编号
                pos_top="85%",
                range_start=0, range_end=100, #初始显示范围
            ),
        ],
        legend_opts=opts.LegendOpts(pos_right="20%",pos_top="5%"), #图例位置
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross") #趋势线设置
    )
)
kline.overlap(line)
kline.overlap(stop) #止损数据叠加到K线
#成交量
bar = (
    Bar()
    .add_xaxis(xaxis_data=list(df.index)) #X轴数据
    .add_yaxis(
        series_name="volume",
        y_axis=df["volume"].tolist(), #Y轴数据
        xaxis_index=1,
        yaxis_index=1,
        label_opts=opts.LabelOpts(is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(
            color='#ef232a' #'#14b143'
        ),
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(
            type_="category", #坐标轴类型-离散数据
            grid_index=1,
            axislabel_opts=opts.LabelOpts(is_show=False),
        ),
        legend_opts=opts.LegendOpts(is_show=False),
    )
)
#价格波动指标ATR
atr=(
    Line()
    .add_xaxis( df.index.tolist() ) #X轴数据
    .add_yaxis( 'ATR', #序列名称
                df.ATR.round(2).tolist(), #Y轴数据
                yaxis_index=1,
                is_smooth=True #平滑曲线
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False), #是否显示数据标签
        linestyle_opts=opts.LineStyleOpts(width=2), #线宽
    )
    .set_global_opts(
        datazoom_opts=[
            opts.DataZoomOpts(
                is_show=False,
                type_="inside", #图内缩放调整
                xaxis_index=[0,1],  #可缩放的x轴坐标编号
                range_start=0, range_end=100, #初始显示范围
            ),
            opts.DataZoomOpts(
                is_show=True, #是否显示滑块
                type_="slider", #外部滑块缩放调整
                xaxis_index=[0,1],  #可缩放的x轴坐标编号
                pos_top="85%",
                range_start=0, range_end=100, #初始显示范围
            ),
        ],
        legend_opts=opts.LegendOpts(pos_right="20%",pos_top="5%"), #图例位置
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross") #趋势线设置
    )
)
#bar.overlap(atr)

grid_chart = Grid(
    init_opts=opts.InitOpts(
        width="1200px", #显示图形宽度
        height="600px",
        animation_opts=opts.AnimationOpts(animation=False), #关闭动画
    )
)
grid_chart.add( #加入均线图
    kline,
    grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", height="40%"),
)
grid_chart.add( #加入成交量图
    bar,
    grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", pos_top="55%", height="20%"),
)
grid_chart.add( #加入ATR图
    atr,
    grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", pos_top="80%", height="15%"),
)

grid_chart.render("ATR.html")
df.to_excel('example.xlsx', sheet_name='600036', index=False)

计算完成后的数据表如下图所示:

结果如下图所示:

上图中的‘ATR’即为股价的平均真实波动幅度,‘STOP’即为根据ATR计算得到的止损曲线。写完才发现加入ATR曲线以后,底部的ATR图与缩放滑块的位置居然重叠了☹,大家自己把Grid()中几个图表的pos_top和height调整一下就好了(具体可参考上一篇文章中相关参数的说明)~~😊

-----------------------------------

原创不易,请多支持!

平均真实波幅(Average True Range, ATR) 平均真实波幅(Average True Range, ATR)是一种技术分析指标, 用于衡量金融市场中价格波动的幅度。它是由J. Welles Wilder Jr. 在1978年提出的, 主要用于识别市场的波动性和趋势强度。 阅读详情

相关推荐

python cnn 股市_股市分析——ATR指标(附python代码)

今天给大家介绍下ATR指标,废话不多说,直接上定义和公式,代码在公式后面(如果找不到文档的,可以从第一篇代码里下载)纯理工男一枚,不喜勿喷,只是想编编代码玩玩,以后可能再用CNN、DNN什么的预测一下。小白不白:初识股市+爬取数据画图(Python代码)​zhuanlan.zhihu.comATR均幅指标均幅指标Average true range(ATR)是取一定时间周期内的股价波动幅度的移动平...

weixin_39693950的博客 2399

ATR指标完整指南

ATR指标的原文是Average True Range,原文的意思是「平均真实范围」指标,所谓的真实范围,其实指的是真实的股价「波动」区域.这个指标也是威尔德(Wilder)所发明的。 在计算ATR指标时,要先算出TR (True Range)这个数列,TR有一个明确的定义, 它指的是在以下三个数字中最大的那个数字:1. 今日最高价减最低价;2.今日最高价减昨日收盘价的绝对值;3. 今日最低价减昨日收盘价的绝对值。TR (在此指的是今天股价真正的波动范围). ATR#平均真实范围 我喜欢平均真实范围(

小壁虎的春天 6万+

量化交易技术指标实战解析——从ATR到MACD的深度应用

本文深度解析量化交易中ATR、MA与MACD三大核心技术指标的实战应用。ATR作为市场波动性的精准尺子,是动态风险管理的关键;MA构成趋势跟踪的基石;MACD则擅长捕捉趋势动能与背离信号。文章通过具体策略案例,展示了如何将这些指标组合运用,以构建稳健的自动化交易系统,优化风险与收益。

z5a6b的博客 956

图表背后的秘密 | 技术指标讲解:ATR指标

ATR(Average True Range)被称为平均真实波幅。起初应用于股票市场分析,主要用于研判买卖时机,是显示市场变化率的反趋向指标,由威尔德1978年在其书中提出,目前已成为众多指标经常引用的技术量。

m0_62038975的博客 9058

TA-Lib实战指南:波动率指标(ATR/NATR/TRANGE)在量化交易中的应用

本文深入解析了TA-Lib中三大波动率指标ATR、NATR和TRANGE的原理与应用。通过Python实战代码,详细展示了如何计算这些指标并将其应用于量化交易的核心环节,包括动态止损、波动率过滤、仓位管理以及构建ATR通道等进阶策略,帮助交易者有效衡量市场风险并优化决策。

weixin_29096377的博客 135

[量化学院]借助talib使用技术分析指标来炒股

什么是技术分析 所谓股票的技术分析,是相对于基本面分析而言的。基本分析法着重于对一般经济情况以及各个公司的经营管理状况、行业动态等因素进行分析,以此来研究股票的价值,衡量股价的高低。而技术分析则是透过图表或技术指标的记录,研究市场过去及现在的行为反应,以推测未来价格的变动趋势。其依据的技术指标的主要内容是由股价、成交量或涨跌指数等数据计算而得的,技术分析只关心证券市场本身的变化,而不考虑会对其产生...

bigquant的博客 7317

Talib学习笔记(四)- 波动率指标学习

在前三篇文档中我们大概学习了成交量指标、价格指标和重叠研究指标(均线相关),其中成交量就是多空双方的力量对比指标,经过作图发现能量潮和ADOSC指标比较好,其均通过成交量的统计得出。如...

tianjingle 7130

江恩波动率副图指标源码解析:通达信ATR归一化实战

在股票技术分析中,波动率是衡量价格运动速度与市场情绪的核心概念,而江恩理论的本质正是对市场运行节奏的量化描述。尽管威廉·江恩未留下公开公式,后人基于其思路构建了多种波动率指标,其中通达信副图指标通过ATR平均真实波幅与归一化处理,将波动率压缩至0到2区间,以1.0为多空分界。这类指标运用统计学中的均线与标准差布林带原理,识别波动率的极端放大或萎缩,从而辅助判断趋势启动与变盘节点。实际应用中,投资者常结合K线形态与成交量,将副图指标作为状态监测工具,并可延伸至选股公式,筛选出波动率结构突变的品种。本文以一份典

weixin_29061509的博客 98

股票——真实波动幅度均值

ATR(Average True Range,真实波动幅度均值)是一个用来衡量股价波动性的技术指标。 真实波动幅度均值(ATR)是交易系统设计者的一个不可缺少的工具,它称得上是技术指标中的一匹真正的黑马。每一位系统交易者都应当熟悉ATR及其具有的许多有用功能。其众多应用包括:参数设置,入市,止损,获利等,甚至是资金管理中的一个非常有价值的辅助工具。 概念介绍 真实波动幅度均...

diaoshen5288的博客 1413

文华财经指标公式源码atr指标止损止盈公式公式源码.doc

文华财经指标公式源码atr指标止损止盈公式公式源码.doc

基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计

本文介绍了基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计。该系统集成了INA219传感器和OLED显示屏,通过蓝牙实现无线数据传输和远程控制,适用于智能家居能耗监控和工业设备管理,具有成本低、精度高、功耗优化等优点。

qsc901234的博客 203

和学习率_Talib学习笔记(四) 波动率指标学习

在前三篇文档中我们大概学习了成交量指标、价格指标和重叠研究指标(均线相关),其中成交量就是多空双方的力量对比指标,经过作图发现能量潮和ADOSC指标比较好,其均通过成交量的统计得出。如果其趋势向上表示上涨力量较大,反正空方占优。但是再具体实践中还需要对风格切换的关键点进行仔细翔实。除此之外就是价格指标,价格指标只是单纯的试图通过数学计算得出能够代替所有交易价格的这样一个价格,通过仔细思...

weixin_33279969的博客 2052

高通平台camera构架sensor驱动详解

优先阅读。

a5566255的专栏 3249

Python实战ATR指标:从原理到量化交易应用

在量化交易和金融数据分析领域,波动率是衡量市场风险与机会的核心概念。其原理在于通过数学模型量化价格在一段时间内的变动幅度,为风险管理提供客观依据。这一技术价值在于将主观的风险感知转化为可计算、可执行的参数,是构建稳健交易系统的基石。其应用场景广泛,包括动态止损设置、仓位规模管理以及作为市场情绪的过滤器。本文将深入探讨平均真实波幅这一经典波动率指标,结合Python代码实现,展示如何将其应用于实际的量化策略中,帮助交易者构建更科学的决策框架。

weixin_30402231的博客 316

深入解析安卓/Linux固件:从DTB到DTS的反编译实战

本文详细介绍了如何从安卓/Linux设备固件中提取并反编译DTB文件,将其转换为可读的DTS源码。通过实战步骤,包括拆解boot.img、处理resource.img以及使用dtc工具,帮助开发者深入理解设备硬件配置,为固件定制、驱动调试和系统移植提供关键支持。

weixin_29274337的博客 339

无感无刷电机三段式启动避坑指南:从预定位到闭环切换的STM32代码实现

本文深入解析无感无刷电机的三段式启动流程,涵盖预定位、启动加速与闭环切换三大阶段。重点对比了恒频升压、恒压升频与升频升压三种核心启动策略的优劣,并提供了基于STM32的详细状态机代码实现与关键参数调试指南,帮助工程师有效规避启动失步、线圈过热等常见问题,实现稳定可靠的无感驱动。

herb5的博客 534

交易员如何在2018熊市中基于ATR实现短线交易

小编自己一直对金融市场交易很有热情,从大学开始,便不断地学习和吸收交易方面的知识,包括最近发现的一个叫QR量化投资社区的不错的平台,也给了自己很多启发。结合最近的市场情况,心血来潮,在此就分享一篇自己近期新的感悟和经验。 最近股市波动不断,不论是相同的还是不同市场状态下,交易的分析手段上都是有共性的,任何人也都可以参与市场。这里我就给大家介绍一下交易员应对2018熊市的独门绝技 - ATR。 笔者...

艾略特波浪理论 -江恩理论-海龟交易法则--江恩八线-K线组合形态 603

二叉树的操作之统计二叉树中节点的个数

一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数   二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中节点个数 再加上 根的右子树中节点的个数 借助遍历二叉树的思路,每访问一个结...

weixin_34200628的博客 4567

ATR指标讲解

真实波幅(ATR)  指标概述    真实波幅(ATR)主要应用于了解股价的震荡幅度和节奏,在窄幅整理行情中用于寻找突破时机。通常情况下股价的波动幅度会保持在一定常态下,但是如果有主力资金进出时,股价波幅往往会加剧。另外,在股价横盘整理、波幅减少到极点时,也往往会产生变盘行情。真实波幅(ATR)正是基于这种原理而设计的指标。   计算公式    1.TR=∣最高价-最低价∣和∣昨收-最高价∣的较大

IAlexanderI的专栏 1万+

华为OD机试双机位C卷-组装新的数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【组装新的数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 组装新的数组。

qq_45776114的博客 1145

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 268

Python实战:从零构建ATR指标,量化交易中的动态风险管理

在量化交易与金融数据分析领域,风险管理是构建稳健策略的基石。其核心原理在于通过数学模型对市场不确定性进行度量,从而为投资决策提供客观依据。技术价值体现在将主观经验转化为可计算、可回测的规则,提升决策的系统性与纪律性。应用场景广泛覆盖股票、期货、外汇等市场的仓位管理、止损设置与波动性分析。本文聚焦于平均真实波幅(ATR)这一经典波动率指标,通过Python代码实战,详细解析其计算逻辑,并展示如何将其应用于动态止损与仓位管理,帮助交易者构建适应市场波动的风险控制体系。

weixin_33883104的博客 244

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part1项目介绍与环境准备

看到这篇文章的你,相信对知识图谱相关概念不在陌生。知识图谱相关内容在实际开发中包含两个部分:1.知识图谱构建,2.知识图谱使用。知识图谱构建过程中涉及内容、技术都比较多。知识图谱的应用也逐渐在我们的生活中随处可见,其中基于知识图谱的问答系统就是其中的一个应用。基于知识图谱的问答系统称做KGQA(knowledge graph question answer),也有人称其为KBQA(knowledge based question answ).基于知识图谱的问答系统通常是使用的是领域知识图谱。下面就结合Git

让算法融入生活,改变生活! 4713

如何用Python进行历史股价分析

如何用Python进行历史股价分析一、 概述二、 概念三、 操作3.1 统计分析3.2 股票收益率3.3 日期分析3.4 周汇总3.5 真实波动幅度均值3.6 简单移动平均线3.7 指数移动平均线3.8 布林带3.9 线性模型3.10 趋势线 一、 概述 通过历史股价信息:日期、开市价(最高、最低)和收市价(最高、最低)、成交量,计算一些股价的统计指标,如收益率,有关价格的统计值,根据历史股价进行...

Penn Li的博客 3503

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python 数学和股票:Chaikin 波动率简介

Shake and Volatility 指标详解 本视频介绍了 Shake and Volatility 指标,它是一种衡量市场波动性的指标。 与其他指标对比: Shake and Volatility 与平均真实波动幅度 (Average True Range, ATR) 类似,但作者更推荐使用 ATR。 与布林带 (Bollinger Bands) 相比,Shake and Volatil...

sentdex的博客 622

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

三十六、ATR策略

#!/usr/bin/env python# -*- coding: utf-8 -*-import talibimport cross_order as orderimport time# atr周期atr_period = 14# 买卖时高于或低于ATR值的倍数buy_multi_atr = 2sell_multi_atr = 2'''简单的基于ta-lib的ATR标策略示例真实波幅(AT...

nbjjy的专栏 475

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: PyeCharts绘制K线图(续)
下一篇: BOLL指标计算及其买卖信号绘制实例
--莫名--
博客等级 码龄24年 653粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值