​​​​​​​

print('当前x价的值,是只有一个数',bar.close_price,'\n','x价的所有值,是个数组array: ''\n',self.am.close,'\n','当前x价的前一个x价,(只有一个数)',self.am.close[-2],'\n','*='*9)

一.计算atr均线: 

atr_array = am.atr(self.atr_length, array=True)  # atr数组 如果array为True则返回整个array,如果为False则返回最新的值
atr_now = am.atr(self.atr_length)
# print('atr_now', atr_now)
self.atr_value = atr_array[-1]  # atr数组中最后一个atr 值,也就是当前atr值
# print('self.atr_value:', self.atr_value)
self.atr_ma = atr_array[-self.atr_ma_length:].mean()  # atr均线
atr_array = am.atr(self.atr_length, array=True)  # atr数组 如果array为True则返回整个array,如果为False则返回最新的值atr_now = am.atr(self.atr_length)# print('atr_now', atr_now)self.atr_value = atr_array[-1]  # atr数组中最后一个atr 值,也就是当前atr值# print('self.atr_value:', self.atr_value)self.atr_ma = atr_array[-self.atr_ma_length:].mean()  # atr均线
if self.atr_value > self.atr_ma,在当前atr值大于atr均值是执行策略开仓

二.计算n日收盘价的平均值和n日收盘价的标准差:

1.先来pandas 写法

df['平均值'] = df['close'].rolling(window=30).mean()
df['标准差'] = df['close'].rolling(30, min_periods=1).std(ddof=0)  # n天内close的标准差

2.,在vnpy写法(vnpy使用的numpy数组,计算n日内的平均值和标准差非常困难,所以我们要灵活机动的完成要求)

MA指标是指一定期限内,股票收盘价格的算术平均值。比如n日的收盘价之和除以n

df['平均值']=ta.MA(df['close'],30)

std标准差在vnpy.trader.utiliy里的ArrayManager类中的std指标已经计算,不得不说vnpy越用越爱啊.

在on_bar函数下用     df['标准差'] = self.am15.std(30)

3. 在numpy 计算n日收盘价的平均值

close_mean = np.convolve(close, np.ones(n) / n, 'valid')

三,计算n日内最高价的最大值,n天最低价的最小值!

正解:唐奇安通道的计算,该指标的计算方法为:

上线=Max(最高价,n):n天的最高价最大值
下线=Min(最低价,n):n天的最低价最小值
中线=(上线+下线)/2

四.在vnpy中收盘价:bar.close_price或am.close[-1],前收盘价:am.close[-2]

五 计算 close/前close  然后得到一个np.array: 用切片

am.close[1:] / am.close[:-1] 切片


a = [1,2,3,4,5,6]
print(a,"整个list")
print(a[::-1]," 整个list列表的反转")
print(a[1:],'保留,除了第一个之外的其他元素')
print(a[:-1],'保留,除了最后一个之外的其他元素')am.close[1:] / am.close[:-1] # 切片

官方写法:

from scipy.ndimage.interpolation import shiftpre_close = shift(am.close, 1, cval=0) # 前收盘价 array
r = am.close / pre_close

六 指标类计算:

ATR:

# atr数组 如果array为True则返回整个array,如果为False则返回最新的值
atr_array = am.atr(self.atr_length, array=True)
# art值
self.atr_value = atr_array[-1]  # atr数组中最后一个atr 值,也就是当前atr值
# 或
atr_now = am.atr(self.atr_length)
# atr均线
self.atr_ma = atr_array[-self.atr_ma_length:].mean()  

kdj

    def kdj(self, fastk_period, slowk_period, slowk_matype, slowd_period, slowd_matype, array=False):"""KDJ指标talib 计算 KDJ值对应的函数是Stochastic Oscillator Slow (Stoch),其返回值有两个,一个是快速确认线值,另外一个是慢速主干线值。KDJ 需要至少最近9天的数据。"""slowk, slowd = talib.STOCH(self.high, self.low, self.close, fastk_period, slowk_period,slowk_matype, slowd_period, slowd_matype)# 求出J值,J = (3 * D) - (2 * K)slowj = list(map(lambda x, y: 3 * x - 2 * y, slowk, slowd))if array:return slowk, slowd, slowjreturn slowk[-1], slowd[-1], slowj[-1]

 rsj高频波动率

