FXの取引レートを取得する。
クリック証券にアクセスして、FXのレートを取得するスクリプトです。
- ClickClientを利用して、クリック証券WebServiceにアクセスし、レートを取得します。
- 利用にはクリック証券のアカウントが必要です。
- レートは10秒ごとに取得。強制終了するまで動きます。
- 取得したレートはCSVファイルとしてローカルに保存します。
# #=クリック証券に接続し、FXのレートを取得するスクリプト # #==使い方 # ./collect.rb <レート保存先ディレクトリ> <クリック証券のユーザー名> <パスワード> # require "rubygems" require "clickclient" require "timeout" require "fileutils" DIR = ARGV[0] USER = ARGV[1] PASS = ARGV[2] def convert_currency_pair_code(code) case code when ClickClient::FX::USDJPY return :USDJPY when ClickClient::FX::EURJPY return :EURJPY when ClickClient::FX::GBPJPY return :GBPJPY when ClickClient::FX::AUDJPY return :AUDJPY when ClickClient::FX::NZDJPY return :NZDJPY when ClickClient::FX::CADJPY return :CADJPY when ClickClient::FX::CHFJPY return :CHFJPY when ClickClient::FX::ZARJPY return :ZARJPY when ClickClient::FX::EURUSD return :EURUSD when ClickClient::FX::GBPUSD return :GBPUSD when ClickClient::FX::AUDUSD return :AUDUSD when ClickClient::FX::EURCHF return :EURCHF when ClickClient::FX::GBPCHF return :GBPCHF when ClickClient::FX::USDCHF return :USDCHF end end time = Time.now prefix = DIR + "/" + time.strftime("%Y-%m-%d_%H%M%S") FileUtils.mkdir_p prefix prefix = prefix + "/fx_" suffix = ".csv" client = ClickClient::Client.new client.fx_session(USER, PASS){|fx| loop { begin list = fx.list_rates list.each() { |k,info| code = convert_currency_pair_code info.currency_pair_code File.open( prefix + code.to_s + suffix, "a" ) { |f| line = [info.bid.to_s, info.ask.to_s, info.sell_swap.to_s, info.buy_swap.to_s, Time.now.strftime("%Y-%m-%d_%H%M%S")].join(", ") f << line << "\n" } } rescue Timeout::Error puts $! rescue puts $! end sleep 10 } }
修正(2008-01-22)
例外処理で血迷っていたので修正。