本帖最后由 hydra1234 于 2019-3-14 19:53 编辑
完整代码如下:
load('time.mat');
load('guozhai1812.mat');
load('guozhai1903.mat');
mspread=guozhai1903-18.4842-0.815*guozhai1812;
in=[];
out=[];
postive=0.01652;
negative=-0.02193;
shangzhisun=0.053;
xiazhisun=-0.0495;
mean_price=mean(mspread);
m=1;
while m<=length(mspread)
if mspread(m)>postive && mspread(m)
in=[in,[guozhai1903(m)-0.815*guozhai1812(m)-18.4842,m]'];
for j=m+1:length(mspread)
if mspread(j)
out=[out,[guozhai1903(j)-0.815*guozhai1812(j)-18.4842,j]'];
m=j;
break;
end
if mspread(j)>=shangzhisun
out=[out,[guozhai1903(j)-0.815*guozhai1812(j)-18.4842,j]'];
m=j;
break;
end
if j==length(mspread)
m=j;
end
end
elseif mspread(m)xiazhisun
in=[in,[guozhai1903(m)-0.815*guozhai1812(m)-18.4842,m]'];
for j=m+1:length(mspread)
if mspread(j)>mean_price
out=[out,[guozhai1903(j)-0.815*guozhai1812(j)-18.4842,j]'];
m=j;
break;
end
if mspread(j)<=xiazhisun
out=[out,[guozhai1903(j)-0.815*guozhai1812(j)-18.4842,j]'];
m=j;
break;
end
if j==length(mspread)
m=j;
end
end
end
m=m+1;
end
if size(out,2)
out=[out,[mspread(length(mspread)),length(mspread)]'];
end
arbitrage_number=size(out,2);
arbitrage_result=[];
for i = 1:arbitrage_number
in_position=in(2,i);
in_time=time(in_position);
in_price=in(1,i);
out_position=out(2,i);
out_time=time(out_position);
out_price=out(1,i);
hold_cost=(guozhai1903(in_position)+0.815*guozhai1812(in_position))*0.01;
trade_cost=0.0008;
if in_price>postive||out_price>=shangzhisun
gross_profit=in_price-out_price;
elseif in_price
gross_profit=out_price-in_price;
end
net_profit=gross_profit-trade_cost;
net_profit_rate=net_profit/hold_cost;
temp=[in_time,in_price,out_time,out_price,hold_cost,trade_cost,gross_profit,net_profit,net_profit_rate];
arbitrage_result=[arbitrage_result,temp'];
end
开头的time,guozhai1812,guozhai1903都是包含651个数据的数组文件