無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

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

指定銘柄の一定期間の株価を取得するRubyプログラム

遙か昔に書いた、指定した銘柄の一定期間の株価を取得してくるプログラムです。Yahoo! ファイナンス 株価・投信・為替時系列データにアクセスしてスクレイピングでデータを抽出しています。 使い方 引数で銘柄コード、取得開始日、終了日を指定します。 put_…

「Hello, world!その2」にトライしてみた。

ちょっと古いけど、ネタがないので喰いついてみます。→Hello, world!その2 「Hello, world!」と表示するプログラムを作ってください。ただし、コード中に同じアルファベットが2回出現してはいけません。アルファベットとは、小文字のa-zと大文字のA-Zを指…

Javaでcallee

メソッド内の処理でそのメソッド自身への参照を簡単に得る方法。Java5.0以降のみですが、JavaScriptで使えるarguments.calleeみたいなのが簡単に実現できます。...まぁ、Class#getMahod()でとれるっちゃーとれるんですが、これだとメソッド名を指定する必要…

続 リフレクションはやっぱり重いのか?

昨日の続き。フィールド値の読み込みなど、他に気になっている操作についても測ってみました。 特定の処理を50万回実行した場合の合計所要時間を計測する。(←回数を増やした) 10回試行し平均を取得。 JRE1.4,1.5,1.6でそれぞれ測る。 書き忘れたけど、計測マ…

リフレクションはやっぱり遅いのか?

遅い遅いと敬遠されがちなリフレクションですが、最近のJDKでもやっぱり遅いのか計測してみました。 setメソッドを呼び出して値を設定する処理を10万回実行した際の所要時間を計測 10回試行し平均を取得。 JRE1.5,1.6でそれぞれ試した 結果 JDK1.5.0_09 JDK1…

GMOインターネット証券WebServiceにログイン

GMOインターネット証券 WebServiceにログインするRubyスクリプトです。参照系優先で他の機能もちょっとづつ作っていく所存。 使い方 c = GMO::Client.new # ログインしてブロックを実行しログアウトする。 c.session( "<ユーザーID>", "<パスワード>" ) { pu…

そろそろパスワードをちゃんとするか

パスワードをそろそろちゃんとしたい。一応ランダムでそれなりに長い文字列を使用しているのですが、憶えられないという理由で多くのサービスで同じパスワードを使っていたりする...申し訳ない。これだとどこかのサービスでパスワードが漏洩した場合に影響範…

可変長引数

