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

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

method_missingでインターセプト

インスタンスメソッドが定義されていない場合、method_missing が実行されます。これを利用して簡単なインターセプタが作れます。

サンプル:

class EchoInterceptor
  def initialize(delegate)
    @delegate = delegate
  end

  def method_missing( name, *args )
    begin
      # メソッド呼び出しの前に実行する処理
      print "method " << name.to_s << " start.\n"
      return @delegate.send(name, *args)
    ensure
      # メソッド呼び出しの後に実行する処理
      print "method " << name.to_s << " end.\n"
    end
  end
end

class Tora
  def meow
    print "meow!\n"
  end
end

tora = Tora.new
tora = EchoInterceptor.new(tora) # インターセプタを適用
tora.meow

出力:

method meow start.
meow!
method meow end.

修正 (07-06-30)

delegateAPI呼び出しはObject#sendで行う必要があるため、サンプルコードを修正しました。Method#callを使うと、インターセプタを2重に適用した場合にエラーになります。(詳細はMethod#callとObject#sendを参照。)