指値注文、逆指値注文を行うサンプル
荷解きも落ち着いてきたので、ぼちぼちライブラリの実装を再開。以下の機能を実装しました。
以下は、指値/逆指値で注文して即座にキャンセルするサンプルです。なお、SBI証券では注文時に取引パスワード(ログインパスワードとは別)が必要なので、sessionの作成時にそれも渡すように変更しています。
$: << "../lib" require 'sbiclient' require 'common' # ログイン c = SBIClient::Client.new c.fx_session( USER, PASS, ORDER_PASS ) {|session| # レートを取得 rates = session.list_rates rates.each_pair {|k,v| puts "#{k} : #{v.bid_rate} : #{v.ask_rate} : #{v.sell_swap} : #{v.buy_swap}" } ## 指値注文 begin order_id = session.order( SBIClient::FX::EURJPY, SBIClient::FX::BUY, 1, { :rate=>rates[SBIClient::FX::EURJPY].ask_rate - 0.5, # 指値レート :execution_expression=>SBIClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER, # 執行条件: 指値 :expiration_type=>SBIClient::FX::EXPIRATION_TYPE_TODAY # 有効期限: 当日限り }) print_order( session ) ensure session.cancel_order(order_id.order_no) end begin order_id = session.order( SBIClient::FX::EURJPY, SBIClient::FX::SELL, 1, { :rate=>rates[SBIClient::FX::EURJPY].ask_rate + 0.5, # 指値レート :execution_expression=>SBIClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER, # 執行条件: 指値 :expiration_type=>SBIClient::FX::EXPIRATION_TYPE_WEEK_END # 有効期限: 週末まで }) print_order( session ) ensure session.cancel_order(order_id.order_no) end # 逆指値注文 begin order_id = session.order( SBIClient::FX::EURJPY, SBIClient::FX::BUY, 1, { :rate=>rates[SBIClient::FX::EURJPY].ask_rate + 0.5, # 逆指値レート :execution_expression=>SBIClient::FX::EXECUTION_EXPRESSION_REVERSE_LIMIT_ORDER, # 執行条件: 逆指値 :expiration_type=>SBIClient::FX::EXPIRATION_TYPE_INFINITY # 有効期限: 無限 }) print_order( session ) ensure session.cancel_order(order_id.order_no) end begin order_id = session.order( SBIClient::FX::EURJPY, SBIClient::FX::SELL, 1, { :rate=>rates[SBIClient::FX::EURJPY].ask_rate - 0.5, # 逆指値レート :execution_expression=>SBIClient::FX::EXECUTION_EXPRESSION_REVERSE_LIMIT_ORDER, # 執行条件: 逆指値 :expiration_type=>SBIClient::FX::EXPIRATION_TYPE_SPECIFIED, # 有効期限: 指定 :expiration_date=>Date.today+2 # 2日後 }) print_order( session ) ensure session.cancel_order(order_id.order_no) end }
実行結果です。
MBPJPY : 147.72 : 147.78 : -2 : 1 HKDJPY : 11.62 : 11.64 : 0 : -10 GBPJPY : 147.72 : 147.78 : -19 : 11 EURUSD : 1.4773 : 1.4777 : -5 : 0 SGDJPY : 64.42 : 64.47 : -8 : 0 SEKJPY : 12.78 : 12.81 : -5 : 1 CNYJPY : 13.2 : 13.22 : -110 : -90 AUDJPY : 81.66 : 81.7 : -75 : 68 MSDJPY : 90.15 : 90.17 : -1 : 0 GBPUSD : 1.6385 : 1.639 : -15 : 10 MZDJPY : 65.02 : 65.07 : -5 : 4 NZDJPY : 65.02 : 65.07 : -50 : 42 AUDUSD : 0.906 : 0.9065 : -75 : 70 MXNJPY : 6.81 : 6.85 : -100 : 50 KRWJPY : 7.57 : 7.62 : 0 : -120 CADJPY : 83.35 : 83.4 : -7 : 0 MURJPY : 133.2 : 133.24 : -1 : 0 NOKJPY : 15.79 : 15.82 : -8 : 4 EURJPY : 133.2 : 133.24 : -13 : 5 PLNJPY : 31.29 : 31.38 : -25 : 15 CHFJPY : 88.2 : 88.27 : 0 : -3 MUDJPY : 81.66 : 81.7 : -8 : 7 TRYJPY : 60.04 : 60.14 : -130 : 80 USDJPY : 90.15 : 90.17 : -4 : 1 MARJPY : 11.42 : 11.46 : -23 : 20 ZARJPY : 11.42 : 11.46 : -230 : 200 --- order_no : 16346938 trade_type : TRADE_TYPE_NEW order_type : NORMAL execution_expression : LIMIT_ORDER sell_or_buy : BUY pair : EURJPY count : 1 rate : 132.74 order_state : 発注中 --- order_no : 16346940 trade_type : TRADE_TYPE_NEW order_type : NORMAL execution_expression : LIMIT_ORDER sell_or_buy : BUY pair : EURJPY count : 1 rate : 133.74 order_state : 発注中 --- order_no : 16346941 trade_type : TRADE_TYPE_NEW order_type : NORMAL execution_expression : REVERSE_LIMIT_ORDER sell_or_buy : BUY pair : EURJPY count : 1 rate : 133.74 order_state : 発注中 --- order_no : 16346944 trade_type : TRADE_TYPE_NEW order_type : NORMAL execution_expression : REVERSE_LIMIT_ORDER sell_or_buy : BUY pair : EURJPY count : 1 rate : 132.74 order_state : 発注中