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

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

Ruby

特徴語抽出を行うサンプル

Yahoo! Developer APIのキーフレーズ抽出サービスを利用して、テキストから特徴語を抽出するサンプルです。といってもhttpclientでサービスにアクセスして結果を解析し返すだけですが・・・。 依存モジュールとして「httpclient」が必要です。 また、実行時…

建玉一覧を取得するサンプル

建玉一覧取得に対応。 →GitHub - unageanu/sbiclient require 'sbiclient' require 'common' # ログイン c = SBIClient::Client.new c.fx_session( USER, PASS, ORDER_PASS ) {|session| # 建玉一覧を取得 rates = session.list_positions rates.each_pair {…

Ubuntuでローカルのpostgresに接続する手順

Ubuntu9.0.4で、Rubyからローカルのpostgresに接続する手順のメモです。 Ruby/DBIのインストール Ruby/DBIはrubyから各種DBへの接続を透過的に行う為のインターフェイスです。Javaの世界におけるJDBCみたいなものと理解。Ubuntuではパッケージが用意されてい…

トレール注文を行うサンプル

SBI証券のサイトより。トレール取引は 逆指値注文に値幅指定機能を追加する注文です。逆指値を注文するときに値動きによって売り逆指値価格を引き上げたり、買い逆指値価格を引き下げたりする注文です。 つまり、以下のような時にトレール注文で発注しておく…

IFD-OCO注文を行うサンプル

IFD-OCO注文の動作確認も完了。 →GitHub - unageanu/sbiclient IFD-OCO注文は、指値or逆指値での注文と、それの決済注文x2を同時に行う発注方法です。 決済注文は、以下の2つを同時に指定できます。 利益確定のための指値決済注文 損失限定の為の逆指値決済…

IFD注文を行うサンプル

IFD注文の動作確認ができたので、サンプルをば。 →GitHub - unageanu/sbiclient 通常の注文に加えて、決済注文のレートと執行条件を指定することでIFD注文になります。 require 'sbiclient' require 'common' # ログイン c = SBIClient::Client.new c.fx_ses…

rescue修飾詞

