通常注文のキャンセル機能を実装
通常注文のキャンセル機能を実装しました。
→Github - unageanu / clickclient_scrap
また、注文APIの戻り値として注文番号を返す処理も実装しました。注文→(返された注文番号を引数として)注文をキャンセル、が可能です。なお、通常注文以外の注文(成り行き/OCO注文..etc..)のキャンセルには未対応です。
サンプル
以下は、指値・逆指値で注文を行い、即座にキャンセルするサンプルです。
$: << "../lib" require 'clickclient_scrap' require 'constants' # ログイン c = ClickClient::Client.new c.fx_session( USER, 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}" } order_ids = [] ## 指値注文 order_ids << session.order( ClickClient::FX::EURJPY, ClickClient::FX::BUY, 1, { :rate=>rates[ClickClient::FX::EURJPY].ask_rate - 0.5, # 指値レート :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER, # 執行条件: 指値 :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_TODAY # 有効期限: 当日限り }) order_ids << session.order( ClickClient::FX::EURJPY, ClickClient::FX::SELL, 1, { :rate=>rates[ClickClient::FX::EURJPY].ask_rate + 0.5, # 指値レート :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER, # 執行条件: 指値 :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_WEEK_END # 有効期限: 週末まで }) # 逆指値注文 order_ids << session.order( ClickClient::FX::EURJPY, ClickClient::FX::BUY, 1, { :rate=>rates[ClickClient::FX::EURJPY].ask_rate + 0.5, # 逆指値レート :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_REVERSE_LIMIT_ORDER, # 執行条件: 逆指値 :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_INFINITY # 有効期限: 無限 }) order_ids << session.order( ClickClient::FX::EURJPY, ClickClient::FX::SELL, 1, { :rate=>rates[ClickClient::FX::EURJPY].ask_rate - 0.5, # 逆指値レート :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_REVERSE_LIMIT_ORDER, # 執行条件: 逆指値 :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_SPECIFIED, # 有効期限: 指定 :expiration_date=>Date.today+2 # 2日後 }) # 注文一覧を取得 orders = session.list_orders orders.each_pair {|k,v| puts <<-STR --- order_no : #{v.order_no} trade_type : #{v.trade_type} order_type : #{v.order_type} execution_expression : #{v.execution_expression} sell_or_buy : #{v.sell_or_buy} pair : #{v.pair} count : #{v.count} rate : #{v.rate} order_state : #{v.order_state} STR } # すべての注文をキャンセル order_ids.each{|id| session.cancel_order(id.order_no) } }
実行結果です。
EURCHF : 1.5062 : 1.5066 : -7 : 4 CHFJPY : 88.5 : 88.53 : -10 : 7 GBPCHF : 1.6747 : 1.6752 : -8 : 2 USDJPY : 97.98 : 97.99 : -22 : 18 ZARJPY : 11.75 : 11.79 : -270 : 240 USDCHF : 1.1068 : 1.1071 : -6 : 3 GBPJPY : 148.25 : 148.28 : -37 : 31 EURUSD : 1.3608 : 1.361 : -17 : 14 EURJPY : 133.33 : 133.35 : -31 : 27 AUDJPY : 74.96 : 74.98 : -54 : 50 GBPUSD : 1.513 : 1.5133 : 6 : -9 NZDJPY : 59.37 : 59.41 : -31 : 27 AUDUSD : 0.765 : 0.7654 : -46 : 43 CADJPY : 85.12 : 85.15 : -15 : 11 --- order_no : 10047354533 trade_type : 新規 order_type : 21 execution_expression : 指値 sell_or_buy : 1 pair : EURJPY count : 1 rate : 133.75 order_state : 取消済 --- order_no : 10047358010 trade_type : 新規 order_type : 01 execution_expression : 逆指値 sell_or_buy : 0 pair : EURJPY count : 1 rate : 133.85 order_state : 受付済 --- order_no : 10047357993 trade_type : 新規 order_type : 01 execution_expression : 指値 sell_or_buy : 1 pair : EURJPY count : 1 rate : 133.85 order_state : 受付済 --- order_no : 10047357983 trade_type : 新規 order_type : 01 execution_expression : 指値 sell_or_buy : 0 pair : EURJPY count : 1 rate : 132.85 order_state : 受付済 --- order_no : 10047358025 trade_type : 新規 order_type : 01 execution_expression : 逆指値 sell_or_buy : 1 pair : EURJPY count : 1 rate : 132.85 order_state : 受付済
さて、久々にclickclient_scrapのコードに触ったわけですが、WWW::Mechanizeの使い方をすっかり忘れてしまっている・・。orz。リハビリが必要ですなー。