class NewArrayManager(ArrayManager):def __init__(self, size=100):""""""super().__init__(size)self.return_array: np.ndarray = np.zeros(size)def update_bar(self, bar: BarData) -> None:"""更新K线"""# 先调用父类的方法,更新K线super().update_bar(bar)# 计算涨跌变化if not self.close_array[-2]:      # 如果尚未初始化上一根收盘价last_return = 0else:last_return = self.close_array[-1] / self.close_array[-2] - 1# 缓存涨跌变化self.return_array[:-1] = self.return_array[1:]self.return_array[-1] = last_returndef rsj(self, n: int) -> float:"""计算RSJ指标"""# 切片出要计算用的收益率数据return_data = self.return_array[-n:] # 计算RVrv = np.sum(pow(return_data, 2))# 计算RV +/-positive_data = np.array([r for r in return_data if r > 0])negative_data = np.array([r for r in return_data if r <= 0])rv_positive = np.sum(pow(positive_data, 2))rv_negative = np.sum(pow(negative_data, 2))# 计算RSJrsj = (rv_positive - rv_negative) / rvreturn rsj

bool上下轨,布林带宽度

self.boll_up, self.boll_down = self.am5.boll(self.boll_window, self.boll_dev)  # 计算布林上下轨boll_width = self.boll_up - self.boll_down  # 计算布林上下轨 宽度

RSI

self.rsi_value = self.am5.rsi(self.rsi_window)  # 计算rsi 值

k线最高价,最低价

        if self.pos == 0:self.intra_trade_high = bar.high_priceself.intra_trade_low = bar.low_priceelif self.pos > 0:self.intra_trade_high = max(self.intra_trade_high, bar.high_price)elif self.pos < 0:self.intra_trade_low = min(self.intra_trade_low, bar.low_price)

固定止损 百分比

# 多单固定止损elif self.pos > 0:self.intra_trade_high = max(self.intra_trade_high, bar.high_price)self.intra_trade_low = bar.low_pricelong_stop = self.intra_trade_high * \(1 - self.trailing_percent / 100)self.sell(long_stop, abs(self.pos), stop=True)# 空单固定止损elif self.pos < 0:self.intra_trade_low = min(self.intra_trade_low, bar.low_price)self.intra_trade_high = bar.high_priceshort_stop = self.intra_trade_low * \(1 + self.trailing_percent / 100)self.cover(short_stop, abs(self.pos), stop=True)

固定止盈止损

    def on_trade(self, trade: TradeData):"""Callback of new trade data update.回调新低交易数据并更新"""# 固定止盈止损设定 1.先牟定开仓价 为止盈止损的标的价 ,2.然后+-固定的数值作为止盈止损价格 挂止盈止损单# if self.pos != 0:#     if trade.direction == Direction.LONG:#         self.long_entry = trade.price  # 标记多头止盈价为 多头持仓价#         self.long_stop = self.long_entry + self.fixed_tp#     else:#         self.short_entry = trade.price#         self.short_stop = self.short_entry - self.fixed_tp# self.put_event()
布林策略中轨止损
 # 触碰布林中轨马上止损=======止损进阶=========self.long_entry = 0self.long_stop = 0self.short_entry = 0self.short_stop = 0# 触碰布林中轨马上止损=======止损进阶==========#     触碰布林中轨马上止损=======回测 btc/usdt 2017.9.3-2020.8.3
elif self.pos > 0:self.sell(self.boll_mid, abs(self.pos), True)
elif self.pos < 0:self.cover(self.boll_mid, abs(self.pos), True)
 # 触碰布林中轨马上止损=======止损进阶=========self.long_entry = 0self.long_stop = 0self.short_entry = 0self.short_stop = 0# 触碰布林中轨马上止损=======止损进阶==========#     触碰布林中轨马上止损=======回测 btc/usdt 2017.9.3-2020.8.3elif self.pos > 0:self.sell(self.boll_mid, abs(self.pos), True)elif self.pos < 0:self.cover(self.boll_mid, abs(self.pos), True)

