- - PR -
カブロボコンテストのプログラム
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-14 00:37
カブロボというコンテストのプログラムに参加するために以下のようなプログラムを作成しましたが、
java.lang.IndexOutOfBoundsException: Index: -1, Size: 0 at java.util.LinkedList.entry(Unknown Source) at java.util.LinkedList.get(Unknown Source) at RSIRobot3.run(RSIRobot3.java:35) at jp.kaburobo.driver.KabuRoboDriver.start(KabuRoboDriver.java:246) at jp.kaburobo.driver.KabuRoboDriver.main(KabuRoboDriver.java:418) というエラーが出てしまい、どこを直したら良いのかわかりません。よろしければ、具体的にどこをどうすればよいか、教えてください。 import java.util.*; import jp.kaburobo.robot.Robot; import jp.kaburobo.investment.*; import jp.kaburobo.information.*; import jp.kaburobo.util.*; import jp.kaburobo.search.*; import jp.kaburobo.technical.*; public class RSIRobot3 implements Robot{ public void run (InvestmentAgent investmentAgent){ Stock[] stocks =investmentAgent.getStocks(); // 銘柄の取得 Map holdingMap = investmentAgent.getPortfolio().getHoldings(); //持ち株の取 得 InformationManager informationManager = investmentAgent.getInformationManager(); //データ取得用クラス TechnicalAnalysisManager technical=investmentAgent.getTechnicalAnalysisManager(); for(int i=0;i<stocks.length;i++){ List indexList = informationManager.getIndexInformation(stocks[i],Time.getTime(),-14); IndexInformation indexinfo= (IndexInformation[])indexList.toArray(new IndexInformation[0]); List rsiList = technical.getRSI(indexinfo,null,15); RSI rsi = (RSI)rsiList.get(rsiList.size()-1); SimpleStockOrder stockOrder = null; Holding holding = null; if(rsi.getRsi()>0){ if(rsi.getRsi()>=70){ stockOrder = new SimpleStockOrder(stocks [i],StockOrder.SELL);} else if(rsi.getRsi()<=20){ stockOrder = new SimpleStockOrder(stocks [i],stockOrder.BUY);} else{ holding = (Holding)holdingMap.get(stocks[i]); if(holdingMap.size() > 0){ if(holding.getNumber()>0){ stockOrder = new SimpleStockOrder(stocks[i],StockOrder.SELL,holding.getNumber());} else{ stockOrder = new SimpleStockOrder(stocks[i],stockOrder.BUY,-holding.getNumber());} } } } if(stockOrder != null){ investmentAgent.order(stockOrder);} } } } |
|
投稿日時: 2004-12-14 01:16
カムさん、面白そうですね。
まず失礼ながら、どこを『どうしたら良いか』教えてもらうより、 いまのカムさんのプログラムが『なぜまずいか』考えたほうが 良いのではないでしょうか。 エラーメッセージには大きなヒントが示されています。 少なくとも RSIRobot3.java の 35行目で呼び出している個所で 問題が起きています。 サイズがゼロのリンクリストを -1 して get( ) 使用としてます から。 なぜ空っぽのリストからデータを取り出そうとしてるのでしょうか? |
|
投稿日時: 2004-12-16 00:17
Kissingerさん、ご返答ありがとうございます。よくわからないので、再度質問させてください。
List rsiList = technical.getRSI(indexinfo,null,15);で、rsiListはなぜサイズがゼロなのでしょうか? サイズがゼロでなければ、RSI rsi = (RSI)rsiList.get(rsiList.size()-1);としても大丈夫ですか? |
1