金 融 量 化 分 析 • 外 篇 • 绘 制 行 情 数 据 数 据 图

在这里插入图片描述

文章目录

  • 前言
  • 一、k 线 图 是 什 么 ?
  • 二、K 线 图 结 构
    • (1) 影 线 和 实 体
    • (2) 十 字 线
  • 四、 双 均 线 策 略
    • (一)、金叉
    • (二)、死叉
    • (三)、均 线 策 略 的 特 点
  • 五、通 道 突 破 策 略
    • (一)唐 奇 安 通 道 策 略
      • (1)上阻力线、中心线、下支撑线
      • (2)唐 奇 安 通 道 买 入 策 略
      • (2)唐 奇 安 通 道 卖 出 策 略
    • (二)、布 林 带 策 略
      • (1) 压 力 线 、 价 格 平 均 线 、 支 撑 线
    • (三)、布 林 带 策 略 与 唐 奇 安 通 道 策 略 的 关 系
  • 三、绘 图 步 骤
    • (1)导入相关模块
    • (2)处理数据
    • (3)绘制k线图
    • (4)代码
    • (5)效果呈现
      • 1)蜡烛图
      • 2)均线图
      • 3)布 林 带 策 略 图
      • 4)唐奇德策略图
      • 4)数据图汇总


前言

