Class: ClickClient::FX::FxSession
- Inherits:
-
Object
- Object
- ClickClient::FX::FxSession
- Defined in:
- lib/clickclient/fx.rb
Overview
FX取引のためのセッションクラス
Client#fx_sessionのブロックの引数として渡されます。詳細はClient#fx_sessionを参照ください。
Instance Method Summary collapse
-
#cancel_order(order_no) ⇒ Object
注文をキャンセルします。.
-
#edit_order(order_no, options) ⇒ Object
注文を変更します。.
-
#get_margin ⇒ Object
余力情報を取得します。.
-
#initialize(client, base_uri) ⇒ FxSession
constructor
コンストラクタ.
-
#list_currency_pairs(currency_pair_codes = nil) ⇒ Object
通貨ペア一覧を取得します。.
-
#list_execution_results(from, to, trade_type = nil, currency_pair_code = nil) ⇒ Object
約定一覧を取得します。.
-
#list_messages ⇒ Object
お知らせ一覧を取得します。.
-
#list_open_interests(currency_pair_code = nil) ⇒ Object
建玉一覧を取得します。.
-
#list_orders(order_condition_code, currency_pair_code = nil, from = nil, to = nil) ⇒ Object
注文一覧を取得します。.
-
#list_rates ⇒ Object
現在のレートの一覧を取得します。.
-
#order(currency_pair_code, sell_or_buy, unit, options = {}) ⇒ Object
注文を行います。.
-
#settle(open_interest_no, unit, options = {}) ⇒ Object
決済注文を行います。.
Constructor Details
#initialize(client, base_uri) ⇒ FxSession
コンストラクタ
164 165 166 167 |
# File 'lib/clickclient/fx.rb', line 164 def initialize( client, base_uri ) @client = client @base_uri = base_uri end |
Instance Method Details
#cancel_order(order_no) ⇒ Object
注文をキャンセルします。
- order_no
-
注文番号
- 戻り値
-
なし
476 477 478 479 |
# File 'lib/clickclient/fx.rb', line 476 def cancel_order ( order_no ) result = @client.post( @base_uri + "/ws/fx/chumonTorikeshi.do", "cmk=#{order_no.to_s}") ClickClient.parse( result.content ) end |
#edit_order(order_no, options) ⇒ Object
注文を変更します。
変更可能な注文とその値は次のとおりです。成り行き注文は変更できません。
-
通常注文
-
注文レート
-
有効期限
-
有効日時
-
IFD注文
-
新規注文レート
-
新規有効期限
-
新規有効日時
-
決済注文レート
-
決済有効期限
-
決済有効日時
-
OCO注文
-
注文レート
-
逆指値レート
-
有効期限
-
有効日時
-
IFD-OCO注文
-
新規注文レート
-
新規有効期限
-
新規有効日時
-
決済注文レート
-
決済注文逆指値レート
-
決済有効期限
-
決済有効日時
- order_no
-
注文番号
- options
-
注文のオプション。注文方法に応じて以下の情報を設定できます。
- <b>通常注文</b> ※注文レートが設定されていれば通常取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>OCO注文</b> ※逆指値番号が設定されていればOCO取引となります。
- <tt>:stop_order_no</tt> .. 逆指値注文番号(必須)
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:stop_order_rate</tt> .. 逆指値レート(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>IFD注文</b> ※決済取引の指定のみがあればIFD取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <tt>:settle</tt> .. 決済取引の指定。マップで指定します。
- <tt>:order_no</tt> .. 決済注文番号(必須)
- <tt>:rate</tt> .. 決済取引の注文レート(必須)
- <tt>:expiration_type</tt> .. 決済取引の有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 決済取引の有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>IFD-OCO注文</b> ※決済逆指値注文番号と決済取引の指定があればIFD-OCO取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <tt>:settle</tt> .. 決済取引の指定。マップで指定します。
- <tt>:order_no</tt> .. 決済注文番号(必須)
- <tt>:stop_order_no</tt> .. 逆指値決済注文番号(必須)
- <tt>:rate</tt> .. 決済取引の注文レート(必須)
- <tt>:stop_order_rate</tt> .. 決済取引の逆指値レート(必須)
- <tt>:expiration_type</tt> .. 決済取引の有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 決済取引の有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- 戻り値
-
なし
412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 |
# File 'lib/clickclient/fx.rb', line 412 def edit_order ( order_no, ) body = "" path = nil if ( [:settle] != nil ) if ( [:settle][:stop_order_no] != nil) # 決済逆指値注文番号と決済取引の指定があればIFD-OCO取引 raise "options[:settle][:order_no] is required." if [:settle][:order_no] == nil raise "options[:settle][:rate] is required." if [:settle][:rate] == nil raise "options[:settle][:stop_order_rate] is required." if [:settle][:stop_order_rate] == nil path = "/ws/fx/ifdOcoChumonHenko.do" body << "kc.sck=#{[:settle][:order_no].to_s}" body << "&kc.gck=#{[:settle][:stop_order_no].to_s}" body << "&kc.srp=#{[:settle][:rate].to_s}" body << "&kc.grp=#{[:settle][:stop_order_rate].to_s}" else # 決済取引の指定のみがあればIFD取引 raise "options[:settle][:order_no] is required." if [:settle][:order_no] == nil raise "options[:settle][:rate] is required." if [:settle][:rate] == nil path = "/ws/fx/ifdChumonHenko.do" body << "kc.cmk=#{[:settle][:order_no].to_s}" body << "&kc.crp=#{[:settle][:rate].to_s}" end raise "options[:rate] is required." if [:rate] == nil raise "options[:expiration_type] is required." if [:expiration_type] == nil body << "&sc.cmk=#{order_no.to_s}" body << "&sc.crp=#{[:rate].to_s}" body << "&sc.dat=#{[:expiration_type].to_s}" body << "&sc.ykd=" << [:expiration_date].strftime( "%Y%m%d%H" ) if [:expiration_date] != nil raise "options[:settle][:rate] is required." if [:settle][:rate] == nil raise "options[:settle][:expiration_type] is required." if [:expiration_type] == nil body << "&kc.dat=#{[:settle][:expiration_type].to_s}" body << "&kc.ykd=" << [:settle][:expiration_date].strftime( "%Y%m%d%H" ) if [:settle][:expiration_date] != nil elsif ( [:rate] != nil ) if ( [:stop_order_no] != nil ) # 逆指値番号が指定されていればOCO取引 path = "/ws/fx/ocoChumonHenko.do" body << "sck=#{order_no.to_s}" body << "&gck=#{[:stop_order_no].to_s}" body << "&srp=#{[:rate].to_s}" body << "&grp=#{[:stop_order_rate].to_s}" else # そうでなければ通常取引 raise "options[:rate] is required." if [:rate] == nil path = "/ws/fx/tsujoChumonHenko.do" body << "cmk=#{order_no.to_s}" body << "&crp=#{[:rate].to_s}" end raise "options[:expiration_type] is required." if [:expiration_type] == nil body << "&dat=#{[:expiration_type].to_s}" body << "&ykd=" << [:expiration_date].strftime( "%Y%m%d%H" ) if [:expiration_date] != nil end result = @client.post( @base_uri + path, body) ClickClient.parse( result.content ) end |
#get_margin ⇒ Object
余力情報を取得します。
- 戻り値
-
ClickClient::FX::Margin
586 587 588 589 590 591 |
# File 'lib/clickclient/fx.rb', line 586 def get_margin result = @client.post( @base_uri + "/ws/fx/yoryokuJoho.do") list = [] doc = ClickClient.parse( result.content ) return Margin.new( doc.root ) end |
#list_currency_pairs(currency_pair_codes = nil) ⇒ Object
通貨ペア一覧を取得します。
- currency_pair_codes
-
取得したい通貨ペアのコードの配列。nilの場合、全一覧を取得します。
- 戻り値
-
ClickClient::FX::CurrencyPairの配列。
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/clickclient/fx.rb', line 175 def list_currency_pairs( currency_pair_codes=nil ) post = "" i =0 if currency_pair_codes != nil currency_pair_codes.each{ |code| post << "tka[#{i}].tkt="<< code.to_s << "&" i += 1 } post.chop end result = @client.post( @base_uri + "/ws/fx/tsukaPairList.do", post) list = {} doc = ClickClient.parse( result.content ) doc.elements.each("./tsukaPairListResponse/tsukaPairList/tsukaPairListItem") { |item| v = CurrencyPair.new( item ) list[v.currency_pair_code] = v } return list end |
#list_execution_results(from, to, trade_type = nil, currency_pair_code = nil) ⇒ Object
約定一覧を取得します。
- from
-
注文日期間開始日。Dateで指定。例) Date.new(2007, 1, 1)
- to
-
注文日期間終了日。Dateで指定。例) Date.new(2007, 1, 1)
- trade_type
-
取引種別
- currency_pair_code
-
通貨ペアコード
- 戻り値
-
ClickClient::FX::ExecutionResultの配列
565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 |
# File 'lib/clickclient/fx.rb', line 565 def list_execution_results( from, to, trade_type=nil, currency_pair_code=nil ) raise "from is required." if from == nil raise "to is required." if to == nil body = "yfd=" << from.strftime( "%Y%m%d" ) body << "&ytd=" << to.strftime( "%Y%m%d" ) body << "&tkt=" << currency_pair_code.to_s if currency_pair_code != nil body << "&tht=" << trade_type.to_s if trade_type != nil result = @client.post( @base_uri + "/ws/fx/yakujoList.do", body) list = [] doc = ClickClient.parse( result.content ) doc.elements.each("./yakujoListResponse/yakujoList/yakujoListItem") { |item| list << ExecutionResult.new( item ) } return list end |
#list_messages ⇒ Object
お知らせ一覧を取得します。
- 戻り値
-
ClickClient::FX::Messageの配列
598 599 600 601 602 603 604 605 606 |
# File 'lib/clickclient/fx.rb', line 598 def result = @client.post( @base_uri + "/ws/fx/messageList.do") list = [] doc = ClickClient.parse( result.content ) doc.elements.each("./messageListResponse/messageList/messageListItem") { |item| list << Message.new( item ) } return list end |
#list_open_interests(currency_pair_code = nil) ⇒ Object
建玉一覧を取得します。
- currency_pair_code
-
通貨ペアコード
- 戻り値
-
ClickClient::FX::OpenInterestの配列
545 546 547 548 549 550 551 552 553 554 |
# File 'lib/clickclient/fx.rb', line 545 def list_open_interests( currency_pair_code=nil ) body = currency_pair_code != nil ? "tkt=#{currency_pair_code.to_s}" : "" result = @client.post( @base_uri + "/ws/fx/tategyokuList.do", body) list = [] doc = ClickClient.parse( result.content ) doc.elements.each("./tategyokuListResponse/tategyokuList/tategyokuListItem") { |item| list << OpenInterest.new( item ) } return list end |
#list_orders(order_condition_code, currency_pair_code = nil, from = nil, to = nil) ⇒ Object
注文一覧を取得します。
- order_condition_code
-
注文状況コード(必須)
- currency_pair_code
-
通貨ペアコード
- from
-
注文日期間開始日。Dateで指定。例) Date.new(2007, 1, 1)
- to
-
注文日期間終了日。Dateで指定。例) Date.new(2007, 1, 1)
- 戻り値
-
ClickClient::FX::Orderの配列。
220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/clickclient/fx.rb', line 220 def list_orders( order_condition_code, currency_pair_code=nil, from=nil, to=nil ) body = "cms=" << order_condition_code.to_s body << "&tkt=" << currency_pair_code.to_s body << "&cfd=" << from.strftime( "%Y%m%d" ) if from != nil body << "&ctd=" << to.strftime( "%Y%m%d" ) if to != nil result = @client.post( @base_uri + "/ws/fx/chumonList.do", body) list = {} doc = ClickClient.parse( result.content ) doc.elements.each("./chumonListResponse/chumonList/chumonListItem/chumon") { |item| order = Order.new( item ) list[order.order_no] = order } return list end |
#list_rates ⇒ Object
現在のレートの一覧を取得します。
- 戻り値
-
ClickClient::FX::Rateの配列。
200 201 202 203 204 205 206 207 208 209 |
# File 'lib/clickclient/fx.rb', line 200 def list_rates( ) result = @client.post( @base_uri + "/ws/fx/rateList.do") list = {} doc = ClickClient.parse( result.content ) doc.elements.each("./rateListResponse/rateList/rateListItem") { |item| v = Rate.new( item ) list[v.currency_pair_code] = v } return list end |
#order(currency_pair_code, sell_or_buy, unit, options = {}) ⇒ Object
注文を行います。
- currency_pair_code
-
通貨ペアコード(必須)
- sell_or_buy
-
売買区分。ClickClient::FX::BUY,ClickClient::FX::SELLのいずれかを指定します。(必須)
- unit
-
取引数量(必須)
- options
-
注文のオプション。注文方法に応じて以下の情報を設定できます。
- <b>成り行き注文</b>
- <tt>:slippage</tt> .. スリッページ (オプション)
- <tt>:slippage_base_rate</tt> .. スリッページの基準となる取引レート(スリッページが指定された場合、必須。)
- <b>通常注文</b> ※注文レートが設定されていれば通常取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:execution_expression</tt> .. 執行条件。ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER等を指定します(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>OCO注文</b> ※逆指値レートが設定されていればOCO取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:stop_order_rate</tt> .. 逆指値レート(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>IFD注文</b> ※決済取引の指定があればIFD取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:execution_expression</tt> .. 執行条件。ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER等を指定します(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <tt>:settle</tt> .. 決済取引の指定。マップで指定します。
- <tt>:unit</tt> .. 決済取引の取引数量(必須)
- <tt>:sell_or_buy</tt> .. 決済取引の売買区分。ClickClient::FX::BUY,ClickClient::FX::SELLのいずれかを指定します。(必須)
- <tt>:rate</tt> .. 決済取引の注文レート(必須)
- <tt>:execution_expression</tt> .. 決済取引の執行条件。ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER等を指定します(必須)
- <tt>:expiration_type</tt> .. 決済取引の有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 決済取引の有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>IFD-OCO注文</b> ※決済取引の指定と逆指値レートの指定があればIFD-OCO取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:execution_expression</tt> .. 執行条件。ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER等を指定します(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <tt>:settle</tt> .. 決済取引の指定。マップで指定します。
- <tt>:unit</tt> .. 決済取引の取引数量(必須)
- <tt>:sell_or_buy</tt> .. 決済取引の売買区分。ClickClient::FX::BUY,ClickClient::FX::SELLのいずれかを指定します。(必須)
- <tt>:rate</tt> .. 決済取引の注文レート(必須)
- <tt>:stop_order_rate</tt> .. 決済取引の逆指値レート(必須)
- <tt>:expiration_type</tt> .. 決済取引の有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 決済取引の有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- 戻り値
-
ClickClient::FX::OrderResult
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 |
# File 'lib/clickclient/fx.rb', line 281 def order ( currency_pair_code, sell_or_buy, unit, ={} ) path = nil body = "tkt=#{currency_pair_code.to_s}" if ( [:settle] != nil ) if ( [:settle][:stop_order_rate] != nil) # 逆指値レートと決済取引の指定があればIFD-OCO取引 raise "options[:settle][:rate] is required." if [:settle][:rate] == nil path = "/ws/fx/ifdOcoChumon.do" body << "&kc.grp=#{[:settle][:stop_order_rate].to_s}" body << "&kc.srp=#{[:settle][:rate].to_s}" else # 決済取引の指定のみがあればIFD取引 raise "options[:settle][:rate] is required." if [:settle][:rate] == nil raise "options[:settle][:execution_expression] is required." if [:settle][:execution_expression] == nil path = "/ws/fx/ifdChumon.do" body << "&kc.crp=#{[:settle][:rate].to_s}" body << "&kc.sjt=#{[:settle][:execution_expression].to_s}" end raise "options[:rate] is required." if [:rate] == nil raise "options[:execution_expression] is required." if [:execution_expression] == nil raise "options[:expiration_type] is required." if [:expiration_type] == nil body << "&sc.bbt=#{sell_or_buy.to_s}" body << "&sc.crp=#{[:rate].to_s}" body << "&sc.sjt=#{[:execution_expression].to_s}" body << "&sc.thn=#{unit.to_s}" body << "&sc.dat=#{[:expiration_type].to_s}" body << "&sc.ykd=" << [:expiration_date].strftime( "%Y%m%d%H" ) if [:expiration_date] != nil raise "options[:settle][:rate] is required." if [:settle][:rate] == nil raise "options[:settle][:sell_or_buy] is required." if [:settle][:sell_or_buy] == nil raise "options[:settle][:unit] is required." if [:settle][:unit] == nil raise "options[:settle][:expiration_type] is required." if [:expiration_type] == nil body << "&kc.bbt=#{[:settle][:sell_or_buy].to_s}" body << "&kc.dat=#{[:settle][:expiration_type].to_s}" body << "&kc.thn=#{[:settle][:unit].to_s}" body << "&kc.ykd=" << [:settle][:expiration_date].strftime( "%Y%m%d%H" ) if [:settle][:expiration_date] != nil elsif ( [:rate] != nil ) if ( [:stop_order_rate] != nil ) # 逆指値レートが指定されていればOCO取引 path = "/ws/fx/ocoChumon.do" body << "&srp=#{[:rate].to_s}" body << "&grp=#{[:stop_order_rate].to_s}" else # そうでなければ通常取引 raise "options[:execution_expression] is required." if [:execution_expression] == nil path = "/ws/fx/tsujoChumon.do" body << "&crp=#{[:rate].to_s}" body << "&sjt=#{[:execution_expression].to_s}" end raise "options[:expiration_type] is required." if [:expiration_type] == nil body << "&bbt=#{sell_or_buy.to_s}" body << "&thn=#{unit.to_s}" body << "&dat=#{[:expiration_type].to_s}" body << "&ykd=" << [:expiration_date].strftime( "%Y%m%d%H" ) if [:expiration_date] != nil else # 成り行き path = "/ws/fx/nariyukiChumon.do" body << "&bbt=#{sell_or_buy.to_s}&thn=#{unit.to_s}" if ( [:slippage] != nil ) raise "if you use a slippage, options[:slippage_base_rate] is required." if [:slippage_base_rate] == nil body << "&slp=#{[:slippage].to_s}&gnp=#{[:slippage_base_rate].to_s}" end end result = @client.post( @base_uri + path, body) doc = ClickClient.parse( result.content ) return OrderResult.new( doc.root ) end |
#settle(open_interest_no, unit, options = {}) ⇒ Object
決済注文を行います。
- open_interest_no
-
決済する建玉番号
- unit
-
取引数量
- options
-
決済注文のオプション。注文方法に応じて以下の情報を設定できます。
- <b>成り行き注文</b>
- <tt>:slippage</tt> .. スリッページ (オプション)
- <tt>:slippage_base_rate</tt> .. スリッページの基準となる取引レート(スリッページが指定された場合、必須。)
- <b>通常注文</b> ※注文レートが設定されていれば通常取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:execution_expression</tt> .. 執行条件。ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER等を指定します(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- <b>OCO注文</b> ※注文レートと逆指値レートが設定されていればOCO取引となります。
- <tt>:rate</tt> .. 注文レート(必須)
- <tt>:stop_order_rate</tt> .. 逆指値レート(必須)
- <tt>:expiration_type</tt> .. 有効期限。ClickClient::FX::EXPIRATION_TYPE_TODAY等を指定します(必須)
- <tt>:expiration_date</tt> .. 有効期限が「日付指定(ClickClient::FX::EXPIRATION_TYPE_SPECIFIED)」の場合の有効期限をDateで指定します。(有効期限が「日付指定」の場合、必須)
- 戻り値
-
ClickClient::FX::SettleResult
502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 |
# File 'lib/clickclient/fx.rb', line 502 def settle ( open_interest_no, unit, ={} ) path = nil body = "tga[0].tgk=#{open_interest_no.to_s}&tga[0].thn=#{unit.to_s}" if ( [:rate] != nil && [:stop_order_rate] != nil ) # レートと逆指値レートが指定されていればOCO取引 path = "/ws/fx/ocoKessaiChumon.do" raise "options[:expiration_type] is required." if [:expiration_type] == nil body << "&srp=#{[:rate].to_s}" body << "&grp=#{[:stop_order_rate].to_s}" body << "&dat=#{[:expiration_type].to_s}" body << "&ykd=" << [:expiration_date].strftime( "%Y%m%d%H" ) if [:expiration_date] != nil elsif ( [:rate] != nil ) # レートが指定されていれば通常取引 path = "/ws/fx/tsujoKessaiChumon.do" raise "options[:execution_expression] is required." if [:execution_expression] == nil raise "options[:expiration_type] is required." if [:expiration_type] == nil body << "&crp=#{[:rate].to_s}" body << "&sjt=#{[:execution_expression].to_s}" body << "&dat=#{[:expiration_type].to_s}" body << "&ykd=" << [:expiration_date].strftime( "%Y%m%d%H" ) if [:expiration_date] != nil else # 成り行き path = "/ws/fx/nariyukiKessaiChumon.do" if ( [:slippage] != nil ) raise "if you use a slippage, options[:slippage_base_rate] is required." if [:slippage_base_rate] == nil body << "&slp=#{[:slippage].to_s}&gnp=#{[:slippage_base_rate].to_s}" end end result = @client.post( @base_uri + path, body) doc = ClickClient.parse( result.content ) elms = doc.get_elements("./*/kessaiChumonList/kessaiChumonListItem") if ( elms == nil || elms.length <= 0 ) elms = doc.get_elements("./*/ocoKessaiChumonList/ocoKessaiChumonListItem") end return SettleResult.new( elms[0] ) end |