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

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

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


FX取引のうち

  • 通常注文
  • 約定注文
  • 通常注文変更
  • 注文キャンセル

を実装。ローカルサーバーで動作を確認したけど、実際のWebサービスでの動作は未検証です。使わないでくださいね。

使い方

require 'gmoclient'

c = GMO::Client.new
c.fx_session( <ユーザーID>, <パスワード> ) { | fx_session | 
  
  # 通貨ペア一覧取得
  # 引数で取得する通貨ペアコードを配列で指定
  # 指定しない場合すべての通貨ペアの情報を取得。
  list = fx_session.list_currency_pairs [GMO::USDJPY, GMO::EURJPY]
  list.each{ |currency_pair_code, value|  puts value }
  
  # レート一覧取得 
  list = fx_session.list_rates
  list.each{ |currency_pair_code, value|  puts value }
  
  # 成り行き注文
  puts fx_session.order( GMO::USDJPY, GMO::BUY, 2  )
  puts fx_session.order( GMO::USDJPY, GMO::SELL, 1, {
    :slippage=>99,
    :slippage_base_rate=>list[GMO::USDJPY].bid_rate
  })
  
  # 通常注文
  result = fx_session.order( GMO::USDJPY, GMO::SELL, 1, {
    :rate=>145.19,
    :execution_expression=>GMO::EXECUTION_EXPRESSION_LIMIT_ORDER,
    :expiration_type=>GMO::EXPIRATION_TYPE_SPECIFIED,
    :expiration_date=>DateTime.new( 2007, 11, 5, 0 )
  })
  puts result
  
  # テストサーバーの場合は、10000000001 とすること
  order_no = result.order_no
  #order_no = 10000000001
  
  # 注文変更
  fx_session.edit_order( order_no, {
    :rate=>145.19,
    :expiration_type=>GMO::EXPIRATION_TYPE_TODAY
  })
  
  # 注文取消し
  fx_session.cancel_order( order_no )
  
  # 注文一覧取得
  # 引数で、注文状態コード(必須)、通貨ペアコード、注文日期間開始日、注文日期間終了日を指定可能。
  list = fx_session.list_orders GMO::ORDER_CONDITION_ALL, GMO::EURJPY, Date.new( 2007, 10, 1 ), Date.new( 2007, 11, 1 )
  list.each{ |item|  puts item }  
}

ダウンロード

まだまだだけど一応公開。こちらからどうぞ。
※実際のWebサービスでの動作は未検証です。

気になった点

  • ローカルサーバーだとFX取引の場合でもログインするURLが株取引のものと同じ("http://localhost:8000/webservice/ws-redirect")になっている。本番の場合は以下のように別れているので紛らわしい。
  • ローカルサーバーのFX取引-通常注文でレートの少数が1桁(例:145.1)の場合、「不正なレート」のエラーになる。(145や145.19などはOK。注文変更の場合は1桁でもOK)
  • 注文時のレスポンスが固定で注文番号が0固定・・なのはいいんだけど、それを指定して注文キャンセルや注文変更を行うと「不正な注文番号」のエラーになる。


つづきは来週。