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

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

2007-11-01から1ヶ月間の記事一覧

人対人対戦をサポート

ユーザー入力を受け付けるプレーヤーを用意して、人対人で対戦できるようにしました。 プレーヤーの仕様が「盤の情報を受け取って次に石を置く場所を返す関数」だと処理が永遠にUIスレッドに移らず上手く動かないので、次に置く石の位置はコールバック関数に…

Reversi

JavaScriptでReversiのエンジン部分を作りました。プレーヤー(次に打つ手を返す関数)を渡すとゲームを開始し結果をコールバックします。ちゃんとテストできてないけど、適当に作ったプレーヤーを使って試した限りでは動いている様子。打つ手が固定なのでそれ…

Objectの比較メソッドを実装する。

Object#eql?などObjectの比較を行うAPIを実装してみました。オブジェクトの型とすべての属性が完全に一致する場合、"同一"とみなします。たいていのモデルクラスはこの仕様でOKかと。 実装 リファレンスによると以下のようなルールになっているようなので、…

並列HTTPダウンローダ

Erlang クエックブックを眺めていると、HTTPでデータを取得するサンプルがありました。httpモジュールを使うと簡単にできそう。ということでHTTPダウンローダを作ってみました。 仕様 せっかくなので複数プロセスで並列取得するようにしてみます。 引数で取…

List comprehensionを使ったクイックソート

List comprehensionを使うと簡単にクイックソートができるらしい。というか、Programming Examplesにサンプルが載っているわけだけど、おもしろそうなので勉強がてら再発明してみた。 クイックソートのアルゴリズム wikipediaより、クイックソートのアルゴリ…

はまりまくりであまり進まず。

テストケースを書くも、はまりまくりであまり進まず。通常取引変更が1パターン試せたのみ。 はまったところ 注文変更が非同期処理らしい 注文の変更直後に注文一覧を取得しても、データが更新されていない場合がある。sleepを入れてごまかしたけど、ちゃんと…

テストケースをちょっと書いた

GMOインターネット証券WebServiceクライアントに以下のテストケースを追加しました。 通貨ペア一覧取得 レート一覧取得 お知らせ一覧取得 通常取引(注文/注文情報取得/キャンセル) ※一部のみ 実際のWebサービスに接続してテストします。注文は約定しないよう…

List comprehension

