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

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

IFD-OCO注文を行うサンプル

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

  • IFD-OCO注文は、
    • IFD方式のように、通常の注文と注文確定時に有効化される決済注文を同時に行い、
    • さらに、決済注文として2つの執行条件を指定することができます(OCOのように)。
  • 使い方は、例によってFx Begginers - 3つの注文と二つの決済注文のサイトを参照。
  • ClickClientでは、決済注文の情報(:settle)に逆指値レート(::stop_order_rate)を指定するとIFD-OCO注文となります。

以下のサンプルでは、

  • 「現在のレート-0.5」になったらユーロ買い
  • その後、レートが上昇し、「現在のレート+0.5」になったら約定する
  • またはさらに下落し、「現在のレート-0.8」になった場合も約定(ロスカット)する

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

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-OCOで注文。
  # 第4引数で決済注文の情報+逆指値レートを指定するとIFD-OCO注文となる。
  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, 
      :rate=>rate.ask_rate + 0.5, # 決済レート
      :stop_order_rate=>rate.ask_rate - 0.8, #逆指値決済レート
      :expiration_type=>ClickClient::FX::EXPIRATION_TYPE_TODAY 
    }
  }) 
  puts "\n---IFD-OCO注文"
  puts "指値注文番号 : #{order.order_no}"
  puts "決済注文番号 : #{order.kessaiSashineChumonBango}" # 微妙に翻訳してねぇ! orz.
  puts "決済逆指値注文番号 : #{order.kessaiGyakusashiChumonBango}"

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

実行結果です。

---IFD-OCO注文
指値注文番号 : 10005492358
決済注文番号 : 10005492359
決済逆指値注文番号 : 10005492360

ということで、注文関連のAPIのサンプルは一通り完了と。