[カブロボ]一日目の処理 | ふぁんくしょん

[カブロボ]一日目の処理

とりあえず、大会側で用意されたクラスライブラリでは物足りなかったので株の銘柄を表すMyStockオブジェクトを作成。メソッド名はすべて日本語で、呼び出し側見れば意味が分かるので、コードは割愛。

その後、一日目の処理だけ書いてみた。
大会の規則で2銘柄以上購入が条件なので、一日目は最も安く買える株2つを買うことにした。自分の考えているアルゴリズムだと一銘柄だけ購入になってしまう危険性もあるので、最初の一日は捨てる方向で。

半角スペースが置換されコードが見づらかったためtabを全角スペースに置き換えたので、引用する場合は注意。

ちなみに変数名とかメソッド名を日本語にしているのは、株式用語が英語だとさっぱりで、日本語のほうがコーディングの効率が良いと判断したからです。普段は日本語はあまり使いません。Eclipse使っていて、メソッドは一覧から選択しているので、日本語のタイプはコードに出てくるほどはしていません。
----------------------------------------------
 void 初日処理(InvestmentAgent investmentAgent)
 {
  //初日はとりあえず、売買基準を満たす。
  //二銘柄購入。総購入金額が安くなる二つ。
  
  Stock[] stocks = investmentAgent.getStocks(); //取引対象銘柄全部の配列

  //一番安いのを探す
  long minval = 1000000000L;
  MyStock minstock = new MyStock(stocks[0],investmentAgent);

  for(int i = 0;i < stocks.length;i++)
  {
   MyStock stock = new MyStock(stocks[i],investmentAgent);
   long val = stock.終値()*stock.最低売買単位();
   if(minval > val)
   {
    minval = val;
    minstock = stock;
   }
  }

  //一番安いのを除いてもう一度
  long minval2 = 1000000000L;
  MyStock minstock2 = new MyStock(stocks[0],investmentAgent);

  for(int i = 0;i < stocks.length;i++)
  {
   MyStock stock = new MyStock(stocks[i],investmentAgent);
   if(minstock.株式コード() == stock.株式コード())continue;
   long val = stock.終値()*stock.最低売買単位();
   if(minval2 > val)
   {
    minval2 = val;
    minstock2 = stock;
   }
  }
  
  minstock.成行買い(1);
  minstock2.成行買い(1); 
  
 }