List comprehensionとかいう耳慣れない機能を発見したので使ってみます。 これを使うと、 各要素を処理した結果リストの作成(rubyのArray#map!みたいなこと) 条件を満たす要素での絞り込み(rubyのArray#reject!みたいなこと) リスト同士の総当たりによるリス…

try catch

チュートリアルに出てこなかったので、例外の投げ方と捕捉方法について調べてみました。 Erlangにもtry .. catchによる例外処理の仕組みがあります。 JavaScriptと同様にthrow()で任意のオブジェクトを例外?として発生させることができます。 発生した例外は…

subclipse(Eclipseのsvnクライアント)の設定ファイル

subclipse(Eclipseのsvnクライアント)の設定ファイルの在処について。 Google Codeのsubversionリポジトリにアクセスするためプロキシ設定をするところで所在がわからず悩みました。正解は以下です。(※組み込みのJavaHLを使い、かつWindowsの場合) C:\Docume…

Google Codeにプロジェクトを作った。

思い立ったが吉日、ということでGoogle Codeで「JavaScriptで使えるDIコンテナ」プロジェクトを立ち上げました。 ContainerJSProject Home だけはなんとか英訳をでっちあげてみました。きっと悲惨なことになっているに違いない。ということで今日からオープ…

Rulang BridgeでRubyからErlangを呼び出してみた

Rulang BridgeというRuby から Erlang の関数を呼び出すライブラリを見つけたので使ってみました。これを使うと、Rubyのプログラムからあらかじめ起動しておいたErlangサーバーにアクセスし、Erlangの関数を実行することができます。自作の関数も実行できま…

Rdocを書いた

RDoc による自動ドキュメント生成を参考にRdocを書きました。Rdoc: GMOインターネット証券WebServiceクライアント以下はまったところ。 2バイト文字を「*」で強調してはまった。「<b></b>」にしないといけない。 テーブル記法はないのかな? 来週はテストを書きます(…

OCO,IFD,IFD-OCO取引に対応。

FX取引のOCO,IFD,IFD-OCO取引に対応。それぞれ注文、注文変更、決済の一式を実装し、これでFX取引APIは一通り実装完了!テストしてないけど! ダウンロード 例によって一応公開。こちらからどうぞ。今回からZipアーカイブにしました。 ※実際のWebサービスでの…

レコードとマクロ

Getting Started With Erlangの5章。「5.3 Records」と「5.4 Macros」 レコード レコードは名前付きのタプル定義です。これを使うと名前と値を指定してタプルを生成できます。 名前付きなので順番を考慮せずにタプルが作成できます。 データの追加が比較的簡…

プロセスの終了とシグナルの送付

Getting Started With Erlangの「4.2 Error Handling」について。 プロセスの終了 処理がループせず終了した場合、または、exit(Reason)が実行された場合、プロセスは終了します。 処理が終了した場合とexit(Reason)のReasonがnormalのアトムである場合、正…

receive構文でのタイムアウト

Getting Started With Erlangの続き。ちょい忙しいので「4.1 Timeouts」だけ。 receive構文でのタイムアウト receive構文では、メッセージ待ち受けがタイムアウトした場合の処理を指定することができます。以下の形式で書きます。 receive <パターン> -> <処…

プロセスに名前を付ける/分散

Getting Started With Erlangの続き。3.3 Registered Process Namesと3.4 Distributed Programming。 プロセスに名前を付ける 「register(Atom,ProcessId).」でプロセス(ID)に名前を付けることができます。名前が付けられたプロセスには「 ! 」のような感じ…

並列処理(プロセスの開始とプロセス間通信まで)

Getting Started With Erlangの続き。いよいよ並列処理(3 Concurrent Programming)です! プロセス Erlangのスレッドはデータを共有しないため、プロセスと呼ばれます。プロセスは組み込み関数の「spawn(Module, Exported_Function, List of Arguments). 」で…

組み込み関数と高階関数

Getting Started With Erlangの2.12 Built In Functions (BIFs)と2.13 Higher Order Functions (Funs)についてまとめ。 組み込み関数 FizzBuzzで使用した"rem"などが組み込み関数として用意されています。 組み込み関数はerlangモジュールに属する。 呼び出…

決済APIを実装

FX取引の決済APIを実装。(通常決済・成り行き決済をサポート/OCO決済は未サポート) ダウンロード 例によって一応公開。こちらからどうぞ。 ※実際のWebサービスでの動作は未検証です。ローカルサーバーでの動作のみ確認しています。 使い方 require 'gmoclien…

FX取引の残りの参照系APIを実装

FX取引のうち、残っていた参照系APIを実装。 建玉一覧取得 約定一覧取得 余力情報の取得 お知らせ一覧取得 英訳するのが面倒になったので、レスポンスXMLの要素名をそのまま結果オブジェクトの属性として返すようにしました。 ダウンロード 例によって一応公…

「|」演算子、ifとcaseでの条件分岐

Getting Started With Erlangの2.10 More About Listsと2.11 If and Caseを読みました。 「|」演算子を使った先頭要素の取得とリストの結合 「|」演算子でListの先頭要素を取得することができます。また、リストに要素を追加することができます。 「[HEAD|RE…

2.6 Standard Modules and Manual Pagesから 2.9 Matching, Guards and Scope of Variables まで。

Getting Started With Erlangの続き。今日は2.6 Standard Modules and Manual Pagesから2.9 Matching, Guards and Scope of Variablesまで。 定義済みモジュール 「erl -man 」で定義済みモジュールの説明がみれるとのこと。早速やってみる。 >erl -man io -…

Atom,Tuple,List

とりあえず、「Getting Started With Erlang」を読みつつ、気になった点などをまとめていくことにします。今日は 2.1 The Erlang Shellから2.5 Listsまで。 アトム Rubyのシンボルに近いイメージの定数?みたいなもの。 →2.3 Atoms 小文字で始まる文字列がア…

ErlangでHello Worldまで。

慢性的ネタ切れ状態になってきたので、新しい言語をさわってみることにします。ということでErlangです。まずは、Erlang Landやこれから15分でErlangを始めるための資料 をみながら実行環境のerlをインストールして、「Hello World」まで。 Hello World Hell…

型パラメータで指定されたクラスを取得する。

クラス定義の段階で型パラメータが決まっている場合(以下のようなクラスが該当)、Classから型パラメータで指定された型を得ることができます。(↓のクラスだと、HogeSet.classからSetの型パラメータであるString.classがとれる。) // クラス定義の段階でSetの…

注文/注文変更/キャンセルを実装

FX取引のうち 通常注文 約定注文 通常注文変更 注文キャンセル を実装。ローカルサーバーで動作を確認したけど、実際のWebサービスでの動作は未検証です。使わないでくださいね。 使い方 require 'gmoclient' c = GMO::Client.new c.fx_session( <ユーザーID…

FX取引の通貨ペア一覧、レート一覧取得を実装。

FX取引の参照系APIの一部を実装しました。 通貨ペア一覧取得 レート一覧取得 注文一覧取得も作ったけど、注文したことがないので取れるものがなく、動作は未検証。まずはお金を振り込まないと。ローカルサーバーだと残高がなくても注文できたりするのかな? …

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

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