DIFF线 (Difference)收盘价短期、长期指数平滑移动平均线间的差,也就是(12个交易日的指数平滑移动平均线)减去(26个交易日的指数平滑移动平均线),例如从2009年1月5日--2009年1月20日(扣除4个周末,共计12个交易日),用这12个交易日的收盘价算出一个滑动平均值,就是12个交易日的指数平滑移动平均线。(算法在下边,至于计算公式产生的原因就不要研究了,总之专家)
DEA线 (Difference Exponential Average)DIFF线的M日指数平滑移动平均线 ,DIFF本身就是12日平均减去26日平均所得的“值差”,而DEA则是这个连续9日的这个“差值”的平均数(就是简单的算数平均数),
MACD线 DIFF线与DEA线的差,彩色柱状线。
参数:SHORT(短期)、LONG(长期)、M 天数,一般为12、26、9
DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
默认参数SHORT=12,LONG=26,MID=9,然后close就是当天收盘价;
EMA(X,N)求X的N日指数平滑移动平均。算法是:
若Y=EMA(X,N),则Y=〔2X+(N-1)Y’〕/(N+1),其中Y’表示上一周期的Y值。 KDJ中K、D、J的计算方法:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3K-2D;
默认参数:N=9,M1=3,M2=3
LLV(LOW,N),就是N天内最低价的最低价,
HHV(HIGH,N)就是N天内最高价的最高价。至于SMA的计算方法也有点复杂,看你需要不。。 每天的的值只要代入相应的收盘价,最稿价最低价就可以计算出来了。
恩,还有,在编程界有一个说法就是,编写函数的未必知道函数有什么用途,精通函数用途的未必会编写这一个函数。所以如果要精通这两个指标的,我们未必可以知道这两个指标的作者为什么这样写……理解起来的确很复杂。说起来更复杂,不知道小霞施主明白了没有。。。
f1=50; %10Hz
f2=100; %100Hz
%抽频率
Fs=1000; %100Hz
%抽点数N
L=10;
N=2^L;
%抽脉冲序列
n = 0:N-1;
t = n/Fs;
% f2 周期采数
M = floor(Fs/f2);
%采信号
x = cos(2pif1t)+sin(2pif2t);
%采序列
subplot(311);
stem(t(1:2M),x(1:2M));
hold off;
%傅叶变换
%根据限序列离散傅叶变换公式计算DFT
n = 0:N-1;
k = 0:N-1;
F = x exp(-j2pi/N)^(n'k);
subplot(312);
plot(n,abs(F));
subplot(313);
plot(k,angle(F));
close all %关闭开着的文件或程序
clear %清除所有变量
clc %清除commond命令窗口的内容
IN=1:61; %给IN赋值,[1 2 3 4 5 6 … 59 60 61]
sr=zeros(1,61); % sr是1×61的零矩阵,[0 0 0 0 0 … 0]
OUT=sr; % 把矩阵sr赋值给OUT
[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT); % 对输入和输出函数进行归一化处理,其中:IN为输入数据,OUT为输出数据,X为输入数据转换成的标准数据,minx为输入的最小数据,maxx为输入的最大数据,T为输出数据转换成的标准数据,mint为输出的最小值,maxt为输出的最大值。
q=50; q1=0; q0=70; %赋值
while(q1<q) %当q1<q时,
q=q0; %q=q0
[M,N]=size(X); % M为X的行数;N为X的列数
[L,N]=size(T); %L为T的行数;N为T的列数
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm'); %建立前馈型网络。其中minmax(X)为输入向量X的最小值和最大值;q为隐含层单元数;L为隐含层层数;tansig 隐含层转移函数;purelin 输出层转移函数;trainlm网络的训练函数
nettrainParamlr=001; %网络学习速率
nettrainParamepochs=2000; %学习步骤
nettrainParamgoal=1e-5; %学习目标
[net,tr]=train(net,X,T); %对建立好的网络进行训练
Y=sim(net,X); %对输入量X进行仿真,Y为仿真结果
Y=postmnmx(Y,mint,maxt); %对仿真结果进行反归一化
%灰色关联分析,调整网络隐层节点
p=03;
e=03;
an=repmat(netb{1},1,N); %将矩阵netb{1}复制1×N块,即an由1×N块netb{1}平铺而成
op=tansig(netiw{1,1}X+an); %
op1=op'; % op1为op的转置
T0=T'; % T0为T的转置
T1=repmat(T0,1,q); %将矩阵T0复制1×q块,即T1由1×q块T0平铺而成
DIF=abs(T1-op1); % T1-op1的绝对值
MIN=min(min(DIF)); %min(DIF),DIF 的最小值
MAX=max(max(DIF)); %max(DIF),DIF 的最大值
Si=(MIN+pMAX)/(DIF+pMAX); %计算得到Si
ri=sum(Si)/N;% 求Si的平均值;sum(Si)是对Si进行求和
D=find(ri>=e); %找出数组ri中的所有大于e的元素的位置,并且在向量D中返回非零元素的线性索引。
[q0,q1]=size(D); % q0为D的行数,q1为D的列数
q0=q1; %将q1的值赋给q0
end
q0;
ri;
D;
q=q1; %将q的值赋给q1
1、这是三层网络 2、隐含层由70 个神经元组成 3、输入神经元个数61 输出神经元个数61
这是我自己的理解,因为不知道干什么用所以不知道具体的是什么意思,只能单句理解没法整体掌握,就先分析到这里吧,不知道对错,希望对你有帮助~
/
原式数据:
2841 2331 2037 1804 2523 1052 1845 3623 3564 1064
极差数据:
510 294 233 -719 1471 -793 -1778 059 2500
低于UCL:1052 1064
高于UCL:3623 3564
低于LCLR:-719 -793 -1778
高于UCLR:1471 2500
Press any key to continue
/
#include <stdioh>#include <mathh>
#include <timeh>
#include <stdlibh>
#define N 10
void Show(double a[], int n) {
int i;
for(i = 0; i < n; ++i)
printf("%2lf ",a[i]);
printf("\n");
}
int main() {
int i;
double a[N],dif[N] = {00},avrdif = 00;
double avr = 00,UCL,LCL,UCLR,LCLR = 00;
srand(time(NULL));
for(i = 0; i < N; ++i) {
a[i] = (rand()%5000 + 1)/1000;
avr += a[i]/N; // 平均值
}
for(i = 0; i < N - 1; ++i) {
dif[i] = a[i] - a[i + 1]; // 极差
avrdif += dif[i]/(N - 1); // 平均极差
}
UCL = avr + 3 avrdif;
LCL = avr - 3 avrdif;
UCLR = 3267 avrdif;
printf("原式数据:\n");
Show(a,N);
printf("极差数据:\n");
Show(dif,N - 1);
printf("低于UCL:");
for(i = 0; i < N; ++i)
if(a[i] < LCL) printf("%2lf ",a[i]);
printf("\n");
printf("高于UCL:");
for(i = 0; i < N; ++i)
if(a[i] > UCL) printf("%2lf ",a[i]);
printf("\n");
printf("低于LCLR:");
for(i = 0; i < N - 1; ++i)
if(dif[i] < LCLR) printf("%2lf ",dif[i]);
printf("\n");
printf("高于UCLR:");
for(i = 0; i < N - 1; ++i)
if(dif[i] > UCLR) printf("%2lf ",dif[i]);
printf("\n");
return 0;
}
以上就是关于dif连续n日大于0全部的内容,包括:dif连续n日大于0、如何编写在0轴上DIFF金叉DEA后,今日MACD的指数小于昨日指数,但今日收盘价大于昨日收盘价、MACD、DIF、DEA、WMS%R、KDJ指标的详细解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)