加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
中枢高点模块 2.64 KB
一键复制 编辑 原始数据 按行查看 历史
jack 提交于 2021-07-14 02:34 . add 中枢高点模块.
function bool = PushHigh(nIndex, fValue) %按照最高价计算中枢
global Centroid %中枢class 为全局变量,出现在所有函数堆栈中
if Centroid.bValid == true %如果正在处理中枢
Centroid.nLines = Centroid.nLines + 1; %线段+1. 三段为一个中枢
Centroid.fPHigh = Centroid.fHigh; %中枢高数据设定为当前线段高点
Centroid.fPLow = Centroid.fLow; %中枢低数据设定为当前线段低点
else
Centroid.nLines = 0; %如果没有确认中枢,线段=0
end
%更新高低点位置信息
Centroid.nTop2 = Centroid.nTop1;
Centroid.fTop2 = Centroid.fTop1;
Centroid.nTop1 = nIndex; %当前高点位置
Centroid.fTop1 = fValue; %当前高点数值
%如果非中枢模式下
if Centroid.bValid == false
%更新区间高点
if Centroid.fTop1 < Centroid.fTop2 %如果当前高点 < 上一个高点 => 下跌中继中枢
Centroid.fHigh = Centroid.fTop1; %取当前高点为线段高点
else %如果当前高点 > 上一个高点 => 上涨中继中枢
Centroid.fHigh = Centroid.fTop2; %取前一个高点为线段高点
end
%中枢识别
if Centroid.fHigh > Centroid.fLow %如果当前线段高点 > 当前线段低点
if Centroid.fBot1 < Centroid.fBot2 %如果当前低点 < 上一个低点
Centroid.nStart = Centroid.nBot2; %区段起点设定为上一个低点
else %如果当前低点 > 上一个低点
Centroid.nStart = Centroid.nTop2; %区段起点设定为上一个高点
end
Centroid.bValid = true; %中枢识别继续
end
else %如果在中枢中
%更新中枢高
if Centroid.fHigh > Centroid.fTop1 %如果当前线段高点 > 当前高点
Centroid.fHigh = Centroid.fTop1; %当前线段高点设定为当前高点
end
%中枢终结
if Centroid.fHigh < Centroid.fLow %如果线段当前高点 < 线段当前低点
Centroid.fHigh = Centroid.fTop1; %线段当前高点设定为当前高点
Centroid.fLow = Centroid.fBot1; %线段当前低点设定为当前低点
Centroid.nEnd = Centroid.nTop2; %区段结束位置设定为上一个高点
Centroid.bValid = false; %中枢结束
if Centroid.nLines > 2 %如果完成的中枢里线段三根或者以上
bool = true;
return %输出中枢高低点位置信息true
end
end
end
bool = false;
return %没有中枢,输出false
end
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化