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

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

2009-05-01から1ヶ月間の記事一覧

%記法

Rubyには「%記法」と呼ばれる文字列リテラルや正規表現リテラルを記述する別の記法があります。名前は聞いたことあったけど使ったことはなかったのですが、説明を読んでみると使いこなせばスマートな記述ができそう。ということで、便利そうな使い道をまとめ…

今日見つけたコード

なんだこのrescueと思ったら、 def foo # 処理 rescue LoadError # なんだこれ end メソッド定義の一部でした。こういう書き方もできるのかー。 def foo puts "start" raise "test" puts "end" rescue puts "rescue" ensure puts "ensure" end foo 実行結果…

自動作成されたコードを示すアノテーション

javax.annotation.Generatedは、自動作成されたコードを示すアノテーションです。 @Generated( comments="これは自動生成されたクラスです。", date="2001-07-04 12:08:56", value= {} // 何を入れればよいのかよくわからん。 ) public class AutoGenerated …

テストクラスをjarに固めてinstallする(コマンドライン編)

テストクラスをjarに固めてinstallするには、pom.xmlに設定を書くほか、「jar:test-jar」ゴールを使ってコマンドラインでinstallする方法もあります。 「jar:test-jar」だけだと、テストクラスのコンパイルは行なってくれないし、installもされないので、以…

PrivateModule

PrivateModuleを使うと、モジュールに登録されたコンポーネントの公開/非公開を制御できます。 デフォルトは非公開。 コンポーネントは、登録されたモジュール内でのみ利用可能(他のコンポーネントにInject可能)です。 外部から取得しようとするとエラーにな…

もう限界です

こう忙しいと、何もできん。日記書くのも一苦労。例によってこねたが続きますがご容赦。

今日見つけたコード

↓の場合は改行が文の区切りにならないのか。ふむ。 puts "<abc>". gsub(/</, ''). gsub(/>/, '') 実行結果です。 abc

Sinatraを0.9.2にupdateするとWEBrickで動作しなくなった

Sinatraを0.9.2にupdateすると、以下のエラーになって組み込みのWEBrickで動かなくなってしまった。 /usr/lib/ruby/gems/1.8/gems/sinatra-0.9.2/lib/sinatra/base.rb:930:in `detect_rack_handler': Server handler (thin,mongrel,webrick) not found. (Run…

今日見つけたコード

ヒアドキュメントの識別子の後(↓の例では「 puts (<<-HTML).gsub(/^ {2}/, '') <html> <head>...</head> <body>...</body> </html> HTML 実行結果です。「gsub(/^ {2}/, '')」により先頭のインデントが消えています。ふむ。 <html> <head>...</head> <body>...</body> </html>

Provider Methods

Provider Methodsは、Moduleの関数として定義したメソッドを、コンポーネントを取得する際のProviderとして使う機能です。 インスタンス生成時に初期化が必要だったりする場合、Providerでコンポーネントを登録したりしますが、Providerクラスやそのインスタ…

ChildInjector

ChildInjectorは、任意のInjectorから、そのInjectorが持つモジュールの内容を継承する子Injectorを作成する機能です。 子Injectorでは親のコンポーネントが参照でき、インスタンスを取得したり、Injectしたりできます。 子Injector作成時にはModuleを渡すこ…

Multibindings, MapBindings

Google Guice 2.0がリリースされたました!ということで、新機能を少しずつ試してみることにします。まずは、Multibindings と MapBindings。 機能 Multibindings,MapBindings は登録した複数のコンポーネントを、SetやMapで取得 or Injectする機能です。Cont…

Kernel#autoload

Kernel#autoloadで任意の定数を参照した場合に、指定したファイルをrequireするように設定できます。 # 定数Fooを参照した場合に、fooをrequireする autoload :Foo, "foo" module Var # 定数Var::Hogeを参照した場合に、var/hoge をrequireする autoload :Ho…

Basic認証を行う簡単なサンプル

SinatraのFAQにBasic認証を行うサンプルがあったので試してみます。といっても、「set Rack::Auth::Basic」を呼び出すだけ。 require 'rubygems' require 'sinatra' # 認証を設定。 # ユーザー名が「foo」,「var」の場合のみアクセスを許可する。 use Rack::…

Kernel#y

yamlをrequireすると、引数で指定されたオブジェクトをyaml形式で出力する「Kernel#y」メソッドが追加されます。Kernelに追加されるので、組み込み関数として使えます。 require 'yaml' list = [ { :name => "mii", :age=>1 }, { :name => "tora", :age=>0 }…

セッションを使う簡単なサンプル

SinatraでSessionを使う簡単なサンプルです。手順は以下。 「set :sessions, true」でセッションを有効化。(このへんに説明があります。) 後は、「session[]」でセッションの値にアクセス可能です。 ちなみに、sessionはSinatra::Helpersモジュールで定義さ…

Sinatraで遊んでみる

Sinatraは、Rubyで簡単にWebApplicationを作成できるDSL(ドメイン特化言語)です。 インストール $ gem install sinatra シンプルなサンプル 以下は、"/"にGETでアクセスされた場合、"Hello World"を返すWebサーバーを起動するだけの単純なサンプルです。 req…

指定されたコンテキストでのローカル変数の一覧を取得する関数

指定されたコンテキストでのローカル変数の一覧(名前と値のハッシュ)を取得する関数を書きました。戦略は以下です。 「eval( "local_variables", binding )」でbindingでのローカル変数名一覧を取得。 Kernel#local_variablesは現在のスコープで定義されてい…

今日見つけたコード

今日見つけたコード。なんだコレ、と思ったらシングルトンインスタンスの作成でした。 class Kitten # なんだコレと思ったらシングルトンインスタンスの作成だった。 Singleton = new def meow puts "meow" end end # シングルトンインスタンスを使う。 Kitt…

成り行きでの決済注文に対応

成り行きでの決済注文に対応しました。 →Github - unageanu / clickclient_scrap 指値、逆指値やOCOでの決済は未実装です。 サンプル 以下は、建玉一覧を取得し、すべての建玉を決済するサンプルです。 $: << "../lib" require 'clickclient_scrap' require …

建玉一覧の取得に対応

建玉一覧の取得に対応しました。 →Github - unageanu / clickclient_scrap 高速化のため、注文一覧と同じく一覧画面から取得できる情報のみを返します。 サンプル $: << "../lib" require 'clickclient_scrap' require 'constants' # ログイン c = ClickClie…

通常注文のキャンセル機能を実装

通常注文のキャンセル機能を実装しました。 →Github - unageanu / clickclient_scrap また、注文APIの戻り値として注文番号を返す処理も実装しました。注文→(返された注文番号を引数として)注文をキャンセル、が可能です。なお、通常注文以外の注文(成り行き…

サイズの大きなzipファイルをメールで送付するサンプル

昨日のサンプルでzipファイルの送付はできたわけですが、これだとzipの内容を一気に読んで送っているので、転送されるファイルサイズが大きくなったとき、メモリが足りなくなる問題があります。本文をStreamで指定できればいいのだけど、TMailでのやり方がよ…

zipファイルをメールで送付するサンプル

TMail+Net::SMTPで、zipファイルをメールで送付するサンプルです。(※添付ファイルとして送付しているわけではないのでご注意。メールの本文がzipです。) 処理としては、 メールのbodyとして読み込んだファイルをBase64エンコードしたものを指定。 content_ty…

Ubuntuでapacheをリバースプロキシにする手順

Ubuntu9.0.4でapacheをリバースプロキシサーバーにして、同じマシンの8080ポートで動作しているWebrickサーバーに外部からアクセスできるようにする手順です。 概要 proxyモジュールの有効化 設定ファイルの編集 apacheの再起動 1.proxyモジュールの有効化 …

修正しました。→デモサイトに繋がらなくなっています。

デモサイトに繋がらなくなっていたのを修正しました。 原因 サーバーの置き換え後、ルータでのルーティング設定をいじったのですが、変更後ルータを再起動しないと設定が反映されないらしく、それをスルーしていたのが原因です。UIに「反映」ボタンがあった…

デモサイトに繋がらなくなっています。

申し訳ありません。現在、jijiのデモサイトに接続できなくなっているようです。 連休中に自宅サーバーを変更したので、どこかで設定をミスっているものと思われます。orz.しばらくお待ちください。

証券会社アクセスプラグイン作成ガイド

jiji 1.1.0をリリースしました。本バージョンより、証券会社へのアクセスロジックをプラグインで後から追加できるようになっています。→オープン・フリーのFX自動取引システム「jiji (ジジ) 」 →Github - unageanu/jiji アクセスプラグイン自体は、まだ「ク…

タスクマネージャが枠だけになって非表示にできない。

気がつくと、Windowsのタスクマネージャが枠だけになっていた。 枠だけなので、「閉じる」ボタンや「最小化」ボタンもなく、非表示化できない。 エクスプローラーがバグったのかな、と思って再起動するも、状況は変わらず。 調べてみると、以下のサイトがヒ…

名前付き構造体

「Struct.new」の第一引数で、構造体の名前を指定できたりします。 名前を指定した場合、Structのクラス定数として生成された構造体が定義されます。 定義後は「Struct::」で作成した構造体にアクセスできます。 変数や定数に代入する必要はありません。(代…