0

データは次のようなセルとして返されます (各取引はセル内で互いに下にあり、つまり 5 x 4 のセルです):

sell      50    FTSE                   6500 
buy       100   Eurostoxx              3300  
buy       25    SP                     1980 
buy       30    FTSE                   6490
sell      25    Eurostoxx              3315  

まず、データベースクエリからセルとして返されるデータを混合しているため、それが問題かどうかはわかりません

私がやりたいのは、これらを市場にマークすることです。そのため、これらの契約のそれぞれの市場終値を変数として持っており、それらFTSE_CLOSEを 、 EUROSTOXX_CLOSEおよび と呼びますSP_CLOSE

次のようなことができるようになりたいです。

where coloumn 3 = "FTSE" and column 1 = "sell" then column 5 = column2 * (column4 - FTSE_CLOSE)
where column 3 = "FTSE" and column 1 = "buy" then column 5 = column2 * (FTSE_CLOSE - column4)  

他の契約についても同様です。

基本的に、文字列と数字の混合使用に苦労しています

  1. すべてを行う必要がcell2matあるので、いくつかのベクトルを用意してから、何らかの方法で文字列ベクトルを調べ、他の関連するベクトルで計算を実行します。quantity * price - close_price
  2. これを行う簡単な方法はありますか
4

1 に答える 1

0

あなたは単にコマンドを探していると思いますstr2num

ここに1つのアイデアがあります:

input_data={"sell","50","FTSE","6500";
            "buy","100","Eurostoxx","3300";
            "buy","25","SP","1980",
            "buy","30","FTSE","6490",
            "sell","25","Eurostoxx","3315"};

closing_price.FTSE=6000;
closing_price.Eurostoxx=3000;
closing_price.SP=2000;

for i=1:size(input_data,1)
    if strcmp(input_data{i,1},'sell')
       diff_from_market(i)=str2num(input_data{i,2}) ...
           *(str2num(input_data{i,4})-closing_price.(input_data{i,3}));
    elseif strcmp(input_data{i,1},'buy')
       diff_from_market(i)=str2num(input_data{i,2}) ...
           *(closing_price.(input_data{i,3})-str2num(input_data{i,4}));
    end  
end
diff_from_market
于 2014-11-12T15:47:48.760 に答える