2007-01-01から1年間の記事一覧

今週もがんばろう!

今日はとりあえず報酬をいじくってみる!

報酬がうまくいかない

シグモイド関数のような曲線を描く関数で、−1〜1までの値が得られるものはないかなと探していたらtanh関数が見つかったのでそれを利用したのだけれど、いつも同じ値が出てしまいまともに学習されない。 今日はもう遅いので、明日検証する。 public double …

8時間も寝てしまった

寝すぎた2時に寝て、10時に起きてしまった。一度いつもどおり7時ごろに目が覚めたのに、こんな時間に…。13時から大学で奨学金返済についての説明会があるので、研究はその後で。

適格度トレースは難しい

適格度トレースは良くわからんので、つま先でつついてはみるけど踏み込まないのが続いていました。がしかし、こんな感じに学習させたらいいんじゃない?と考えていたことが、適格度トレースに似ているようなのでちょっと真面目に読んでみました。 http://www…

昼寝で一時間半は寝てしまっていたっぽい

だ、駄目だこんなことでは!

Thread.sleep()を使ってカブロボを繰り返し実行できるかな?

「自動的にプログラムを繰り返し実行する」機能はUWSCで実現しましたが、もしかしてThread.sleep()を使えば出来るんじゃね?と思い以下のコードで実験してみた。 public static void main(String[] args) { String[] arg = { "-n", "RSIRobo2" }; for (int i…

RSI10刻み(状態数10)での学習結果

昨日寝る前に朝まで学習させようと思ったけれど、すぐに収束したので止めた結果のグラフ。 繰り返し4回目でBuy&Hold教に入信したらしく、総トレード数がほぼ1になっています。状態数を減らすとただでさえ酷い学習に磨きがかかりますね。ただ、資産評価額の…

2年間を218回繰り返した強化学習結果

大学に行っている間に上記の学習をさせていたので、その結果を書いておく 強化学習の設定 強化学習方法:Actor-Critic 状態:RSI(相対力指数)を0〜100で1区切りずつ(計100個) 報酬 買:買ったその日の終値が高ければ+1、そうでなければ-1 売:打ったその…

フリーソフトUWSCでプログラムの繰り返し自動実行

UWSC 上のソフトを使ってとりあえず10回繰り返してみました。スクリプトの記述はExcelのマクロっぽいですね。vbもこんな感じなのかな。 RunEclipse.uws ACW(GETID("Java - RSIRobo2.java - Eclipse SDK","SWT_Window0"),-4,-4,1288,1032,0) BTN(LEFT,DOWN,19…

今日は研究室集合の日

理系で卒業研究中なのに、週一回しか大学に行かないってのもおかしな話だよな。まあ家でプログラム組んでるほうがはかどるからいいんだけどね。今日は自動で繰り返し機能をつけたいと思います。 TODO 同じ期間の学習を繰り返すことが出来るようにする。(例…

13回実験を繰り返して学習を進めた結果

1回目の学習結果 終了時資産評価額:50331213 勝ちトレードの純損益%:1.7739999999999998 負けトレードの順損失%:-0.848 最大負けトレード%:-8.49056603773585 最大勝ちトレード%:11.838790931989925 勝率%:61.05263157894737 総トレード数:95 …

インスタンスの書き出し読み込みがうまくいった

うまくいっている模様。後は、実験を繰り返すごとに学習が進んでいることが確認できれば確信できるねぇ。

あまりに酷くて

//何枚マイナスしたかを数える int minus = 0; //注文株数が正しくなるように調整する while (orderQty > sumStockHold) { orderQty = orderQty + minus * stock.getUnit(); minus--; } //注文株数はactionに基づいているので、株数を減らした分action値も減…

昨日終わったはずのところで、バグが出た…

ここの37845, -1000株売却が原因だな…。5000株をちゃんと処理できてないのか。 【前場】ID:37845, 保有株数:1000 現物保有額:429000 5000株売ります 37845, -1000株売却 【後場】ID:37845, 保有株数:2000 【スクリーニング】ID:37845, 保有株数:2000

staticフィールドにアクセスするときは、

public ACMemo(Stock stock, State state) { //this.stock = stockではなくて ACMemo.stock = stock; ACMemo.state = state; ACMemo.portfolioMemo = new PortfolioMemo(); } のようにする。クラスメソッドへのアクセスがClass.getInstance()なんだから当た…

既にインスタンスを出力してるのかしていないのか

すでにインスタンスが保存されている場合とされていない場合で分けるために、フォルダの中にあるファイルの名前を調べる必要があるので、java.io.Fileを使用する。今まで使ったことがあるのは PrintWriter fout = new PrintWriter(new BufferedWriter(new Fi…

Serializableの実装

本日の題名に書いた機能をつけるため、今日も1日がんばろう。 この機能の実装にはJavaにあるjava.io.Serializableインターフェースを使う。Serializableは自分の持っている書籍での解説が皆無なので以下のサイトを参考にする。このインターフェースを実装す…

ちゃんと学習できました。明日からのTODOリスト

最後まで実行できました。ようやく次に進めます。 と言うわけでTODOリストで今後の予定を再確認します 売買最小単位株の単純売買ではなく、複雑な売買を出来るようにする 同じ期間の学習を繰り返すことが出来るようにする。エピソードの繰り返し(例:2005年…

↑「if文の条件文の不等号が間違えてた…」っていうのが間違えてた

そのままでよかった。 で、結局原因がわかりました。メソッド内でリストの先頭要素を取得&削除していたのに、そのあとメソッド呼び出しもとの方で、また先頭要素を呼び出していたためnullになっていた。 そして、それを直したプログラムを実行したらエラー…

ようやくわかってきた

if文の条件文の不等号が間違えてた…。 下が直したの public int subtractStockHold(Integer tradeID, Integer orderQty) { int stockHold = portfolioMemo.get(tradeID); if (stockHold > orderQty) { //stockHold < orderQtyになっていたのを修正。 } else …

while文内にはないとか言っておきながら、そこに原因が

【前場】ID:36721, 保有株数:1000 現物保有額:256000 2000株売ります 1:売却TradeID:36721 2:売却TradeID:36721 3:売却TradeID:36721 4:売却TradeID:null java.lang.NullPointerException at jp.tradesc.superkaburobo.sdk.trade.PortfolioManager.…

まだバグがとれませーん。今日中にこのバグは取りたいんだけどなー

調査範囲を変える。 いままでリストの中に入ってたのに、注文の段階になってnullになるのはなぜ 以下のif分岐内にあることは確かである。さらにwhile内はどうやら原因をもってないようなので、その前のif内を調べる。 else if (act[0] == Agent.SELL) { if (…

昼飯を食いに大学へ

下のメソッドを追加して出力したけど、よくわからん。バグとり終わらんので、軽い運動をかねて自転車で大学へ飯を食いに行く。 Enum型でswitch文を書こうとしたら、なぜかEclipseが拒否してきた。めんどくさいのでif文で書く public void printStockHold(ACM…

PortfolioMemoのバグとりを行う

java.lang.NullPointerExceptionになってるので、tradeIDリストの中身を適宜出力して、原因を突き止める