rescueって修飾詞もあるんだ。へー。 raise "test" rescue puts "error!" これは、以下と同じです。 begin raise "test" rescue puts "error!" end 実行結果です。 error!マニュアルによると「捕捉する例外クラスを指定できない=(StandardErrorの派生クラス…

OCO注文を行うサンプル

GitHub - unageanu/sbiclientを使ってOCO注文を行うサンプルです。 通常の注文に加えて、2つめの注文レートと売買種別を指定することでOCO注文になります。 require 'sbiclient' require 'common' # ログイン c = SBIClient::Client.new c.fx_session( USER,…

例外がスローされることをチェックする

例外がスローされることをチェックするには、「raise_error」マッチャーを使用します。 「proc { }.should raise_error」のような形式で使用します。 raise_errorの引数として、期待される例外の型やmessageの値を指定して詳細なチェックを行うことが可能で…

Global beforeとafter

beforeやafterを定義するには、 各テストに個別に設定する it_should_behave_likeを使って設定を共有する ほか、「Spec::Runner.configure」を使って定義することもできます。この方法で定義されたbefore,afterはすべてのテストで有効となります。以下は、「…

複数のRspecを一括実行する

「spec」コマンドの引数でディレクトリを指定すれば、そのフォルダ以下のspecを一括で実行してくれます。 $ spec <ディレクトリ> スペース区切りで複数のディレクトリを指定することも可能。 $ spec <ディレクトリ1> <ディレクトリ2> 探索するspecは「-p」オ…

同じexampleを複数のテストで共有する

RSpec documentationの「Shared Example Groups」に説明がありますが、「shared_examples_for」を使用して同じexampleを複数のテストで共有することが可能です。 「shared_examples_for 」で共有するexampleのグループ(「Shared Example Groups」と呼ばれる…

指値注文、逆指値注文を行うサンプル

荷解きも落ち着いてきたので、ぼちぼちライブラリの実装を再開。以下の機能を実装しました。 指値/逆指値での注文 注文一覧の取得 注文のキャンセル →GitHub - unageanu/sbiclient以下は、指値/逆指値で注文して即座にキャンセルするサンプルです。なお、SBI…

標準入力を処理するプログラムを書く

ARGFは引数がなければ標準入力からデータを読み込むので、これを使うのが楽なのかな?IOオブジェクト派生?なので、readとかgetsが使えます。以下は、標準入力のデータをBase64でエンコードして出力するフィルタの例です。 #!/bin/ruby puts [ARGF.read].pack(…

Regexp#union

Regexp#unionで複数の正規表現のいずれか一つにマッチする正規表現を作成できます。 reg = Regexp.union( /[a-c]+/, /[l-m]+/, /[x-z]+/ ) # 以下はすべてマッチする。 puts reg =~ "aaa" puts reg =~ "bbb" puts reg =~ "ccc" puts reg =~ "lll" puts reg =…

%

ヒアドキュメントもありますが、%を使っても複数行文字列をさくっと定義できます。 puts %( 複数行の 文字列です。 式展開もされます。→#{1+1} ) 実行結果です。 複数行の 文字列です。 式展開もされます。→2識別子を考えなくて言い分便利かも。 なお、同じ…

sprintfでObject#inspectの結果を出力する

「%p」指示子で、Object#inspectの結果を出力することができます。 class Kitten def initialize( name, age ) @name = name @age = age end end puts Kitten.new( "mii", 3 ).to_s puts Kitten.new( "mii", 3 ).inspect puts "%p" % Kitten.new( "mii", 3 )…

String#%

String#%はsprintfなのか。 puts "aaa %s ccc" % "bbb" 実行結果です。 aaa bbb cccふむ。

GemcutterでRuby Gemを公開する手順

Gemcutterはruby gemのホスティングサービスです。 gemのホスティングのみに特化したサービス rubyforgeやGitHubと違ってソースコード管理やプロジェクト管理の機能はなく、gemのホスティングのみに特化したサービスです。シンプルなぶん、使いやすい感じで…

クリック証券で提供されている為替レートのヒストリカルデータをjijiに取り込むスクリプト

クリック証券で提供されているヒストリカルデータをダウンロードして、jijiで使えるCSV形式にコンバートするツールを作ってみました。 使い方 $ ruby rate_data_importer.rb <クリック証券のユーザーID> <パスワード> <取り込む年> <開始月> <終了月>具体例…

今日の気づき

たまに発生する以下のようなコードですが、 map = {} ... list = map[str] #ハッシュからリストを取得 if list == nil # リストが未作成であれば、 list = [] # リストを作成してハッシュに積む map[str] = list end list << number # リストに値を追加。 こ…

クリック証券で提供されている為替レートのヒストリカルデータを一括取得するスクリプト

クリック証券で提供されている、為替レートのヒストリカルデータを一括取得するスクリプトを書いてみました。クリック証券にアクセスしてデータのzipアーカイブを取得し、指定ディレクトリに展開します。 注意事項 ダウンロードするにはクリック証券のアカウ…

zipを展開するサンプル

rubyzipを使ってzipアーカイブを展開するサンプルです。 require 'rubygems' require 'zip/zip' #===zipファイルを展開する。 #zip:: zipファイル #dest:: 展開先ディレクトリ def extract( zip, dest ) FileUtils.makedirs(dest) Zip::ZipFile.foreach(zip)…

レート一覧を取得するサンプル

jijiがサポートする証券会社をもうひとつくらい増やそうかな、ということでSBI証券のスクレイピングクライアントに着手。ログイン・ログアウトとレート情報取得まで実装しました。→GitHub - unageanu/sbiclient 例によってGitHubで公開。gemの作成などは未で…

バックテストを実行して結果を取得するサンプル

jijiにバックテストを登録&実行して、結果を取得するスクリプトのサンプルです。 デモサイトに接続して、 パラメータの違う移動平均エージェントを2つ実行するバックテストを作成。 実行終了を待ち、結果を出力します。 いろいろいけてないところを隠蔽する…

バックテストを登録するスクリプトのサンプル

エージェントのバックテストでは、各種パラメータの組み合わせをいろいろと変えて動作を調整したい場合があります。(カーブフィティングとかいうやつてずね。)jijiでは複数のエージェントを一括でテスト可能ですが、UIからちまちま登録するのはなかなかメン…

利用可能なフォントのサンプル画像を作成するスクリプト

利用可能なフォントのサンプル画像を作成するスクリプトを書いてみました。 システムで利用可能なフォントの一覧を取得し、 各フォントで、指定された文字列を描画した画像を出力します。 require 'rubygems' require 'RMagick' size = 24 #サイズ color = "…

利用可能なフォントの一覧を取得する。

Magick#fontsで利用可能なフォントの一覧を取得できます。 require 'rubygems' require 'RMagick' #利用可能なフォントの一覧を表示する。 Magick.fonts {|f| puts f.name } 実行結果です。 AvantGarde-Book AvantGarde-BookOblique AvantGarde-Demi AvantGa…

画像をHTMLテーブルに変換するスクリプト

画像をHTMLテーブルに変換するスクリプトを書いてみました。特に使い道はありませんが・・・。 require 'rubygems' require 'RMagick' require 'erb' # 画像をテーブルに変換するスクリプト。 imgs = Magick::Image.read("./kitten.jpg") img = imgs.first e…

簡単なアニメーションGIFを作るサンプル

RMagickを使って簡単なアニメーションGIFを作るサンプルです。基本的な手順としては Magick::ImageListのインスタンスを作成 ImageListにアニメーションのフレームとなる画像を追加。 後は「ImageList.write」でリストをgif形式で保存すれば、アニメーション…