布林策略 基于布林宽度的可变止损

# # 基于布林宽度的可变止损==================回测 btc/usdt 2017.9.3-2020.8.3# elif self.pos > 0:##     self.intra_trade_high = max(self.intra_trade_high, bar.high_price)#     condition1 = self.intra_trade_high - self.trailing_long * boll_width  # 计算多头移动止损价##     self.long_stop = condition1#     self.sell(self.long_stop, abs(self.pos), stop=True)  # 挂止损单## else:#     self.intra_trade_low = min(self.intra_trade_low, bar.low_price)#     condition1 = self.intra_trade_low + self.trailing_short * boll_width  # 计算空头移动止损价##     self.short_stop = condition1#     self.cover(self.short_stop, abs(self.pos), stop=True)  # 挂止损单#     # 基于布林宽度的可变止损==================

布林策略 atr倍数止损或者 布林中轨止损

# 止损进阶===============效果比基于布林宽度的可变止损 要差很多 回测 btc/usdt 2017.9.3-2020.8.3# elif self.pos > 0:#     self.intra_trade_high = max(self.intra_trade_high, bar.high_price)  # 交易中最高价##     self.long_stop = self.intra_trade_high - self.atr_value * self.atr_multiplier  # 计算多头止损价#     self.long_stop = max(self.boll_mid, self.long_stop)  # 在布林中轨和多头止损价中比较最大值作为多头止损价 挂单#     self.sell(self.long_stop, abs(self.pos), True)##     if self.long_stop:#         self.sell(self.long_stop, abs(self.pos))## elif self.pos < 0:#     # self.cover(self.boll_mid, abs(self.pos), True)##     self.intra_trade_low = min(self.intra_trade_low, bar.low_price)##     self.short_stop = self.intra_trade_low + self.atr_value * self.atr_multiplier#     self.short_stop = min(self.boll_mid, self.short_stop)#     self.cover(self.short_stop, abs(self.pos), True)##     if self.short_stop:#         self.cover(self.short_stop, abs(self.pos))# # 止损进阶=============== 效果比基于布林宽度的可变止损 要差很多
# 计算前close
​​​​​​​from scipy.ndimage.interpolation import shift
pre_close = shift(am.close, 1, cval=0)
# 计算前close
​​​​​​​from scipy.ndimage.interpolation import shift
pre_close = shift(am.close, 1, cval=0)# 计算涨跌幅 = (现收盘价-上一个交易日收盘价)/上一个交易日收盘价*100%self.increase = (self.am.close-pre_close)/pre_close   # 大于0是涨,小于0 是跌 ,绝对值越大k线柱越大print(self.increase,"计算涨跌幅")

计算涨跌幅,振幅

# 计算涨跌幅 = (现收盘价-上一个交易日收盘价)/上一个交易日收盘价*100%self.increase = (self.am.close[-1]-self.am.close[-2])/self.am.close[-2]   # 大于0是涨,小于0 是跌 ,绝对值越大k线柱越大print(self.increase,"计算涨跌幅")# 计算振幅 = ( 当日最高点的价格-当日最低点的价格)/昨天收盘价×100%self.amplitude = (self.am.high-self.am.low)/self.am.close[-2]   # 值越大两k线最高最低点差越大