`利用数据绘制K线图


一、k 线 图 是 什 么 ?

K线图又称蜡烛图,起源于十八世纪德川幕府时代的米市交易市场,用来计算米价每天的涨跌走势,由开盘价、收盘价、最高价、最低价绘制而成的一条柱状的线条,它由影线和实体组成,基本用途是寻找买卖点

K线图由股票的最高价,最低价,收盘价,开盘价组成。红色代表阳线:收盘价高于开盘价,俗称看多。绿色代表阴线:收盘价低于开盘价,俗称看空。
注意⚠️:在欧美股市则是相反的,即红色代表阴线,绿色代表阳线。

二、K 线 图 结 构

(1) 影 线 和 实 体

在这里插入图片描述

(2) 十 字 线

⚠️:反映买卖双方的博弈
在这里插入图片描述

四、 双 均 线 策 略

双均线策略,就是同时考虑短周期和长周期的趋势,它由一个短周期趋势和长周期趋势构成。长周期均线 捕捉股票行情趋势,而短周期均线起到的是择时的作用。
在考虑长周期趋势的同时,兼顾比较敏感的小周期趋势,是解决简单移动平均线滞后性弱点的一项有效方法。

(一)、金叉

在这里插入图片描述

(二)、死叉

在这里插入图片描述

(三)、均 线 策 略 的 特 点

双均线策略虽然可以弥补一些滞后性,但均线策略都是基于:“利用固定长度的价格均线作为交易趋势的判断”
均线随着时间的变化是相对连续的,即使是价格发生猛涨或者急跌也很难直接造成均线方向的变化。因此使用均线侧率作为交易信号,会有滞后性

五、通 道 突 破 策 略

通道策略就是选定价格区间,当价格突破选定价格区间时就进行交易,因此没有滞后性

(一)唐 奇 安 通 道 策 略

唐奇安通道策略由三条线组成,分别是上阻力线下支撑线中心线。一般来说,唐奇安通道的宽度越宽,市场波动越大,而唐奇安通道越窄,市场波动性就越小

(1)上阻力线、中心线、下支撑线

⚠️ 上阻力线: 是由过去N天最高价的最大值组成的

⚠️ 中心线: 是由过去最高价与最低价的平均值组成的,即(最大值**+**最小值)÷2

⚠️ 下支撑线: ** 是由过去N天最低价的最小值组成的
在这里插入图片描述

(2)唐 奇 安 通 道 买 入 策 略

买入:当价格跌破下支撑线,则执行买入的操作

(2)唐 奇 安 通 道 卖 出 策 略

卖出:当价格突破上阻力线,则执行卖出的操作

(二)、布 林 带 策 略

布林带策略,也是由3条轨道线组成:其中上下两条线分别可以看成是价格的压力线支撑线,在两条线之间是一条价格平均线,一般情况价格线在上下轨道组成的带状区间游走,而且随价格的变化而自动调整轨道的位置。布林带通道宽度有4个标准差,因此95%的价格都将包含在内,可以展示大部分价格的波动情况。

(1) 压 力 线 、 价 格 平 均 线 、 支 撑 线

⚠️ 压力线: 就是20日均线加上N倍标准差,N为可调参数,一般设置为2。【压力线 = ma20 + n * std

⚠️ 价格平均线: 就是20日均线

⚠️ 支撑线: 20日均线减去N倍标准差,N为可调参数,一般设置为2。【压力线 = ma20 - n * std
在这里插入图片描述

(三)、布 林 带 策 略 与 唐 奇 安 通 道 策 略 的 关 系

联系:
外观上两个策略的线图相似
.
区别:
布林带的波动比较灵敏
唐奇安通道则相对迟缓,直上直下。
在这里插入图片描述

三、绘 图 步 骤

(1)导入相关模块

代 码 如 下 :

# 数据分析辅助模块
import numpy as np
# 读取数据模块
import pandas as pd
# 绘图基本模块
import matplotlib.pyplot as plt
# 日期转换模块
from matplotlib.dates import date2num
# 绘制蜡烛图模块
from mplfinance import original_flavor as mpf
print('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')

(2)处理数据

1)读取交易时间、开盘价、收盘价、最高价、最低价,并把交易时间设定位字符串
2)交易时间转换时间数据形式
2)设置时间戳:在数据时间中提取
3)设置特定蜡烛图绘图数据
4)设置移动平均线数据
5)设置金叉死叉位
6)回测金叉死叉策略收益

(3)绘制k线图

1)设置文字与符号识别
2)设置画布,添加子图,并把子图x轴设为时间轴
3)绘制K线图
4)绘制5,、10、20移动平均线
5)标记金叉死叉点位

(4)代码

代 码 如 下 :

# 数据分析辅助模块
import numpy as np
# 读取数据模块
import pandas as pd
# 绘图基本模块
import matplotlib.pyplot as plt
# 日期转换模块
from matplotlib.dates import date2num
# 绘制蜡烛图模块
from mplfinance import original_flavor as mpf
print('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<')
"""======================== 设置数据 ========================"""
# # 数据处理
# 读取特定数据数据,设定交易时间为字符数按
path = r'F:\\601398.SH.xlsx'
data = pd.read_excel(path,usecols=['trade_date','open','close','high','low'],dtype={'trade_date':object})
# 数据时间处理
data['trade_date'] = pd.to_datetime(data['trade_date'])
# 设置时间戳:在数据时间中提取
data['time'] = date2num(data['trade_date'])
# 数据排序整理
data.sort_values(by = 'trade_date',ascending = True,inplace=True )
# 重置行索引
data.reset_index(inplace = True)
# 删除旧行索引
data.drop(columns = 'index',inplace = True)# # 设置蜡烛图数据
# 提取时间戳、开盘价、收盘价、最高价、最低价数据
k = data[['time','open','close','high','low']].values# # 设置移动平均线数据
# 设置5日移动平均线
data['ma5'] = data['close'].rolling(window = 5,min_periods = 5).mean()
# 设置10日移动平均线
data['ma10'] = data['close'].rolling(window = 10,min_periods = 10).mean()
# 设置20日移动平均线
data['ma20'] = data['close'].rolling(window =20,min_periods = 20).mean()
# 设置30日移动平均线
data['ma30'] = data['close'].rolling(window = 30,min_periods = 30).mean()# # 设置布林带压力线、布林带支撑线
# 设置20日收盘价标准差
data['std'] = data['close'].rolling(window = 20,min_periods = 1).std()
# 设置布林带压力线
data['up_B'] = data['ma20'] + 2 * data['std']
# 设置布林带支持线
data['down_B'] = data['ma20'] - 2 * data['std']# # 设置唐奇安通道阻力线、支撑线、中心线
# 设置唐奇安通道阻力线
data['up_T'] = data['high'].rolling(window = 15,min_periods = 15).max()
# 设置唐奇安通道中心线
data['median_T'] = (data['high'] + data['low'])/2
# 设置唐奇安通道支撑线线
data['down_T'] = data['low'].rolling(window = 15,min_periods = 15).min()"""======================== 策略买卖点 ========================"""
# # 金叉死叉(1)
# 设置买卖信号
# model = ma5['close'] > ma20['close']
# # 设置买点模块
# def get_buy_date(w):
#     return w[0] == True and w[1] == False
# # 设置卖点模块
# def get_sale_date(v):
#     return v[0] == False and v[1] == True
# # 标记买点
# se_buy = model.rolling(2).apply(get_buy_date).fillna(0)
# # 标记卖点
# se_sale = model.rolling(2).apply(get_sale_date).fillna(0)
# # 转变买点标记形式
# se_buy_bool = se_buy.astype(bool)
# # 转换卖点标记形式
# se_sale_bool = se_sale.astype(bool)
# # 筛选买点位置
# buy_price = df[se_buy_bool]
# # 筛选卖点位置
# sale_price = df[se_sale_bool]
# # # 利润计算
# # profit = sale_price.values - buy_price.values
# # print(profit)# # 金叉死叉(2)
# 设置金叉时间容器
golden_cross = []
# 设置死叉时间容器
death_cross =[]
# 筛选金叉死叉时间
for i in range(0,len(data)):# 设置金叉条件if (data['ma5'][i] >= data['ma30'][i]) and (data['ma5'][i-1] < data['ma30'][i-1]):golden_cross.append(data['trade_date'][i])# 设置死叉条件elif (data['ma5'][i] <= data['ma30'][i]) and (data['ma5'][i-1] > data['ma30'][i-1]):death_cross.append(data['trade_date'][i])else:continue
# 设置金叉信号
data['golden_cross'] = np.where((data['trade_date'].isin(golden_cross)),1,0)
# 设置死叉信号
data['death_cross'] = np.where((data['trade_date'].isin(death_cross)),-1,0)
# 合并金叉死叉信号
data['GD'] = data['golden_cross'] + data['death_cross']
# 设置金叉数据
golden_cross = data[data['golden_cross'] == 1]
# 设置死叉数据
death_cross = data[data['death_cross'] == -1]# # 布林带策略
# 设置布林带策略买入容器
B_buy_order = []
# 设置布林带策略卖出容器
B_sale_order =[]
# 遍历数据,筛选布林带策略买卖点
for i in range(0,len(data)):# 设置布林带策略买入时间if data['close'][i] < data['down_B'][i]:B_buy_order.append(data['trade_date'][i])# 设置布林带策略卖出时间elif data['close'][i] > data['up_B'][i]:B_sale_order.append(data['trade_date'][i])else:continue
# 标记布林带策略买入点位
data['B_buy_order'] = np.where((data['trade_date'].isin(B_buy_order)),1,0)
# 标记布林带策略卖出点位
data['B_sale_order'] = np.where((data['trade_date'].isin(B_sale_order)),-1,0)
# 合拼布林带策略买卖点位
data['B_order'] = data['B_buy_order'] + data['B_sale_order']
# 筛选布林代策略买卖信号数据
Bb = data[data['B_order'] != 0]
# 设置布林带策略买入数据
B_buy_order = Bb[Bb['B_buy_order'] == 1]
# 设置布林带策略卖出数据
B_sale_order = Bb[Bb['B_sale_order'] == -1]# # 唐奇德通道策略
# 设置唐奇德通道买入策略时间容器
T_buy_order = []
# 设置唐奇德通道卖出策略时间容器
T_sale_order = []
# 遍历数据,筛选奇德通道策略买卖点
for i in range(0,len(data)):# 设置奇德通道买入策略时间if data['close'][i] < data['down_T'][i]:T_buy_order.append(data['trade_date'][i])# 设置奇德通道卖出策略时间elif data['close'][i] > data['up_T'][i]:T_sale_order.append(data['trade_date'][i])else:continue
# 标记布林带策略买入点位
data['T_buy_order'] = np.where((data['trade_date'].isin(T_buy_order)),1,0)
# 标记布林带策略卖出点位
data['T_sale_order'] = np.where((data['trade_date'].isin(T_sale_order)),-1,0)
# 合拼布林带策略买卖点位
data['T_order'] = data['T_buy_order'] + data['T_sale_order']
# 筛选布林代策略买卖信号数据
Dc = data[data['T_order'] != 0]
# 设置布林带策略买入数据
T_buy_order = Dc[Dc['T_buy_order'] == 1]
# 设置布林带策略卖出数据
T_sale_order = Dc[Dc['B_sale_order'] == -1]"""======================== 策略画图 ========================"""data.set_index('time',inplace=True)# # 绘制k线图
# 设置汉语识别
plt.rcParams['font.sans-serif'] = ['SimHei']# 符号识别
plt.rcParams['axes.unicode_minus'] = False# 设置画布
fig = plt.figure()# 添加子图
ax = fig.add_subplot(111,facecolor='lightgrey')# 子图x轴设为时间轴
ax.xaxis_date()# 绘制蜡烛图
mpf.candlestick_ochl(ax,k,colorup = 'red', colordown = 'green')# 绘制5日移动平均线
plt.plot(data.index,data['ma5'],color = 'darkviolet',label='5日移动平均线')# 绘制10日移动平均线
plt.plot(data.index,data['ma10'],color = 'gold',label='10日移动平均线')# 绘制唐奇安通道阻力线
plt.plot(data.index,data['up_T'],color = 'mediumspringgreen',label = '唐奇安通道')# 绘制布林带压力线
plt.plot(data.index,data['up_B'],color = 'slategrey',label = '布林带通道【2倍】')# 绘制唐奇安通道中心线
plt.plot(data.index,data['median_T'],color = 'cadetblue',label = '唐奇安通道中位线')# 绘制20日移动平均线【布林带中线】
plt.plot(data.index,data['ma20'],color = 'orange',label='20日移动平均线【布林带中线】')# 绘制布林带支撑线
plt.plot(data.index,data['down_B'],color = 'slategrey',label = '布林带通道【2倍】' )# 绘制唐奇安通道支撑线
plt.plot(data.index,data['down_T'],color = 'mediumspringgreen',label = '唐奇安通道' )# 绘制30日移动平均线
plt.plot(data.index,data['ma30'],color = 'dodgerblue',label='30日移动平均线')# 绘制金叉点位
plt.scatter(golden_cross['time'],golden_cross['open'],color = 'yellow',label = '金叉点位')# 绘制死叉点位
plt.scatter(death_cross['time'],death_cross['open'],color = 'black',label = '死叉点位')# 绘制布林带策略买入点
plt.scatter(B_buy_order['time'],B_buy_order['open'],color = 'darkred',marker = '+',label = '布林带买入点')# 绘制布林带策略卖出点
plt.scatter(B_sale_order['time'],B_sale_order['open'],color = 'darkgreen',marker = 'x',label = '布林带卖出点')# 绘制唐奇德策略买入点
plt.scatter(T_buy_order['time'],T_buy_order['open'],color = 'orangered',marker = '+',label = '唐奇德买入点')# 绘制唐奇德策略卖出点
plt.scatter(T_sale_order['time'],T_sale_order['open'],color = 'lightgreen',marker = 'x',label = '唐奇德卖出点')# 设置抬头
plt.title('601398.SH(未复权)策略提醒行情图',fontsize = 25)
# 设置y轴标签
plt.ylabel('收盘价\n(元)\n\n\n\n\n\n\n\n\n\n\n',fontsize = 15,rotation = 0)
# plt.xticks(ma5.index)
plt.tight_layout()
plt.legend()
plt.show()

(5)效果呈现

1)蜡烛图

在这里插入图片描述

2)均线图

在这里插入图片描述

3)布 林 带 策 略 图

在这里插入图片描述

4)唐奇德策略图

⚠️ 主要用于日行情
在这里插入图片描述

4)数据图汇总

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43545.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

老板,摊牌了,不装了,pyechart高端实现我国GDP大数据图

pyechart实现我国GDP大屏展示图 from typing import Listimport pyecharts.options as opts from pyecharts.globals import ThemeType from pyecharts.commons.utils import JsCode from pyecharts.charts import Timeline, Grid, Bar, Map, Pie, Linedata [{"time"…

将《2020中国统计年鉴》中的GDP数据换算成不变GDP数据

文章目录 前言一、数据来源二、计算步骤1.理解一下公式和不同的指数国内生产总值指数&#xff08;上一年100&#xff09;国内生产总值指数&#xff08;1978年100&#xff09;现价GDP: 即当年价GDP&#xff0c;也叫名义GDP&#xff0c;包含价格浮动因素&#xff0c;不可比不变价…

【qstock量化】数据篇之宏观指标和财经新闻文本

qstock简介 qstock由“Python金融量化”公众号开发&#xff0c;试图打造成个人量化投研分析开源库&#xff0c;目前包括数据获取&#xff08;data&#xff09;、可视化(plot)、选股(stock)和量化回测&#xff08;backtest&#xff09;四个模块。其中数据模块&#xff08;data&a…

使用Postman模拟发送get、post、delete、put请求

使用Postman模拟发送get、post、delete、put请求 现在的模拟发送请求插件很多&#xff0c;包括在idea上都自带了Test restful web service来模拟请求&#xff0c;但亲测postman更好用一些 今天来分享如何使用postman发送各种请求 1.下载 postman是谷歌的一款插件&#xff0…

使用hutool发送POST请求

之前使用Java程序发送请求都是使用的HttpURLConnection&#xff0c;不太方便&#xff0c;可以使用hutool封装好的方法。 引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.0.M4</…

10小时训练数据打造多语种语音识别新高度

本文联合撰写&#xff1a; 腾讯&#xff1a;吕志强&#xff0c;颜京豪&#xff0c;胡鹏飞&#xff0c;康健&#xff0c;阿敏巴雅尔 导语&#xff5c;在刚刚结束的NIST OPENASR评测中&#xff0c;TEG AI语音联合清华大学&#xff0c;刷新世界小语种语音识别比赛6项第一。从2000年…

Python开发智能语音机器人——小O同学

本篇代码存在部分错误 &#xff0c;现已经更新 &#xff08;https://blog.csdn.net/aqqwvfbukn/article/details/131277668&#xff09; 这次项目开发能按部就班顺利完成&#xff0c;主要是靠队友成功在软件的前期设计阶段&#xff0c;需求分析和用例设计起到了重要的作用。当…

微信小程序实现图林机器人聊天和百度AI语音识别的简单人工客服

用微信小程序实现简单的人工客服 最近在做软件工程的课程设计&#xff0c;选择性的做了微信小程序的简单的人工客服。在这里对该课程设计的原理和实现进行一个讲解&#xff0c;也算做一个总结和笔记&#xff0c;方便自己以后查看、复习和帮助大家的学习。 工具&#xff1a;微信…

Python实现语音识别(基于百度语音识别)

我是一名2016级电子信息工程的学生&#xff0c;这是第一次发博客&#xff0c;因为经常在这里查资料 &#xff0c;自己也应该贡献一点经验吧&#xff0c;也可以当是记录自己学习的过程吧。 最近在自学python&#xff0c;然后18年9月份正好python加入计算机二级&#xff0c;再然…

玩转百度语音识别,就是这么简单

http://www.cnblogs.com/bigdataZJ/p/SpeechRecognition.html 明后两天就是公司一年一度的Fedex Day了。我的理解就是技术界的头脑风暴&#xff0c;idea喷如泉涌的盛大节日。 对于这次活动每个人或者两三个人一组需要有个idea&#xff0c;针对当前的产品现状&#xff0c;提出自…

语音-小度自定义技能

文章目录 前言一、学习简介二、代码快速开发三、官网配置3.1 百度云CFC配置3.2 小度官网配置 四、测试4.1连接技能4.2 意图测试4.3 断开技能 前言 主要是为了记录下学习小度自定义技能的过程 一、学习简介 参考官网解释 自定义技能简介 二、代码快速开发 快速开发java 我…

人人都是绘画大师!微软必应接入DALL·E模型,文字生成图像!

机器之心编辑部 微软必应完善文字生成图像能力&#xff0c;Adobe 今日也发布 Firefly&#xff0c;杀入生成式 AI 这场游戏。 今晚实在是有些热闹。 一边英伟达 GTC 正在进行中&#xff0c;一边谷歌正式开放了 Bard 的测试&#xff0c;这里微软必应也不甘寂寞。 今日&#xff0c…

对比编程语言的四种错误处理方法,哪种才是最优方案?

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 作者&#xff1a;Andrea Bergia 译者&#xff1a;豌豆花下猫Python猫 英文&#xff1a;Error handling patterns 转载请保留作者及译者信息&#xff01; 错误处理是编程的一个基本要素。除非你写的是“hello world…

巴比特 | 元宇宙每日必读:不再盲目迷信硬件掘金,大厂XR集体后撤,业内人士建议多条腿走路,生态和内容才有更广阔市场...

摘要&#xff1a;据极点商业报道&#xff0c;元宇宙凉热之间&#xff0c;大厂集体收缩XR业务。是舆论定调的风口已过&#xff0c;还是如业内人士所言&#xff0c;进入理智探索时代&#xff1f;为何短短半年时间内&#xff0c;大厂们态度就发生了截然不同的变化&#xff1f;“与…

学会这些思维模型,窥见查理·芒格的致胜秘笈(二)

目录 导语 模型五&#xff1a;SCQA模型 模型六&#xff1a;问题树模型 模型七&#xff1a;MECE原则 模型八&#xff1a;SWOT分析 模型九&#xff1a;波特五力模型 模型十&#xff1a;波斯顿矩阵 导语 读者朋友们好&#xff0c;在我上一篇文章介绍了几个最核心和底层的模…

产品读书《穷查理宝典:查理.芒格智慧箴言录》

要通过提升自己&#xff0c;来强化对世界的感知&#xff0c;内在的能力才能增长&#xff0c;和世界的大趋势才能互相匹配。这种匹配度提高了&#xff0c;无论你是用来投资、创业&#xff0c;还是做其他事情&#xff0c;都会无往而不利。 查理芒格在书中反复强调的4点内容有&a…

芒格最新演讲:中国的水有些聪明人已经蹚进去了,时候到了更多人会进场

图文来源&#xff1a;雪球 译者&#xff1a;RanRan 我们在说某个人有常识的时候&#xff0c;我们其实是说&#xff0c;他具备平常人没有的常识。人们都以为具备常识很简单&#xff0c;其实很难。 2月14日&#xff0c;95岁的芒格参加了Daily Journal 公司年会&#xff0c;发表了…

站在大模型新风口的云知声:十一年创业之路引领智能语音技术变革

AGI的目标是实现人类般的通用智能&#xff0c;这意味着AI可以像人类一样理解任意通用任务&#xff0c;并以人类的智力水平执行完成。基本上&#xff0c;除了自我意识的生成&#xff0c;AGI就是人类对人工智能的终极梦想了。在AGI曙光照进现实之际&#xff0c;云知声化身为那位站…

在MT4上使用KDJ指标

KDJ指标就是随机指标&#xff0c;由K线、D线和J线这三条曲线共同构成&#xff0c;通过分析图表&#xff0c;我们可以得出&#xff0c;K、D、J分别用不同的颜色线条来表示&#xff0c;所谓的K线是指快速确认线&#xff0c;D线就是指慢速主干线&#xff0c;而J线则为方向明暗线。…

同花顺资金监测精鹰指标公式源码 通过资金监测强弱

使用方法&#xff1a; 指标不含未来,是通过资金监测强弱,资金是不会骗人 当红柱有粉色帽子或红柱上方金色线均表示资金流入 源代码&#xff1a; VAR1:VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN)); 主动买盘:IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)(…