小波变换函数介绍 最近抽空理了下数学函数,8年之前搞的小波变换函数已经记不清怎么用来.正好理一理 小波变换的原理是使用正交带通数据滤波器来对离散数据进行分形分析或重构. 假如你想获取的是低通信号,那么就和均线效果差不多. 1.创建小波分析对象 CreateFWTObj(size);//小波变换函数 size是数据个数 2.DeleteFWTObj();删除小波对象 3.SetFWTData(index,data);按序号置入分析数据 index是数据序号0--size-1 data是数据 4.CalFWT(flag);小波计算.flag是计算标志 flag定义如下: 0.小波正变换 1.正变换后再反变回来 2.两次正变换 3.两次正变换后再反变回来 4.三次正变换 5.三次正变换后再反变回来 100.只计算高通分量 10000.去除一次高通分量后重构 10001.去除二次高通分量后重构 10002.去除三次高通分量后重构 一般我们使用10000--10002进行低通滤波.假如是价格分析, 可以用于计算价格通道,假如用于成交量分析,可以获取比较清晰的成交量波浪 5.GetFWTData(index);获取变换后的数据 index是序号
看图,使用10002对买卖动量滤波的效果 看图中绿色波浪线,就是对买卖动量进行小波低通重构后的图,波浪清晰分明,峰谷领先于价格 函数: function dsp_xiaobo() { var m_data_size=GetLsLibDataSize(); if(m_data_size>=15) { int m_start00=m_data_size-64; if(m_start00<0) m_start00=0; int m_end00=m_data_size-2; if(m_dsp_dir==-1) { //锁定划线 LuckExData(12,0,3,0,0x100ff00,"小波",15000,-15000); m_dsp_dir=0; m_start00=0; } if(m_dsp_dir!=(m_data_size-2)) { if(m_end00>(m_start00+10)) { CreateFWTObj(m_end00-m_start00+8);//小波变换函数 for(int s=m_start00;s<=m_end00;s++) { var m_data00=GetLsLibData(155,s); SetFWTData(s-m_start00,m_data00); if(s==m_end00) { SetFWTData(s-m_start00+1,m_data00); SetFWTData(s-m_start00+2,m_data00); SetFWTData(s-m_start00+3,m_data00); SetFWTData(s-m_start00+4,m_data00); SetFWTData(s-m_start00+5,m_data00); SetFWTData(s-m_start00+6,m_data00); SetFWTData(s-m_start00+7,m_data00); } } CalFWT(10002); for(s=m_start00;s<=m_end00;s++) { var m_data00=GetFWTData(s-m_start00); ExDataSet(12,s,m_data00,m_data00); if(s==m_end00) { ExDataSet(12,s+1,m_data00,m_data00); } } DeleteFWTObj(); m_dsp_dir=m_data_size-2; } } } }