MATLAB提示输出参数过多,如何解决?。
23 views (last 30 days)
Show older comments
close all
clear all
fidin=fopen('20131118B.txt'); %打开文件one minute
fidout=fopen('data.txt','w'); %创建文件,用于写进数据
while ~feof(fidin) %判断是否为文件末尾
tline=fgetl(fidin); %从文件中读取行
if double(tline(1))>=48&&double(tline(1))<=57 %判断首字符是否是数值
fprintf(fidout,'%s\n\n',tline); %如果是数字行,把此行数据写入文件data中
continue %如果是非数字继续下一次循环
end
end
fclose(fidout);
M=importdata('data.txt'); %将生成的data.txt文件导入到工作空间。
% M=importdata('one minute.txt');
%%%%%%%%%%%%%%%%%%数据处理%%%%%%%%%%%%%%%%%%%
b={'日期','时间','开盘价','最高价','最低价','收盘价','平均价','成交量','持仓量','STD30','STD60','SLOPE30','SLOPE60','DIF','DEA'};
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',b,'Sheet1','A1');
t=M.textdata(:,:);
p=M.data(:,4); %取倒数第4列数据,即第6列数据。
DD=[t num2cell(M.data)];
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',DD,'Sheet1','A2');
subplot(4,1,1)
plot(p) %画出这行数据
xlabel('原始图形')
lgstr=cell(1,1);
%%%%%%%%%%%%%%%%%%%%%求出N=12周期的EMA12%%%%%%%%%%%%%%%%%%%
N=12;
a=2/(N+1);
%%%%%%%%%%%%求EMA0,以用递推公式求出其他EMA1 EMA2....等%%%%%%%%%%%%%%%%
son0=p(1);
mum0=1;
for i=2:N
son0=son0+((1-a)^(i-1))*p(i); %求出EMA0的分子
mum0=mum0+((1-a)^(i-1)); %求出EMA0的分母
end
EMA0=son0/mum0; %求出EMA0
EMA1=EMA0;
%%%%%%%%%%%%求EMA123..........到数据尾部%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=N+1:length(p) %以上已经计算第一个数据EMA0,因此从第N+1周期开始计算EMA作为有效数据的第二点,前面自动补充为0.加上第一个EMA0,总共有效长度为length(p)-N+1.
EMA0=EMA0+a*(p(j)-EMA0); %EMA(t1)=EMA(t0)+a(p-EMA(t0))以计算EMA(t1)。
EMA(j)=EMA0;
EMA1=[EMA1,EMA(j)];
end
x0=EMA1(1)*ones(1,N-1);
EMA12=[x0,EMA1];
clear N EMA0 EMA1 a suno mumo
%%%%%%%%%%%%%%%%%%%%%求出N=26周期的EMA26,复制以上程序即可%%%%%%%%%%%%%%%%%%%%%%%%%%
N=26;
a=2/(N+1);
%%%%%%%%%%%%求EMA0,以用递推公式求出其他EMA1 EMA2....等%%%%%%%%%%%%%%%%
son0=p(1);
mum0=1;
for i=2:N
son0=son0+((1-a)^(i-1))*p(i); %求出EMA0的分子
mum0=mum0+((1-a)^(i-1)); %求出EMA0的分母
end
EMA0=son0/mum0; %求出EMA0
EMA1=EMA0;
%%%%%%%%%%%%求EMA123..........到数据尾部%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=N+1:length(p) %以上已经计算第一个数据EMA0,因此从第N+1周期开始计算EMA作为有效数据的第二点,前面自动补充为0.加上第一个EMA0,总共有效长度为length(p)-N+1.
EMA0=EMA0+a*(p(j)-EMA0); %EMA(t1)=EMA(t0)+a(p-EMA(t0))以计算EMA(t1)。
EMA(j)=EMA0;
EMA1=[EMA1,EMA(j)];
end
x0=EMA1(1)*ones(1,N-1);
EMA26=[x0,EMA1];
DIF=EMA12-EMA26;
subplot(4,1,4)
plot(DIF,'g')
clear N EMA0 EMA1 a suno mumo
%%%%%%%%%%%%%%%%%%%%%%%%%%求DIF的9点平均,即DEM%%%%%%%%%%%%%%
p=DIF;
N=9;
a=2/(N+1);
%%%%%%%%%%%%求EMA0,以用递推公式求出其他EMA1 EMA2....等%%%%%%%%%%%%%%%%
son0=p(1);
mum0=1;
for i=2:N
son0=son0+((1-a)^(i-1))*p(i); %求出EMA0的分子
mum0=mum0+((1-a)^(i-1)); %求出EMA0的分母
end
EMA0=son0/mum0; %求出EMA0
EMA1=EMA0;
%%%%%%%%%%%%求EMA123..........到数据尾部%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=N+1:length(p) %以上已经计算第一个数据EMA0,因此从第N+1周期开始计算EMA作为有效数据的第二点,前面自动补充为0.加上第一个EMA0,总共有效长度为length(p)-N+1.
EMA0=EMA0+a*(p(j)-EMA0); %EMA(t1)=EMA(t0)+a(p-EMA(t0))以计算EMA(t1)。
EMA(j)=EMA0;
EMA1=[EMA1,EMA(j)];
end
x0=EMA1(1)*ones(1,N-1);
DEM=[x0,EMA1];
hold on
plot(DEM,'r')
xlabel('MACD')
%%%%%%%%%%%%%%%%%%%%%%%求OSC%%%%%%%%%%%%%%%%%%%%%%%%%
OSC=DIF-DEM;
hold on
bar(OSC,'k')
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',DIF','Sheet1','N2');
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',DEM','Sheet1','O2');
for i=1:length(DIF)
if DIF(i)<DEM(i)
ok=disp('ok');
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',ok','Sheet1',‘P2’);
end
end
for i=1:length(DIF)
if DIF(i)<DEM(i)
ok=disp('ok');
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',ok','Sheet1',‘P2’);
end
end
上面输出时提示输出参数太多,如何实现ok输出到对应的位置上,请各位 高手提点!谢谢
0 Comments
Accepted Answer
ybumrvk
on 21 May 2023
改成:
ok = 'ok';
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',ok',1,'P2');
0 Comments
More Answers (0)
See Also
Categories
Find more on Deep Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!