今回は新しく追加されたETF機能にフォーカスしたサンプルロボットを解説したいと思います。
ポートフォリオに ETF がなければ買い、あれば売りをするだけの単純なカブロボです。
●ETFとは
ETF について、及び ETF 対応カブロボ SDK については ETF 機能対応のカブロボSDK 2.1.0-beta1版リリースのお知らせもご参照ください。
●コードの説明
サンプルソースコード行の先頭には行数が付与されています。実際のソースコードでは行数の記述は不要です。
36 // ETF の銘柄リストをつくります。
37 ArrayList<Stock> etfStockList = new ArrayList<Stock>();
38 for(Category cat: im.getEtfList()){
39 etfStockList.addAll(cat.getStockList());
40 }
ETFの情報はInformationManager(im)のgetEtfListメソッドで取得することができます。
for文を回してETFだけのリストを作ります。
42 // 1銘柄ずつ保有していれば売り、保有していなければ買います。
43 for (Stock etf : etfStockList) {
etfStockListからStock型のオブジェクトが取得できるので、これを元に売買命令を出します。
44 if(pm.isHolding(etf)){
45 // 保有しているので全量を 即時 成行 で売却します。
46 for (Portfolio portfolio : pm.getPortfolio()) {
47 // このポートフォリオが ETF 銘柄か調べます。
48 if(etf.equals(portfolio.getStock())){
49 // ETF なので売却します。
50 portfolio.orderReverseNowMarketAll();
51 }
52 }
53 } else {
銘柄を保有しているかどうかを調べます。
保有していた場合はその銘柄(ETF)を売却します。
53 } else {
54 // 保有していない ETF なので、新規に買い注文を出します。
55
56 // 買い注文を出すために、前日終値を取得し、数量を計算します。
57 StockData lastSession = im.getStockSession(etf);
58 if(lastSession == null) continue; // 最後の場の情報を取得できなかったのでこの銘柄をスキップします。
59 Integer closingPrice = lastSession.getClosingPrice();
60 if(closingPrice== null) continue; // 最後の場の終値が取得できなかったのでこの銘柄をスキップします。
61
62 // 注文数 (総資産の40%) (前日の終値)
63 int qty = orderMoney / closingPrice.intValue();
64
65 // 注文を出します。
66 if (! om.orderActualNowMarket(etf, qty) ) {
67 // 失敗した場合ログに理由と共に出力します。
68 rlm.log(etf.getStockName()+" "+qty+"株(終値:"+closingPrice+" 注文額:"+(closingPrice*qty)+" )の注文に失敗しました: "+om.getLastOrderResult().toJapanese());
69 }
70 }
保有していない場合、前日の終値と orderMoney (1回の注文で購入する1銘柄あたりの金額) から買う株数を計算します。
om.orderActualNowMarket(etf, qty) で実際に注文をし、失敗した場合はログに記録します。
●ソースコードダウンロード
SampleEtfRobot.java
※カブロボをお使いのPCで実行するには、カブロボSDKが必要です。
別途、カブロボサイトからカブロボSDKをダウンロードしご利用ください。
また、ETFを使うためには robot-config.xml を事前に修正しておく必要があります。
修正方法は robot-config.html (SDK付属の help/doc ディレクトリ内にございます)をご覧ください。
- Newer: 一目均衡表
- Older: 【FAQ】カブロボサイトでの稼動テストと拡張検証パックでのテストの結果の違いについて
Comments:0
Trackback:0
- TrackBack URL for this entry
- http://kaburobo.sakura.ne.jp/kaburobonet/mt-tb.cgi/308
- Listed below are links to weblogs that reference
- ETFを売買するサンプルロボット from kaburobo tech support - kaburobo.net/support/