無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

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

Ruby

通常注文での有効期限指定に対応。

通常注文での有効期限と取引方法(指値or逆指値)指定に対応。→Github - unageanu / clickclient_scrap成行注文や、OCO注文などは未実装です。 サンプル $: << "../lib" require 'clickclient_scrap' # ※sample.rbと同じディレクトリにuser,passファイルを作成…

const_missingでプロキシモジュールを作る

Module#const_missingでモジュールに定数やクラスが定義されていない場合の動作を指定できます。 Object#method_missingのクラス版と考えてよいのかな。 引数で参照した定数の名前が渡されてきます。 これを利用して、返却するクラスを動的に差し替え可能な…

平均・分散・標準偏差を求める

配列の要素をto_iした値の平均・分散・標準偏差を求める関数です。 class Array # 要素をto_iした値の平均を算出する def avg inject(0.0){|r,i| r+=i.to_i }/size end # 要素をto_iした値の分散を算出する def variance a = avg inject(0.0){|r,i| r+=(i.to…

複数のサーバーに導入されているモジュールが同じかチェックするスクリプト

複数のサーバーに導入されているモジュールが同じかチェックするスクリプトを書いてみた。といっても 「net/ssh」でssh接続し、 「md5sum」を実行してダイジェストを表示する だけですが。 #!/usr/bin/ruby require 'rubygems' require 'net/ssh' SERVER = S…

指値での注文機能を実装。

指値での注文ができるようになりました。ただし、以下は未サポートです 逆指値注文 有効期限の指定 戻り値の返却(そもそも情報が返されない。どうするかなー。) →Github - unageanu / clickclient_scrap成り行きや、OCO取り引きなどももちろん未実装です。 …

セーフレベルの高い環境から、特定のオブジェクトのメソッド呼び出しを別のセーフレベルで実行するユーティリティ

ネタがないので、昔書いたクラスでも発掘するかな。ということで、前に書いたセーフレベルの高い環境から、特定のオブジェクトのメソッド呼び出しを低いセーフレベルで実行するためのユーティリティです。仕組みは以下のとおり。 低いセーフレベルで動作する…

ユーザーホームを取得したい

Rubyスクリプト内で、ユーザーのホームディレクトリを取得したい。 リファレンスマニュアルによると、パスの先頭の ~ がホームディレクトリ(環境変数 HOME が使われます)に展開されるとのこと。 $ ruby -e "puts File.expand_path('~')" /home/xxxあれ、でも…

メンテナンス中の場合、エラーをスローするように修正。

メンテナンス中の場合、エラーをスローするように修正しました。 あと、ユーザー名/パスワードの参照先がサンプル内で定義している定数になっていたのでそれも修正しています。orz. →Github - unageanu / clickclient_scrap休日にしか作れないのに土曜日が高…

WWW::Mechanizeを使うことにしました。

発注機能を実装しようとして、やはりHttpClinetでPOSTするよりWWW::Mechanizeを使ったほうが楽そうだなという結論に至ったため、全面的にWWW::Mechanizeを使って書き直しました。→Github - unageanu / clickclient_scrap既存の機能は動作するはずです。 $: <…

パスワードの入力を受け付けるプログラムを作る

プログラムにパスワードを渡してもらう必要がある場合、引数で指定するのは危険だよね、ということで対話式でパスワードを設定できるようにするやり方を調査。Highlineというライブラリを使うと簡単みたい。→Hatena Question - Rubyでユーザーからのパスワー…

レート一覧の取得を実装。

レート一覧の取得を実装しました。 →Github - unageanu / clickclient_scrap 各通過ペアのbidレート、askレート、およびスワップが取得可能です。 APIはClickClientとあわせていますが、あちらのレート一覧で取得できていたbid_high、bid_lowなどは取得でき…

ログイン・ログアウトまで対応

スクレイピングでのログイン・ログアウトまで実装。ソースは以下。→Github - unageanu / clickclient_scrap Githubに置いてみました。gemspecはまだちゃんと書いてないのでgem経由でのインストールはできません。 サンプル ログイン/ログアウトのサンプルコ…

クリック証券-モバトレ君(FX)にログイン

スクレイピングでログインまでは何とかできたっぽい。先日トライして上手くいっていなかった原因は、「submitボタンにnameとvalueがある場合、その値もサーバーに送付される」というのを知らず、スルーしていたためでした。submitなんて全部同じだと思ってた…

正規表現の評価は「 =~ 」でもOK

正規表現を使うとき、「"ax" =~ /([a-z])x/」のように文字列を左辺、正規表現を右辺にしていたのだけど、逆にしても同じなんだな。あと、正規表現が左辺の場合、「===」でもマッチングがチェックできる。 # 文字列を左辺。 puts "ax" =~ /([a-z])x/ puts $1 …

HttpClientでの通信内容を表示する。

HttpClient#debug_devにSTDOUTなどを設定しておくと、通信内容を出力してくれます。 require 'rubygems' require 'httpclient' client = HTTPClient.new client.debug_dev=STDOUT #デバックデータの出力先として「STDOUT」を設定 client.get_content( "http:…

