STD
定义
public static IEnumerable<StdDevResult> GetStdDev<TQuote>( this IEnumerable<TQuote> quotes, int lookbackPeriods, int? smaPeriods = null) where TQuote : IQuote => quotes
描述
STD(Standard Deviation)标准差 是一个统计指标,用于衡量价格数据的离散程度和波动性。在技术分析中,它常用于衡量市场的波动率。
参数
参数名
类型
描述
lookbackPeriods
Int
回顾周期
返回值
返回值
类型
描述
Date
DateTime
日期
Mean
double
平均值
ZScore
double
Z值
StdDev
double
标准差数值
C# 示例
Python 示例
///指标数据
QuoteHistoryDay(10, (dic) =>
{
if (dic.Count > 0)
{
foreach (var item in dic.Keys)
{
///获取指标结果
var resp = dic[item].GetStdDev(14);
Console.WriteLine(resp.ToJson());
}
}
});
def init(self):
#初始化T+1 取消时间为120秒
self.SetConfig(1,120)
self.art = {}
self.invested = {}
logger.info("进入MyTestAlgorithm init方法:")
#添加单个指数 分钟为Resolution.Minute
self.index300 = self.AddIndex("000300.XSHG", Resolution.Daily).symbol
#添加指数下的所有 分钟为Resolution.Minute
stock_list=self.FillStocks(["000001.XSHE","000004.XSHE"],"",Resolution.Daily)
self.set_benchmark(self.index300)
# ========== 创建标准差指标 ==========
# 方法A:使用StandardDeviation类(计算价格的标准差)
from QuantConnect.Indicators import StandardDeviation
self.std_dev = StandardDeviation(20) # 20周期标准差
# 注册到数据流
self.RegisterIndicator(stock_list[0].symbol, self.std_dev, Resolution.Daily)
# 方法B:使用快捷方法
# self.std_dev = self.STD(self.symbol, 20, Resolution.Daily)
# 同时需要移动平均线作为基准
self.sma = self.SMA(stock_list[0].symbol, 20, Resolution.Daily)
# 方法C:计算收益率的波动率(更常用)
self.returns_std = self.STD(stock_list[0].symbol, 20, Resolution.Daily, Field.Close) # 价格标准差
#数据来了触发事件
def ondata(self,slice):
logger.info(fr"Symbol:{self.Time} ")
# 检查指标是否就绪
if not self.std_dev.IsReady or not self.sma.IsReady:
return
# 获取当前数据
current_std = self.std_dev.Current.Value
current_sma = self.sma.Current.Value
logger.info(fr"current_std:{current_std} current_sma:{current_sma} ")