読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

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

注文一覧取得のサンプル

Ruby ClickClient

ClickClientを使って注文一覧を取得するサンプルです。

  • 一覧には、現在有効な注文以外に、キャンセルしたものや失効したものも含まれます。
  • 絞込み条件として以下が指定可能です。
    • 「注文の状態」.. 注文中、キャンセル、失効など、注文の状態。ClickClient::FX::ORDER_CONDITION_ALLですべての状態が対象となります。
    • 「通貨ペア」
    • 「注文日」
require 'rubygems'
require 'clickclient'

USER = "<ユーザー名>"
PASS = "<パスワード>"

# 注文状態コードを文字列に変換する
def convert_order_state( state ) 
  case state
    when ClickClient::FX::ORDER_STATE_WAITING : "待機中"
    when ClickClient::FX::ORDER_STATE_RECEIVED: "受付済み"
    when ClickClient::FX::ORDER_STATE_CANCELING: "取り消し中"
    when ClickClient::FX::ORDER_STATE_AGREED_NEW: "約定(新規)"
    when ClickClient::FX::ORDER_STATE_AGREED_SETTLEMENT: "約定(決済)"
    when ClickClient::FX::ORDER_STATE_EXPIRED: "失効[期限切]"
    when ClickClient::FX::ORDER_STATE_CANCELED: "取消済"
  end
end

c = ClickClient::Client.new 
# 接続先ホストをデモ取引用ホストに切り替える
c.host_name = "https://fx-demo.click-sec.com"
c.fx_session( USER, PASS ) { | fx_session |
  
  # 現在のレートを取得
  rate = fx_session.list_rates[ClickClient::FX::EURJPY]
  base_rate = rate.ask_rate

  # いろいろ注文。
  order = fx_session.order( ClickClient::FX::EURJPY, ClickClient::FX::BUY, 1, {
    :rate=>rate.ask_rate - 0.5, 
    :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER, 
    :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_TODAY 
  }) 
  reverse = fx_session.order( ClickClient::FX::EURJPY, ClickClient::FX::BUY, 1, {
    :rate=>rate.ask_rate + 0.5, 
    :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_REVERSE_LIMIT_ORDER,
    :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_TODAY
  }) 
  oco = fx_session.order( ClickClient::FX::EURJPY, ClickClient::FX::BUY, 1, {
    :rate=>rate.ask_rate - 0.5,
    :stop_order_rate=>rate.ask_rate + 0.5, 
    :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_TODAY
  }) 
  
  #注文一覧を取得
  puts "-- 注文一覧 "
  orders = fx_session.list_orders(
    ClickClient::FX::ORDER_CONDITION_ALL, # すべての状態を対象
    nil, # すべての通貨ペアを対象
    Date.new(2009, 1, 31) , Date.new(2009, 1, 31) # 2009/1/31に行った注文のみ
  )
  orders.each_pair { |k, o| # 注文番号をキーとするハッシュが返される
    puts <<-ORDER
注文番号 : #{k}
売り買い : #{o.sell_or_buy == ClickClient::FX::BUY ? "" : ""  }
注文日時 : #{o.date}
状態       : #{convert_order_state(o.order_state) }

ORDER
  }
 
  #キャンセル
  fx_session.cancel_order( order.order_no )   
  fx_session.cancel_order( reverse.order_no )  
  fx_session.cancel_order( oco.stop_order_no )  
}

実行結果です。

-- 注文一覧
注文番号 : 10006464938
売り買い : 買
注文日時 : 2009-01-31T18:12:13+00:00
状態       : 受付済み

注文番号 : 10006464939
売り買い : 買
注文日時 : 2009-01-31T18:12:13+00:00
状態       : 受付済み

注文番号 : 10006464936
売り買い : 買
注文日時 : 2009-01-31T18:09:33+00:00
状態       : 取消済

注文番号 : 10006464930
売り買い : 買
注文日時 : 2009-01-31T18:09:04+00:00
状態       : 取消済

注文番号 : 10006464937
売り買い : 買
注文日時 : 2009-01-31T18:12:13+00:00
状態       : 受付済み

注文番号 : 10006464931
売り買い : 買
注文日時 : 2009-01-31T18:09:04+00:00
状態       : 取消済

注文番号 : 10006464929
売り買い : 買
注文日時 : 2009-01-31T18:09:04+00:00
状態       : 取消済

注文番号 : 10006464940
売り買い : 買
注文日時 : 2009-01-31T18:12:13+00:00
状態       : 受付済み

注文番号 : 10006464934
売り買い : 買
注文日時 : 2009-01-31T18:09:33+00:00
状態       : 取消済

注文番号 : 10006464935
売り買い : 買
注文日時 : 2009-01-31T18:09:33+00:00
状態       : 取消済

注文番号 : 10006464932
売り買い : 買
注文日時 : 2009-01-31T18:09:04+00:00
状態       : 取消済

注文番号 : 10006464933
売り買い : 買
注文日時 : 2009-01-31T18:09:32+00:00
状態       : 取消済