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