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

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

メソッドセットでのコンポーネント探索

バインドメソッドの設定がメンドイ件について、指定したメソッド(セット)を持つコンポーネントを探してくる機能がコンテナにあれば良いんでは、と思った。

機能

APIイメージは次のような感じ。「continer.types.has()」でメソッドセット(Typeと呼ぶことにする)を作れるようにしてみた。

// コンテナ
var c = container.Container( function( binder) {  
   ... 略
} );

// メソッド "onFoo", "onHoge"の両方を持つコンポーネントを探す条件
var type = continer.types.has( ["onFoo","onHoge"] );
var fooHoge  = c.get(type);  // 条件にマッチする最初のコンポーネントを得る。 
var fooHoges = c.gets(type); // 条件にマッチするすべてのコンポーネントを得る。 

// メソッド "onFoo" または "onHoge"を持つコンポーネントを探す条件
var type = continer.types.hasAny( ["onFoo","onHoge"] );
var fooOrHoge  = c.get(type);
var fooOrHoges = c.gets(type);

// ネストもできる。"onVer"と、"onFoo"or"onHoge"のいずれかを持つことを示す。
var type = continer.types.has([
  continer.type.hasAny( ["onFoo","onHoge"] ),
  "onVar"
]);

JavaScriptにはClassやインターフェイスがないので、名前を元にコンポーネントの取得やインジェクションをするようにしていたけど、この仕組みがあればTypeでも関連づけができるようになるのでちょっと便利になるかも。

懸案事項

妄想はさておき、実装するにあたって懸案事項がいくつかある。

ちょいめんどそうだな。ちゃんとしたAPIを考えつつ、暇になったら作ろう。