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