可変長引数について。 メソッドの引数の型の末尾に「...」を付けると可変長引数を受け付けるメソッドができます。 可変長にできる引数は、一番最後の引数1つのみです。 メソッド内部では、可変長引数に配列としてアクセスできます。 /** * 可変長引数を受け…

パラメータを受け取るアノテーションを作る。

「@Hoge("xxx")」といった感じで、パラメータを指定できるアノテーションを作ります。 作り方 アノテーションを作ります。 アノテーションにパラメータの値を返すメソッドを定義します。 メソッド追加により、パラメータを指定できるようになります。 メソッ…

タイプセーフなPropertiesを作る。

タイプセーフなPropertiesを作ってみます。 用件 整数など任意の型を記録できるjava.util.Propertiesみたいなのを作りたい。 値の型はキーごとに決まるので、キーに合わせてタイプセーフにしたい。 Stringを取り得るキーの場合、値をStringで設定でき、Strin…

Jbehaveを使ってみた。

るびまのRSpecの記事を見たときから密かに気になってた振舞駆動開発 (Behaviour Driven Development:BDD)ですが、IBM developerWorks ビヘイビア駆動開発を舞台にした冒険より「Jbehave」というJavaでBDDするライブラリがあるらしいのでちょっと使ってみまし…

複数のインターフェイスを実装したクラスのみ受け付ける型パラメータの指定

クラスやメソッドの型パラメータ指定では、"&"を使って受け付けるクラスの条件を結合することができます。これを使用して、「インターフェイスA,インターフェイスBの両方を実装したクラスのみ受け付ける」といった制約を行うことができます。 "&"で結合でき…

クラスのパラメータ化

クラスのパラメータ化について復習。 クラス名の後に「」をつけることで、パラメータとして受け付ける型を指定できる。 例) 「class Hoge {}」 「extends」を使用すると、受け付ける型を限定することができる。 「class Hoge {}」とすると... 型パラメータを…

SetとSetの違いまとめ

昨日の続き。「Set<String>」,「Set」,「Set」,「Set」の挙動について。 要素の追加 「set.add(object);」で縦軸の型のオブジェクトを追加可能かどうか。 Set<String> Set Set Set Object × × × × String ○ × × ○ Object型のオブジェクトはどれにも追加できない。 「Set<String>」,「</string></string></string>…

SetとSetの違いまとめ

どうやら「Set」は「Set」と違うらしい(!)ので、「Set」,「Set」,「Set」,「Set」の挙動についてまとめてみた。 要素の追加 「set.add(object);」で縦軸の型のオブジェクトを追加可能かどうか。 Set<Object> Set<String> Set Set Object ○ × × ○ String ○ ○ × ○ 「Set」,「Se</string></object>…

自己参照するジェネリックタイプの使い方

そんな名前かどうかは知りませんが、「>」みたいな自分で自分を使うジェネリックタイプの使い方。最初見たとき、これはないだろー、と思ったけど、ありみたいです。 どういう時に使うか 自分自身を返すAPIを持つようなクラスで 返す型をパラメータで指定した…

Genericsを使った型キャスト

Genericsを使って引数を任意の型にキャストする関数を書いてみました。クラス名が長くても、これを使うと簡潔にキャストすることができます。 /** * オブジェクトを望みの型にキャストする。 * @param <T> キャスト後の型 * @param o オブジェクト * @return キ</t>…

イメージボタンをさくっと作る。

命名規則に従って、イメージボタンをさくっと作る関数を書いてみた。 使い方 1.htmlにボタン化するaタグを書く。 href属性にクリックした際の動作を記述しておく。 <a id="test" href="javascript:buttonCicked('1');" /> <a id="test2" href="javascript:buttonCicked('2');" /> 2.aタグのIDと画像IDを指定してボタン作成関数を呼び出す。 実行するとaタグが以下の画像</a></a>…

配列をランダムに並べ替える

Enumerable#sort_byと組み込み関数のrandの組み合わせで1発です。 array = [ "a", "b", "c", "d", "e", "f", "g" ] puts array.join(",") # 配列をランダムに並べ替える array = array.sort_by {|item| rand } puts array.join(",") array = array.sort_by {…

かわいいねこにあえるWebアプリ「Mii touch」

「Mii touch」は、かわいい猫の写真をみるためのiPod touch用Webアプリケーションです。ご利用は以下から。>「Mii touch」以前作成したMiiをiPod touch用にカスタマイズしたものです。表示する画像サイズなどを調整しています。 仕組み Flickr Web Serviceで…

かわいいねこにあえるWebアプリ「Mii touch

コントロールをフェードイン/フェードアウトする

コントロール(というか任意の要素)をフェードイン/フェードアウトするユーティリティを書きました。 一定時間放置するとフェードアウトして消えます。 特定の操作(マウスを動かすなど)をするとフェードインします。 仕組み タイマーを仕込んで一定時間後にフ…

ファイルアップロード/フォルダ作成/削除に対応

Adobe Shareクライアントに以下の機能を実装。 ファイルアップロード フォルダ作成 ファイル/フォルダの削除 使い方 require "share-client" # クライアントを作る cl = Share::Client.new( <APIキー>, <shared secret>, <ユーザーID>, <パスワード> ) # セッションを開始 cl.session</shared></apiキー>…

複数のデータを連結するIOもどきを修正。

昨日作成した、複数のデータをboundaryで連結するIOもどきをちょっと修正。 サイズを得るAPIを追加。 ただし、IOからはサイズがとれないので、IOが追加されている場合、エラーとなる。 add_file()の時点でファイルを開くのはもったいないため、必要になった…

複数のデータを連結するIOもどき( multipart/form-dataの送信用 )

multipart/form-dataの送信のため、複数のデータ(ファイルパス、IO、文字列のいずれか)を指定したboundaryで連結するIOもどきを作った。IOのAPIを一式実装しようかと思ったけど多すぎるので速やかに挫折。Net::HTTPで使えればいいのでread(length)だけ実装し…

HTTPのリクエストボディをストリームで指定する。

リクエストボディをストリームで指定するには、Net::HTTPRequest#body_stream=()を使用します。 何がうれしいか ストリームを使うと、ボディを文字列で指定する場合に比べ、メモリ消費を抑えられるというメリットがあります。 ボディを文字列で指定する 送信…

json.jsを使ったJSONのパーズが重い。

iPod touch + Safariの環境でjson.jsを使ったJSONのパーズ時間を計測してみました。 iPod touch + Safari JSONデータのサイズ 平均 最大 最小 2k 181ms 208ms 167ms 8k 677ms 734ms 658ms 40k 3553ms 3874ms 3450ms 120k - - - ※5回試行し、平均、最大、最小…

Safari で遊んでみた。

遅ればせながら、iPod touchが届きました!touchといえばWi-Fi & Safariということで、iPod touch + Safariで以前作成したサンプルコードを動かして遊んでみました。 機能 動作 説明 Flash × Flex SDKで作成したサンプルで試しましたが、エラーになります。 C…

セッションの開始とノード情報の取得

Adobe Share APIにアクセスして、認証→セッションを開始→ノード情報を取得するところまで作った。呼び出し例。 # クライアントを作る cl = Share::Client.new( <APIキー>, <shared secret>, <ユーザーID>, <パスワード> ) # セッションを開始 cl.session { |session| # ルートフォル</shared></apiキー>…

Adobe Share APIで認証を受ける。

Adobe Share APIですが、なんとか認証まではできました。以下はここまでの道のりです。 APIキーの取得 Share APIを利用するには、APIキーが必要です。Share Developers siteの「Manage/Get API Developer Key」から発行してもらいます。このとき認証で使う「…