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

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

IFD注文を行うサンプル

Ruby ClickClient

ClickClientを使ってIFD注文を行うサンプルです。

  • "「IFD(イフダン)注文」は、一度に二つの注文を出して、最初の注文が約定したら二つめの注文が自動的に発動される注文方法です。"(→FX Beginners - 「売り」と「買い」をセット注文より。)
    • 使い方も↑のサイトが詳しいです。
  • ClickClientでは、注文時に決済注文の情報(:settle)を指定するとIFD注文となります。

以下のサンプルでは、

  • 「現在のレート-0.5」になったらユーロを買い
  • その後レートが上昇し、「現在のレート+0.5」になったら約定する

条件で注文を行っています。

require 'rubygems'
require 'clickclient'

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

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

  # IFDで注文。
  # 第4引数で決済注文の情報を指定するとIFD注文となる。
  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,  # 有効期限: 当日限り 
    :settle => { # 決済注文の指定
      :unit=>1, # 取り引き数量
      :sell_or_buy=>ClickClient::FX::SELL, #売り/買い区分
          #注文と対になる値を指定しないとエラーになるので注意
          #例)注文:BUYであれば 決済:SELLにする必要がある。
      :rate=>rate.ask_rate + 0.5, # 決済レート
      :execution_expression=>ClickClient::FX::EXECUTION_EXPRESSION_LIMIT_ORDER, # 執行条件: 指値 
      :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_TODAY,  # 有効期限: 当日限り 
    }
  }) 
  puts "\n---IFD注文"
  puts "指値注文番号 : #{order.order_no}"
  puts "決済注文番号 : #{order.settlement_order_no}"

  #キャンセル
  fx_session.cancel_order( order.order_no ) 
}

実行結果です。

---IFD注文
指値注文番号 : 10005464160
決済注文番号 : 10005464161