MATLAB中的交易系统
我正试图编写一个程序,用一个策略来计算总的PIP(获得的价格) 基本上,该策略是每当股票价格为MATLAB中的交易系统,matlab,Matlab,我正试图编写一个程序,用一个策略来计算总的PIP(获得的价格) 基本上,该策略是每当股票价格为5,我们将开始交易,只要股票价格高于2且低于9,即在(2,9)范围内,我们将继续交易。当价格达到2或9时,我们停止交易 当我运行程序时,它没有正确执行,它没有进入第二个while循环。少了什么 %总计:通过策略获得的PIP总数 %差异:股票价格在两个连续日期之间的差异 %Sheet1:从excel加载的数据矩阵,其中第一列是日期,第二列是股价 total = 0; diff = 0; i =1; j =
5
,我们将开始交易,只要股票价格高于2
且低于9
,即在(2,9)
范围内,我们将继续交易。当价格达到2
或9
时,我们停止交易
当我运行程序时,它没有正确执行,它没有进入第二个while循环。少了什么
%总计:通过策略获得的PIP总数
%差异:股票价格在两个连续日期之间的差异
%Sheet1:从excel加载的数据矩阵,其中第一列是日期,第二列是股价
total = 0;
diff = 0;
i =1;
j = 1;
while i <= length(Sheet1)
i
if Sheet1(i,2)==5
while Sheet1(j,2) > 2
j
diff = Sheet1(j+1,2) - Sheet1(j,2);
total = total + diff;
j = j + 1 ;
total
diff
end
end
i = i+ 1 ;
end
total=0;
差异=0;
i=1;
j=1;
而我2
J
微分=活页1(j+1,2)-活页1(j,2);
总计=总计+差异;
j=j+1;
全部的
差异
结束
结束
i=i+1;
结束
首先,当i=1时,代码将只在第一行上运行,始终不会增加,它将进入无限循环如果我增加你应该一直到“长度(Sheet1)-1”,因为超出索引
你能说得更具体一点吗?因为我不明白你在算法上的帮助是什么意思。首先,代码将只在第一行上运行,因为i=1始终不增加,它将进入无限循环
如果我增加你应该一直到“长度(Sheet1)-1”,因为超出索引
你能说得更具体些吗,因为我不明白你在算法方面想帮你什么以下是我对这个问题的尝试(我理解它的方式!):
p=rand(100,1)*10;%使用[0,10]中的值生成一些价格
s=0;%#我们开始交易时的指数
flag=false;%#表示交易的旗帜
总计=0;%#总增益
对于i=1:长度(p)-1
如果p(i)>5&&~flag%#如果价格>5且我们当前未进行交易
%#开始交易
flag=true;
s=i;
如果交易和价格不在[2,9]中,则elseif标志和(p(i)=9)%#
%#停止交易
flag=false;
总数=总数+总和(差异(p(s:i));%从p(s)到p(i)的间隔
结束
结束
如果标志%#如果仍在交易结束
%#停止交易
flag=false;
总计=总计+总和(差异(p(s:end));%从p(s)到p(结束)的间隔
结束
%#显示总价格收益
显示(总计)
基本上,我们在价格向量上循环。当price>5
我们开始交易,直到价格不在[2,9]
范围内,在这一点上,我们计算从我们开始到这个位置的差异总和(这是您试图做的吗??),并将其添加到总计中
不幸的是,它使用了for循环,也许有人可以通过矢量化来改进它…以下是我对这个问题的尝试(以我理解的方式!):
p=rand(100,1)*10;%使用[0,10]中的值生成一些价格
s=0;%#我们开始交易时的指数
flag=false;%#表示交易的旗帜
总计=0;%#总增益
对于i=1:长度(p)-1
如果p(i)>5&&~flag%#如果价格>5且我们当前未进行交易
%#开始交易
flag=true;
s=i;
如果交易和价格不在[2,9]中,则elseif标志和(p(i)=9)%#
%#停止交易
flag=false;
总数=总数+总和(差异(p(s:i));%从p(s)到p(i)的间隔
结束
结束
如果标志%#如果仍在交易结束
%#停止交易
flag=false;
总计=总计+总和(差异(p(s:end));%从p(s)到p(结束)的间隔
结束
%#显示总价格收益
显示(总计)
基本上,我们在价格向量上循环。当price>5
我们开始交易,直到价格不在[2,9]
范围内,在这一点上,我们计算从我们开始到这个位置的差异总和(这是您试图做的吗??),并将其添加到总计中
不幸的是,它使用了for循环,也许有人可以通过矢量化来改进它…我认为你应该只使用i或j,而不是两者都使用我认为你应该只使用i或j,而不是两者都使用这是关于确切的什么?这是关于确切的什么?我已经为变量i和j添加了增量。似乎程序没有进入第二个while循环。我已经添加了变量I和j的增量。似乎程序没有进入第二个while循环。
p = rand(100,1) * 10; %# generate some prices with values in [0,10]
s = 0; %# index when we started trading
flag = false; %# flag to indicate trading
total = 0; %# total gain
for i=1:length(p)-1
if p(i)>5 && ~flag %# if price>5 and we're not currently trading
%# start trading
flag = true;
s = i;
elseif flag && (p(i)<=2||p(i)>=9) %# if trading and price not in [2,9]
%# stop trading
flag = false;
total = total + sum( diff(p(s:i)) ); %# interval from p(s) to p(i)
end
end
if flag %# in case still trading past end
%# stop trading
flag = false;
total = total + sum( diff(p(s:end)) ); %# interval from p(s) to p(end)
end
%# display total price gains
disp(total)