【Java】カブロボコンテスト【ホリエモン】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/12/22(木) 10:14:39第二回が開催されたみたいだけど、どうよ?
0153デフォルトの名無しさん
2006/07/11(火) 00:06:21返信ありがとうございます。
その通りやってるんですけどねぇ。
パスもちゃんと通ってるし。kaburobo.batを実行すると
いろいろ説明が出力された後にEnterキーを押してくれって出てくるんですよ。
で、押すと上記のような実行エラーが出るということです。
設定XMLファイルも何もいじってません。
SDKRobotDriver.addTimeメソッドでどんな処理が行われているのか
知りたいんですが今回のカブロボSDKにはソースもついてないし。
開発したくてウズウズしてるんですけどそんなこんなで頓挫中です。
0154デフォルトの名無しさん
2006/07/11(火) 02:11:58ArrayList<Stock> stockList = informationManager.getStockList();
for(Stock stock : stockList){
StockData stockData = informationManager.getStockSession(stock);
System.out.println("終値:"+stockData.getClosingPrice());
}
などとすると、2004/7/14の後場のコード8303で
Exception in thread "main" java.lang.NullPointerException
とか言われてエラーとなることを発見
バージョンはSDKの1.0.2でデフォルトのままの20銘柄で発生しました
でも>>148 のエラーとはたぶん無関係でしょうね
IBMのサイトのサンプルと言われてもどれなのかわかりませんが
とりあえずhttp://www-06.ibm.com/jp/developerworks/kaburobo/skr02.shtml
のMyRobot002とMyRobot003を試しましたが何も起きません
xmlのstartとendは別なものにしましたけど
ただしコピペではダメで空白は全角スペースなので半角にしないとコンパイラが通りません
またMyRobot002ではInformationManagerを使っているので
import jp.tradesc.superkaburobo.sdk.trade.InformationManager;
が抜けてます
0155148
2006/07/11(火) 02:36:56でもその後、カブロボSDK付属のサンプルを使っても同じエラーが出たので
サンプルのせいではなさそうです。
0156デフォルトの名無しさん
2006/07/11(火) 02:50:13でもxmlを触っているのであればxmlが疑えます
例えばstartとendが逆とか6月31日のようなありえない日付とか全角とか文字コードとか
変な空白とかです
xmlはサンプルにあるのでそれを使うとかか、作ったxmlは捨ててしまうとかが考えられます
0157148
2006/07/11(火) 02:59:09使っているXMLファイルはSDK付属のものです。
今startとendの日付をいろいろいじっていて、
<start>2004-07-01</start>
<end>2004-07-02</end>
上のようにセットしたら、初めてスクリーニング成功しました。
でも期間をちょっとずつ伸ばして1ヶ月とかにするともうダメですね。
これはつまり、データが穴だらけということなんでしょうか。
今実験してる限りではもうホントぼろぼろですよ。ほとんど成功しない。
0158デフォルトの名無しさん
2006/07/11(火) 10:26:160159148
2006/07/11(火) 10:55:45startを木曜日にして、endを次週の月曜日までのものにした時だけ
スクリーニングが成功するようです。それより期間を延ばすとエラーになります。
2004年でも2005年でも同じですね。全く意味が分かりません。
0160デフォルトの名無しさん
2006/07/11(火) 21:02:16とりあえずJDKは最新なんか?
0161148
2006/07/11(火) 23:05:290162137
2006/07/11(火) 23:52:4950銘柄の方で、StockData が null になるのがあったので
null 判定をいれて対処した。
0163デフォルトの名無しさん
2006/07/12(水) 00:04:27OSは何?
0164デフォルトの名無しさん
2006/07/12(水) 00:06:19+コンパイルオプションみたいなのをつかいたい。
↓みたいな感じ
public void myPrintf( string _format, object ..._args )
{
#ifdef _DEBUG
System.out.printf(_format, _args);
#endif // _DEBUG
}
0165148
2006/07/12(水) 00:39:390166デフォルトの名無しさん
2006/07/12(水) 00:51:29nullになるのは8306だろ。8303なんて無い。
しかも調べてみたが2004年7月14日の8306の前場は売買停止じゃね?
データが欠ける事なんて株の世界には当たり前なんだから
nullチェックするのなんて常識だろ。
0167デフォルトの名無しさん
2006/07/12(水) 02:03:50java.util.logging でぐぐればおk
0168デフォルトの名無しさん
2006/07/12(水) 22:40:160169164
2006/07/13(木) 00:50:23java.util.logging でやれば、私のやりたいことはできるということ?
よんだけど、よくわからなかった。
やりたいことは、ソース上随所にあるSystem.out.printf()を
myPrintf()に、一括置換する(引数の部分はまったく変更なしで)
エントリーするバージョンについては、myPrintf()内の
System.out.printf()をコールしないようにしたい。
java.util.loggingにかえたら、読んでいる箇所全部かえないと
ダメじゃない?読み間違ってる?
・・・
#ifdefについては、アノテーションって機能で実現できそうなのはわかた。
javaの可変長引数は、今から勉強してみる。
0170デフォルトの名無しさん
2006/07/13(木) 06:34:32java.lang.Stringのformatメソッドに置き換えて、
RobotLogManager.log()でwrapしたらいいんじゃないか?
0171デフォルトの名無しさん
2006/07/14(金) 04:43:570172148
2006/07/16(日) 00:38:00サンプルのロボットでテストしてみましたが、結果は同じでした。
他にも同じ問題あった方いませんか?
0173デフォルトの名無しさん
2006/07/16(日) 10:23:28どうなってるの?
0174デフォルトの名無しさん
2006/07/16(日) 13:34:49まともに動きますよ。環境設定が悪いんじゃないの…
OSのパッチとかちゃんとやっている?
事務局のサポートは無いので、自力で問題解決する力がないと
このコンテストには参加できないよ。
0175デフォルトの名無しさん
2006/07/16(日) 16:14:34その問題かはわからんけど、俺がけっこうハマった問題で
Serializableがあった。
独自にメモクラスを改造した?
0176148
2006/07/16(日) 21:09:50メンテは13日から16日みたいですよ。下で確認できます。
http://kaburobo.net/
>>174
OSのパッチとか関係あるんですか?Windowsのアップデートってことでしょうか?
一応プログラマーなので解決能力はあると思ったんですが今回のこれはお手上げです。
>>175
改造してません。KABUROBO SDK1.02落としてパス通してサンプル走らせてみただけです。
0177175
2006/07/17(月) 00:00:43基本、パッチは当てないよりは、当てた方がよいと思う。
(万が一だが関係ある場合もある)
やっていると思うけど、念のため、1.02を上書きでいれるのでなく
1.01を完全削除したあとにいれてみる。
詳細は忘れたが、俺はこれでなんか1つ問題解決した。
0178174
2006/07/17(月) 00:31:16パッチは関連性はある。
Windows,JAVA,eclipseやら色々…
eclipseは日本語化キットとの相性もあるから注意が必要
0179148
2006/07/17(月) 05:32:35インストール後にkaburobo.batでサンプルロボット走らせてみただけです。
SDKRobotDriverクラスをデコンパイルしてみるしかないか・・・orz
0180174
2006/07/17(月) 05:59:31eclipseを使用していないのなら、コンパイル手順に問題があると思う。
以下のURLのサンプルをeclipse環境でコンパイルして動作しない場合は
OS,JAVAに問題があると思う。環境がまともなら動くハズ。
http://www-06.ibm.com/jp/developerworks/kaburobo/skr01.shtml
以下のブログではスーパーカブロボのサンプルコードを掲載しているので
掲載されているコードで動作確認するのも手かも
http://blog.goo.ne.jp/cabrobo
http://takobouzu.cocolog-nifty.com/kaburobo/
0181151
2006/07/17(月) 14:25:46> eclipseを使用していないのなら、コンパイル手順に問題があると思う。
元のレスちゃんと読んだ?
サンプル走らせてるだけだから、自分でコンパイルしてないはずだよ。
0182151
2006/07/17(月) 19:42:09FreeBSDで同じコケ方してるので調べてる。
diablo-jdk-1.5, linux-sun-jdk-1.5, jdk-1.5の全てでコケる。
jdbで実行してSampleRobot.orderとSampleRobot.screeningに
ブレークポイントを張っても、そこまで来ない。
ロボットがSDKから呼ばれる前に、SDKの中で深い再帰をした
末にぬるぽ例外がthrowされる。
俺的にはWinXP Homdeで(ついでにFedoraCore4でも)動いているから
困ってないのだが、何か協力できることがあったら言ってくれ。
0183デフォルトの名無しさん
2006/07/17(月) 20:55:48場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i−want−to−study−java@hotmail.co.jp
教える対象は超初心者です。
専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
0184デフォルトの名無しさん
2006/07/17(月) 22:57:18時給たったの1,000円って(ププッ
0185デフォルトの名無しさん
2006/07/17(月) 23:21:450186デフォルトの名無しさん
2006/07/17(月) 23:59:42自分で勉強したほうが安いんじゃない?
0187デフォルトの名無しさん
2006/07/18(火) 01:23:450188デフォルトの名無しさん
2006/07/18(火) 23:33:17ちんちん生えてますか?
>>148
dataフォルダ内のデータがぶっ壊れているのでは?
50銘柄データとか20銘柄データとかダウンロードできので
それに置き換えてみれば?
0189デフォルトの名無しさん
2006/07/18(火) 23:44:240190デフォルトの名無しさん
2006/07/19(水) 17:57:06カブロボのフォルダに入ってる「ロボット作成方法」って資料について質問したいんだけど、
テクニカル分析のところで、スクリーニングで買う銘柄と売る銘柄メモに保存してるよね?
そこまでは良いんだけど、メモに保存した「売る銘柄」の株を売る場合って、
注文はどう記述すればいいんですか?
「買う銘柄」を成り行き注文するなら、
for(Stock stock : memo.getBuyList())
orderManager.orderActualNowMarket(stock,stock.getUnit());
で出来るんだけど、売る処理のfor文と注文の記述方法が分からないんです。
どなたか教えてください。
0191デフォルトの名無しさん
2006/07/19(水) 19:41:58robot/SampleRobot.java
を見たらどう?
0192デフォルトの名無しさん
2006/07/19(水) 20:32:36トレーディングシステムにとってアルゴリズムは最も大事な要素でしょ?
それを証券会社にただでプレゼントするなんてことどうしてできるんですか?
全く理解できないんですが・・・
0193デフォルトの名無しさん
2006/07/19(水) 20:58:16実際今までのカブロボのプログラムの大半は極めてシンプルなもの。
「前日に△パーセントさがった○○な銘柄を買う」程度でいいの。
そんな糞ルールでも運よく優勝する可能性は十二分にある。
そうすれば賞金もらえるわけで丸儲け。
0194デフォルトの名無しさん
2006/07/19(水) 21:00:30それで旨みだけはあるんだから宝くじ感覚で参加ってのはいいんじゃねえ?
0195デフォルトの名無しさん
2006/07/19(水) 22:22:35for(Stock stock : memo.getSellList)
orderManager.orderActualNowMarket(stock,(-1)*stock.getUnit());
でいいんじゃね?売るだけなら
でも、たぶん反対注文(買った株を売る)したいのであろう
であればorderReverseNowMarketAllを使えばいいんじゃね。つまり
for(Portfolio portfolio : memo.getSellList)
orderReverseNowMarketAll(portfolio);
0196デフォルトの名無しさん
2006/07/19(水) 22:34:52公開を前提にするから極力パフォーマンスを抑えたシステムで戦うわけか・・・
別の意味でチューニングが難しいな
0197デフォルトの名無しさん
2006/07/20(木) 00:20:09あほらしいルールの方が意外に強かったりするのが株だし
0198デフォルトの名無しさん
2006/07/20(木) 07:33:250199デフォルトの名無しさん
2006/07/20(木) 14:26:08新規の現物は売れないよ。
売るなら信用空売りにしなきゃいけない。
しかも今回のルールではアップティックルールを守らないと全部はじかれる。
詳細はちゃんとドキュメント読めば書いてあるよ。
要約すると、空売りは直近終値より上の指値のみってこと。
0200デフォルトの名無しさん
2006/07/20(木) 16:16:11for(Portfolio portfolio : memo.getSellList())
portfoloi.orderReverseNowMarketAll();
でやると、memo.getSellList()の部分が型の不一致でエラーでるんですよ。
エレメントタイプStockからPortfolioに変換できないと。
これさえ解決できれば売れそうなのに。。
空売りは無しの方針で行きたいのでなんとかこれを成功させねばならんのです。
このループ条件解決できませんかね?
0201デフォルトの名無しさん
2006/07/20(木) 17:21:56ちょっとは考えようよ・・・
ArrayList<Portfolio> portfolioList
= PortfolioManager.getInstance().getPortfolio();
for(Portfolio portfolio : portfolioList)
for(Stock stock : memo.getSellList())
if(portfolio.getStock().equals(stock))
portfolio.orderReverseNowMarketAll();
0202デフォルトの名無しさん
2006/07/20(木) 20:31:16株価DBなどは自前のDBをみる、など。
0204151
2006/07/20(木) 22:03:31しかし、まだSDKはバグってるようだ。
0205デフォルトの名無しさん
2006/07/21(金) 08:49:340206200
2006/07/21(金) 10:49:36いえ、>>201氏共に助かりました。
しかし、2重でループ回すとは。。。
memoから読み出して単純に売るだけだろうと考えてたので
想像がつかなかったです。
0207初心者
2006/07/21(金) 14:05:39自分もカブロボ最初から1年くらいかけて作ろうとおもってるんですが、
JAVA以外に必要な知識ってありますか?
教えてもらえれば幸いです。
0208デフォルトの名無しさん
2006/07/21(金) 15:18:58この記事を読んでいないわけではあるまい?
ttp://www-06.ibm.com/jp/developerworks/kaburobo/
0209デフォルトの名無しさん
2006/07/21(金) 15:52:19汎用ロボットでカブロボコンテストに参加するだけならjavaの
知識はほとんど必要なし。
自作ロボットでも、むしろ株式や統計学などの知識が重要。
とりあえず汎用ロボットでエントリしてみたら。
0210デフォルトの名無しさん
2006/07/21(金) 18:57:43そのサイト、古いとはいえ初心者にとっておいしい情報かもしれない
カブロボ・コンテストへのご招待 その3
カブロボ・コンテストへのご招待 その2
カブロボ・コンテストへのご招待 その1
のリンクが切れているのはどうにかしてほしいような
なんでその下の「早稲田情報技術研究所 加藤社長インタビュー」に
リンクが行くのかと
0211デフォルトの名無しさん
2006/07/22(土) 00:10:23IEから参加者ページに入ってロボット状況を見ると
ステータスが基準未達となっているから
何か表示しようとしてコケているのだろうか?
それにしても基準未達とは(´・ω・`)ショボーン
0212デフォルトの名無しさん
2006/07/22(土) 14:41:56一回トライしたけど、挫折しましたw
0213デフォルトの名無しさん
2006/07/22(土) 20:49:39戦略の登録のとき、テストだと思って適当に書いたので
直して、もう一回アップしようとしたら、現在稼動中なのでアップできません
ってでてきちゃった。
直したい場合ってやっぱアカウント削除からやり直さなきゃダメ?
0214デフォルトの名無しさん
2006/07/22(土) 22:46:08最初は設定マニュアルもアップされてなくて適当に設定して
ベンチテストしたら結構良かったので勢いでエントリしてしま
った。
でも、売買を見てみると設定したはずの取引ルールとは違う
動きをしてる。(謎?)
上位に食い込んでるからま・いいか(笑)
0215デフォルトの名無しさん
2006/07/22(土) 23:06:550216211
2006/07/23(日) 00:21:38>>212
正しく設定しているはずなのに思った通りには動いてくれない
たぶんJavaでプログラム書ける人でも動くよう書くのは至難の技かも
単純に25日平均線が5日線を越えたから買いとか単純な設定なら動くと思うけど
なにより数式が抽象的すぎて、計算させた値がどうなるかわからないのが致命的
設定した条件がどうなっているのかさっぱりわからないので
バグを取りようがない
というかできたパーツの内容を確認できないから
もはや何がどうなっているやら・・
0217デフォルトの名無しさん
2006/07/23(日) 15:05:570218デフォルトの名無しさん
2006/07/23(日) 15:16:44んなこたぁない。
ただ、スクリーニングの時計算した結果を注文時に使いたいときは必要
0219デフォルトの名無しさん
2006/07/23(日) 17:08:28エントリーツールで動きません。
なんででしょう。
>検証開始
>
>tools.jarが見つかりません。
>%JAVA_HOME%の設定を確認してください。
>コンパイルが失敗しました
JAVA_HOMEは
C:\Progra~1\Java\jdk1.5.0_07
でいいのでしょうか。
0220デフォルトの名無しさん
2006/07/23(日) 17:19:550222デフォルトの名無しさん
2006/07/23(日) 18:50:09kaburobo.batではコンパイルしてないからな。
ちゃんとパスが通ってないんじゃね?
コマンドプロンプトで
"%JAVA_HOME%\bin\javac" -version
って打ってちゃんと出る?
0223デフォルトの名無しさん
2006/07/23(日) 19:33:000224223
2006/07/23(日) 19:37:15>>219
エントリーツールのインストールのときにSDKをインストールしないを選択すると
俺の場合は発生したが、インストールするを選択するとエラーが出なくなった
きっとpathの問題なのだろうが、それ以外の対応策はわからん
0225デフォルトの名無しさん
2006/07/23(日) 20:39:09>>222
>>224
初心者の質問にお付き合い頂き、ありがとうございます。
一度修復インストールを選んだときに
再起動していなかったかも知れません。
再起動しましたら、一歩進んだようです。
今度は以下のようなメッセージです。
相変わらず、kaburobo.batではちゃんと動くんですがね。
何でしょうかね。
>下記のエラーが発生しました。設定を確認してください。
>
>java.lang.ClassNotFoundException: MyRobot.MyRobot001
>at java.net.URLClassLoader$1.run(Unknown Source)
>at java.security.AccessController.doPrivileged(Native Method)
>at java.net.URLClassLoader.findClass(Unknown Source)
>at java.lang.ClassLoader.loadClass(Unknown Source)
>at java.lang.ClassLoader.loadClass(Unknown Source)
>at jp.tradesc.superkaburobo.sdk.driver.SDKRobotDriver.setConfiguration(SDKRobotDriver.java:470)
>at jp.tradesc.superkaburobo.sdk.driver.RobotDriver.main(RobotDriver.java:19)
0226デフォルトの名無しさん
2006/07/23(日) 20:46:06MyRobot.MyRobot001 となっているようだが、そこが違ってるっぽい。
(まさか大文字のパッケージ名ということはないよね?)
ソースコードの登録の仕方がおかしいと思われる。
最初のソースコードの登録の所でもうひとつ下のフォルダ
(ソースコードが実際あるフォルダ)を選択してやってみそ。
0227225
2006/07/23(日) 20:55:59ありがとうございます。
エントリーツールの
クラス名を選ぶところで
MyRobot.MyRobot001を選ばずに
MyRobot001と手で入力するようにしたら
無事に起動しました。
丸一日のコーディングが無駄にならずに済みました。
0228デフォルトの名無しさん
2006/07/25(火) 02:09:11ってあるんだけど、今登録したロボットは一旦きえちゃうの?
0229デフォルトの名無しさん
2006/07/25(火) 02:20:580230デフォルトの名無しさん
2006/07/25(火) 07:21:10無知な学生たちが勝手に商売道具を作って献上してくれるんだから笑いが止まらんだろうな
0231デフォルトの名無しさん
2006/07/25(火) 22:17:50いろんな方法があるだろうけど、これなら比較的簡単かなあ。
arg0 は order() や screening() のパラメータで、TradeAgent 型ね。
TimeManager timeManager = arg0.getTimeManager();
Calendar c1 = timeManager.getBusinessDay( -1 ); //. 前営業日
Calendar c2 = timeManager.getCurrentDate(); //. 当日
int d1 = c1.get( Calendar.MONTH ); //. 前営業日は何月か
int d2 = c2.get( Calendar.MONTH ); //. 今日は何月か
if( d1 != d2 ){
//. 今日と全営業日とで月が違っていた =今日は月の初めの取引日
}
0233デフォルトの名無しさん
2006/07/26(水) 02:32:180234デフォルトの名無しさん
2006/07/26(水) 08:54:56興味アリ
0235デフォルトの名無しさん
2006/07/28(金) 17:43:10遅レスで申し訳ない。
というか、メモ使わないって可能?
正確には、スクリーニング無しの株ロボは可能なのかと。
売買の準備時間3分しかないから、500銘柄分析できない。
まだエントリーツールで試運転やってないけど、50銘柄でスクリーニングが40秒かかる僕のロボット。
単純計算で400秒だから無理かなーと思っている。
あ、それとも217氏は取引する株は固定?
業種絞ってるとか?
0236デフォルトの名無しさん
2006/07/28(金) 17:57:540237デフォルトの名無しさん
2006/07/28(金) 23:09:08大会サーバーだと早くなるでしょ。
0238デフォルトの名無しさん
2006/07/29(土) 00:04:09過度に期待するのはどうかと
まぁきっと当初では追いつかないのであわててシステム増強→メンテナンス
ってことになっていると思うけど
0239デフォルトの名無しさん
2006/07/29(土) 21:48:55本大会のサーバ処理性能はマニュアルに記載されているよ。
・ロボット注文処理時間合計(ミリ秒): 98660
・ロボット注文処理時間平均(ミリ秒): 203
・ロボットスクリーニング処理時間合計(ミリ秒): 2711227
・ロボットスクリーニング処理時間平均(ミリ秒): 11066
・総実行時間(ミリ秒): 2915840
サンプルロボを自分のPCで実行して性能比を求めれば
50銘柄のスクーリング処理が40秒掛かることがNGなのかOKなのか判断できると思う。
0240デフォルトの名無しさん
2006/07/30(日) 00:56:11>217 ではないが、いかにして簡単な手法で大きな利益を得るかを考えた結果
こんなロボットができた(エントリー条件未達。nullチェックしてないから?)
一応スクリーニング使っているが、エントリー時の平均で合計4秒切ってる
20銘柄の25倍で500銘柄としても平均で1分半しか使ってねぇww
(Celeron1.7G)
0241デフォルトの名無しさん
2006/07/30(日) 02:29:20結果が全てとか書いてあったから誤解してた。
報酬も未確定でうさんくさいし様子見だな。
0242デフォルトの名無しさん
2006/07/30(日) 03:37:04大会概要にも書いてあるよ
将来的に、(1)アルゴリズム・トレードの技術的向上および普及に貢献すること、
そして(2)このコンテストの成果が一般投資家の投資活動に貢献することを目指しています。
0243デフォルトの名無しさん
2006/07/30(日) 05:07:52解析元の作者に対価は払われないだろうな。
大体対象銘柄非公開ならいくらでも主催者有利な結果に出来るし。
せめて東証一部全対象にしてエントリー後の成績のみで競うだったらよかったのに・・
再現可能な乱数使った奴だけエントリーしてみるか。
0244デフォルトの名無しさん
2006/07/30(日) 07:37:00主催者は不利だと思うよ。
上位入賞者は改良ロジックを持ってよそにいっちゃうからね。
流出を防ぐには、コンテストの賞金は縛りなしで、
5億円の運用時に契約などで縛りを入れるんだろうなぁ
アルゴリズム取引はどの証券会社も興味があるだろうから
コンテストの顛末がどうなるか面白そう
0245デフォルトの名無しさん
2006/07/30(日) 10:45:04ほとんどの参加者は著作権があるからぱくられ無いと思ってるだろうな。
0246デフォルトの名無しさん
2006/07/30(日) 11:09:17その中のアルゴリズムにはかからないんだっけか?アメはまた違うが
GPLにしちゃうとどうなるか知らないけど
0247デフォルトの名無しさん
2006/07/30(日) 11:19:53以前のコンテストは全部簡易ロボットが優勝してるんだぜ?
主催者側が作ったアルゴリズムにすら勝てないアルゴリズムなんか盗まねえだろw
0248デフォルトの名無しさん
2006/07/30(日) 11:49:160249デフォルトの名無しさん
2006/07/30(日) 11:55:10GPLにしても社内で使われたらそれまでだし
0250デフォルトの名無しさん
2006/07/30(日) 12:13:34バックテスト利回り 257.31って、すごいな。
0251г(0´W`0)ノねぇねぇ
2006/07/30(日) 12:22:120252デフォルトの名無しさん
2006/07/30(日) 12:26:12これに応募せず自分だけで運用するだろ?
広まってしまったら、みんなが使うようになって儲けられなくなる。
■ このスレッドは過去ログ倉庫に格納されています