指标计算---vnpy相关推荐

  1. 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存

    使用randomsearchcv为多个模型寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲 ...

  2. R语言glm拟合logistic回归模型:模型评估(计算模型拟合的统计显著性)、模型评估(赤信息AIC指标计算)

    R语言glm拟合logistic回归模型:模型评估(计算模型拟合的统计显著性).模型评估(赤信息AIC指标计算) 目录

  3. R语言临床预测模型的评价指标与验证指标实战:C-index指标计算

    R语言临床预测模型的评价指标与验证指标实战:C-index指标计算 目录 R语言临床预测模型的评价指标与验证指标实战:C-index指标计算

  4. 海量数据的实时指标计算

      最近看了一本书叫<风控要略-互联网业务反欺诈之路>,这本书主要是讲互联网产品安全防范的,我之前做过一年情报数据分析的工作,当时觉得这方面工作很机密,网络上几乎没什么相关的资料,这本书让 ...

  5. 技术实践 | 如何基于 Flink 实现通用的聚合指标计算框架

    导读:网易云信作为一个 PaaS 服务,需要对线上业务进行实时监控,实时感知服务的"心跳"."脉搏"."血压"等健康状况.通过采集服务拿到 ...

  6. sperling指标 matlab,sperling指标计算实验报告

    sperling指标计算实验报告 Sperling 指标计算实验报告 一. 计算原理: 数据给出的信息为时域中的加速度信号.时间的单位为 sec,加速度单位为 m/s^2 1.将时域的信号转化为频域下 ...

  7. 解读混淆矩阵在语义分割FCN指标计算中的应用(含代码实现)

    一.混淆矩阵的概念 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示.具体评价指标有总体精度.制图精度.用户精度等,这些精度指标从不同的侧面反映了图像分类的精度. 在人工 ...

  8. java实现基金浮动_Java: 实现自回归分析/线性回归分析/基金各项指标计算等

    版权声明:本文为博主原创文章,未经博主允许不得转载. 需Jama矩阵运算库. java版源码: 包含自回归分析/线性回归分析/基金各项指标计算 import Jama.Matrix; public c ...

  9. Golang 期权 指标计算

    用golang做期权行情指标计算时,关于sigma, delta, gamma, vega, theta, rho等的计算,需要用到black-scholes模型 期权指标计算其他语言已有现成的包或者 ...

最新文章

  1. 激活当前视图菜单高亮呈现 V2.0
  2. java 顺序栈_java用顺序栈实现数制转换 求完整程序!!
  3. 「mysql优化专题」高可用性、负载均衡的mysql集群解决方案(12)
  4. NASA 顶级程序员是如何编程的?这里有十大准则
  5. 64.多态性实现机制—静态分派与动态分派(方法解析、静态分派、动态分派、单分派和多分派)
  6. SpringMVC之组合注解@GetMapping
  7. 基于Tensorflow实现DeepFM
  8. mqtt c语言 单片机,MQTT--单片机实现即时通讯
  9. Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...
  10. 学术圈炸了!IEEE限制华为相关专家参与审稿:这操作毁尽三观
  11. IDEA启动部署Tomcat成功但访问提示404问题
  12. 基于原生js的图片延迟加载
  13. Spring的Bean属性依赖注入
  14. dell服务器分区表修复,完美恢复原产Dell Recovery软件、修复环境(添加教程)
  15. istio搭建testbed 补充(指令汇集)
  16. c语言this什么意思,JavaScript 中的this是什么?它到底做了什么?
  17. EOS区块链浏览器:scaneos.io | EOS必备工具 |什么是区块链浏览器 | 怎么使用区块链浏览器
  18. Hi,你想要的在线创建架构图都在这儿!(二)
  19. 【电子取证:FTK Imager 篇】DD、E01系统镜像动态仿真
  20. 计讯物联山体滑坡地质灾害监测方案为灾区保驾护航

热门文章

  1. oracle 01405 提取的值为null,OCI : ORA-01405: 提取的列值为 NULL
  2. MIMIC-III数据库的介绍
  3. black Friday
  4. html5如何让多张图片重叠,HTML5图片层叠的实现示例
  5. 深入理解java虚拟机-读书笔记2-垃圾收集器和内存分配策略
  6. keil工具栏错乱,图标显示不正常,工具栏不小心删除,等keil界面问题
  7. 【转】WebRTC多人音视频解决方案
  8. 【计算机科学基础】基于搜索引擎的信息检索
  9. 计算机中的英语六级作文万能模板,英语六级作文万能模板(4篇)
  10. Vue移动端各种机型判断