量化投资 捕捉K线图的形态 实例2

以上证综指2012年日K线图为分析依据

用Python捕捉上证综指K线图中出现的“早晨之星”形态。

一、确定“早晨之星”的形态

对连续3天的日度数据进行如下分析。

1、 刻画蜡烛实体

第1天(前两期)的收盘价低于开盘价,即描述蜡烛绿色实体;

第2天(前一期)的收盘价和开盘价大致相等,两者差别控制在一个范围内;

第3天(当期)蜡烛红色实体用收盘价高于开盘价来定义,两者的差值要大于等于第1天(前两期)开盘价与收盘价差值的一半。

2、 定义十字星实体位置

第2天(前一期)的收盘价和开盘价均须小于第1天(前两期)的收盘价和第3天(当期)的开盘价。

3、定义下跌趋势:用收盘价来计算股票的收益率,收益率为负表示下跌。Python捕捉“早晨之星”的形态。

### 基于形状描述子的特征提取方法 #### 形状描述子的概念及其重要性 形状描述子是一种用于表征图像中物体轮廓特性的工具,它能够有效地捕捉到目标对象的关键几何属性,并将其转化为易于处理的数据形式。这种技术对于计算机视觉领域内的诸多任务至关重要,比如图像分类、检索以及识别等。 #### 特征提取过程概述 为了从给定的一组二维图形或三维实体获取其形态学上的显著标志,通常会经历如下几个阶段: - **预处理**:对原始输入材料执行必要的清理工作,如去除噪声干扰、标准化尺寸大小等操作; - **边界检测**:定位并描绘出待测物象边缘曲线; - **参数化表达**:采用特定方式来量化上述所得轮廓线的信息,形成紧凑而具有代表意义的矢量集合即所谓的“形状描述符”。 #### 几何矩法作为经典实例 一种广泛应用的技术是基于区域的统计测量手段——几何矩(Geometric Moments)。此方法通过对整个闭合路径上各点坐标的加权求和得到一系列不变量,这些数值不仅反映了整体外形而且具备平移缩放旋转鲁棒性质[^1]。 ```python import cv2 import numpy as np def calculate_geometric_moments(contour): moments = cv2.moments(contour) huMoments = cv2.HuMoments(moments) log_huMoments = -np.sign(huMoments) * np.log10(np.abs(huMoments)) return log_huMoments.flatten() # Example usage with OpenCV contour detection image = cv2.imread('shape.png', 0) _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY_INV) contours, _ = cv2.findContours(binary_image.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2:] for cnt in contours: shape_descriptor = calculate_geometric_moments(cnt) print(shape_descriptor) ``` #### 傅里叶描述子的应用案例 另一种强大的形状编码机制来源于频域变换理论之下的傅立叶级数展开原理。具体而言就是先将封闭边界的极坐标表示映射至复平面内再做离散正弦/余弦变化从而获得一组周期函数系构成的新基底向量。由于后者往往更利于模式匹配运算故而在实践中备受青睐[^3][^5]。 ```matlab function fd = fourierDescriptor(points,N) % FOURIERDESCRIPTOR calculates the Fourier descriptors of a closed curve. % % Inputs: % points : M-by-2 matrix containing coordinates (x,y) of boundary pixels. % The first and last point must be identical to close the loop. % N : Number of harmonics used for approximation. if size(points,1)<N*8 || ~isequal(points(1,:),points(end,:)) error('Input should form a valid closed polygon.'); end; theta = atan2d(diff(points(:,2)),diff(points(:,1))); r = sqrt(sum((diff(points)).^2,2)); phi = cumsum(theta); fd = zeros(N,1); for k=1:N fd(k)= sum(r.*exp(-j*k*pi/180*(phi-pi/2)))/length(phi); end; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值