呼び出しもとの関数名を取得する

組み込み関数「caller」の結果を解析すれば可能です。 # 呼び出しもとの関数名を取得する関数 def function_name # 正規表現は、Rubyのリファレンスのものを拝借してます。 if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller.first return $3 end end # テスト用…

約定一覧取得のサンプル

ClickClientを使って約定結果の一覧を取得するサンプルです。 「新規注文」,「決済注文」の約定結果をそれぞれ取得できます。 絞込み条件として以下が指定可能です。 「決済日」 「トレード種別」 .. 新規(ClickClient::FX::TRADE_TYPE_NEW) or 決済(ClickCl…

注文一覧取得のサンプル

ClickClientを使って注文一覧を取得するサンプルです。 一覧には、現在有効な注文以外に、キャンセルしたものや失効したものも含まれます。 絞込み条件として以下が指定可能です。 「注文の状態」.. 注文中、キャンセル、失効など、注文の状態。ClickClient:…

通貨ペア情報取得のサンプル

ClickClientを使って通貨ペア情報を取得するサンプルです。 通貨ペア情報では「通貨ペアの名前」や「通貨ペアコード」「取り引き数量」などが取得できます。 レートの取得は別のAPIです。(→シストレFXグランプリ-デモ取引に接続してレート一覧を取得するサン…

余力情報取得のサンプル

ClickClientを使って余力情報を取得するサンプルです。 セッション作成後、FxSession#get_marginでOK。 口座残高や、必要な証拠金額、建玉の損益等のデータが取得可能です。詳細はClickClient::FX::Marginを参照。 require 'rubygems' require 'clickclient'…

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

ClickClientを使ってIFD-OCO注文を行うサンプルです。 IFD-OCO注文は、 IFD方式のように、通常の注文と注文確定時に有効化される決済注文を同時に行い、 さらに、決済注文として2つの執行条件を指定することができます(OCOのように)。 使い方は、例によってF…

IFD注文を行うサンプル

ClickClientを使ってIFD注文を行うサンプルです。 "「IFD(イフダン)注文」は、一度に二つの注文を出して、最初の注文が約定したら二つめの注文が自動的に発動される注文方法です。"(→FX Beginners - 「売り」と「買い」をセット注文より。) 使い方も↑の…

OCO注文を行うサンプル

ClickClientを使ってOCO注文を行うサンプルです。 OCO注文は、指値/逆指値での注文を同時に行い、どちらかが約定すると他方はキャンセルされる注文方式です。 使いみちはFX Beginners - OCO(オーシーオー)注文が詳しい。 ClickClientでは、注文時に指値…

SharePointグループを作ってユーザーを登録するサンプル

SharePointグループを作ってユーザーを登録するサンプルです。例によってWebサービスを利用。 require 'wss' HOST = "<SharePointServerのホスト>" PORT = <SharePointServerのポート> USER = "<ユーザー>" PASS = "<パスワード>" home = WSS.new( HOST, PORT, USER, PASS ) userGroup = home.service( :UserGroup</sharepointserverのポート></sharepointserverのホスト>…

WSDLの取得時に認証が必要だったのです

Share Point ServerのWebサービスにアクセスすると、突然、WSDLの取得時に認証エラーになるようになった。 原因 Webアプリケーションで匿名アクセスの許可を解除したため、WSDLの取得時に認証が必要になっていた。 対応 ということでWSDL取得時に認証情報を…

Webサービス経由でドキュメントライブラリを作成・削除するサンプル

Webサービス経由で、Share Point Server上にドキュメントライブラリを作成して削除するサンプルです 作成 「List Webサービス#AddList」で、テンプレートを「ドキュメントライブラリ」にして作成すればOK。 戻り値として、ドキュメントライブラリの情報(IDや…

指値・逆指値で発注するサンプル

ClickClientを利用して、指値・逆指値で発注するサンプルです。 FxSession#orderの第4引数として以下を指定すると指値注文となります。 レート(:rate) .. 指値注文するレートを指定します。 執行条件(:execution_expression) .. 「ClickClient::FX::EXECUTIO…

お知らせ一覧を取得するサンプル

ClickClient経由でクリック証券のWebサービスにアクセスし、お知らせ一覧を取得するサンプルです。 require 'rubygems' require 'clickclient' USER = "ユーザー名" PASS = "パスワード" c = ClickClient::Client.new # 接続先ホストをデモ取引用ホストに切…

通常注文と決済を行うサンプル

さて、知らない間に「ClickClient」のダウンロード数が100件を超えていたので(旧バージョンも併せてだけど)、ちょっとサンプルコードでも書いていこうかなと思います。ClickClientの説明でも通貨ペアの一覧取得ぐらいしか載せてなかったしなー。ということで…

スレッド一覧を表示する。

プログラム終了時に残存スレッドがあるっぽいので調査。とりあえず、スレッドの一覧は、「Thread#list」で取得できる。 # スレッド作成 (0..3).map {|i| Thread.start { loop { sleep 0.1 } } } # スレッドの起動を待つ sleep 0.5 # スレッド一覧を表示 puts…