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

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

2009-02-01から1ヶ月間の記事一覧

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

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

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

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

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

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

スプライトのあたり判定で使う領域を指定する

Sprite#hitAreaで、スプライトのあたり判定で使う領域を指定できます。 領域は別のスプライトで指定します。 hitAreaとしたスプライトは非表示でもOK package { import flash.display.*; import flash.events.MouseEvent; import flash.text.*; // 別のスプ…

正規表現を使ってみる

Power Shellでも正規表現が使えます。 正規表現にマッチするか評価する。 「-match」演算子を使います。 PS C:\> "abc" -match "^a" True PS C:\> "xbc" -match "^a" False 後方参照 後方参照用の文字列は、自動変数「$Matches」に格納されます。「$Matches[…

String#replaceAllって後方参照が使えるじゃないか!

Javaでできる筈はないと、なめてかかっていました。ゴメンナサイ。反省してます。 System.out.println( "KuroShiroTora".replaceAll( "([A-Z][a-z]+)", "$1," ) ); System.out.println( "KuroShiroTora".replaceFirst( "([A-Z][a-z]+)", "$1," ) ); 実行結果…

egitでの「.gitconfig」の在処

[Eclipseのgitプラグイン「egit」でもユーザーホームの「.gitconfig」をちゃんと読み込んでくれます。 Vistaだと以下のパスなります。 \Users\<ユーザー名>\.gitconfig Gitのユーザー名やメールアドレスを書いておくとコミット時にちゃんと反映してくれます…

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

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

スクリプトブロックと変数のスコープ

以下のコマンドの結果をみて、「ローカル変数はスクリプトブロック内でもアクセス可能なんだな」と認識していたのですが、 PS C:\> function call( $proc ) { &$proc } PS C:\> $a = 100 PS C:\> call { echo $a } 100$aに値を代入すると、期待と異なる結果…

今日の謎

昨日書いたInjectでMapしようとしたんですが。 PS C:\> Inject 1,2,3 @() { $args[0] += $args[1]*2; $args[0] } 12配列を渡したはずなのに、なぜかIntに変換されとる!どっかで暗黙の型変換が行なわれているっぽいなー、と思って型を出力するコードを追加。 …

Inject

rubyでよく使うInject関数を書いてみました。配列のメソッドではなく、ただの関数ですが。 function Inject( $enumerable, $init, $proc ) { foreach ($i in $enumerable ) { $init = &$proc $init $i } return $init }実行結果です。 PS C:\> Inject 1,2,3 …

メソッド呼び出し時には「()」が必須です。

Power Shellの関数を呼び出す場合、引数の「()」は不要(正確には使えるけど解析モード切替の意味になる)ですが、 PS C:\> function Pow( $x, $y ) { [System.Math]::Pow($x,$y) } PS C:\> Pow 2 5 32 PS C:\> Pow 2, 5 "Pow" の引数 "0" (値 "System.Object[…

ビット演算でorを取りたい

「-bor」演算子を使います。「|」じゃないので注意な! PS C:\> $a = 0x001 PS C:\> $a = $a -bor 0x002 PS C:\> echo $a 3以下は全て外れです。 PS C:\> $a = 0x001 PS C:\> echo $a 1 PS C:\> $a |= 0x002 用語 '=' は、コマンドレット、関数、操作可能なプ…

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

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

egitをインストールしてみた。

egitというEclipseで使えるGitプラグインがある、ということでインストールしてみました。ソースを取得してコンパイルが必要で、ちょっとめんどくさいんですが、azlab 開発Memo - Eclipseプラグインをインストールするの手順に従って特に問題なくインストー…

Arrays#deepEquals

Arrays#deepEquals()で配列要素の再帰的な比較ができます。 Object a = new Object(); Object b = new Object(); Object c = new Object(); // 配列 System.out.println( Arrays.deepEquals( new Object[] {a,b}, new Object[] {a,b} )); // true System.out…

CSVファイルを解析する

@IT - .NET TIPS CSVファイルを読み込むには?を参考に、PowerShellでCSVファイルを解析する関数を書きました。 引数のファイルを「Microsoft.VisualBasic.FileIO.TextFieldParser」で解析して、 各行をスクリプトブロック(proc)にコールバックします。 [Sys…

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

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

ローカルのマシン名を得る

「System.Environment」の値を参照すればOK PS C:\>[System.Environment]::MachineName | echo foo.comそれにしても、いまだに PS C:\>echo [System.Environment]::MachineName [System.Environment]::MachineNameとかやってしまう。なかなか慣れない。

正規表現の評価は「 =~ 」でも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:…

クリック証券Webサービスが提供終了に!

クリック証券Webサービスが提供終了になったようです。 →クリック証券 WebサービスおかげでClickClientも海の藻屑に・・・。サンプルコードもいっぱい書いたのにー。(まぁ、デモトレードの方ではまだ使えるみたいですが・・・)レートの取得から取り引きまで…

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

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

スクリプトブロック

Power Shellでは、「{}」で括った一連の処理を「スクリプトブロック」として、変数に格納することができます。格納した処理は、「&」として、任意のタイミンクで呼び出すことが可能です。 PS C:\> $proc = { echo "aaa" } # スクリプトブロックを作成して変…

今日のへま

今日のへま。 PS C:\> function Join( $str1, $str2 ) { return "${str1}:${str2}" } PS C:\> Join( "aaa", "bbb" ) | echo aaa bbb: # あれ? "aaa:bbb"になるハズなんだが? PS C:\> Join "aaa", "bbb" | echo aaa bbb: # あれ?Power Shellでは、カンマで区…

文字列内変数展開の罠

Power Shellでは、「"」で括られた文字列内の変数は、自動的に展開されます。 PS F:\> $name = "foo" PS F:\> echo "My Name is $name" My Name is foo機能的には、「Rubyみたいに"#{}"で囲む必要ないんだー、へー、」というだけなんですが、ここにちょっと…

解析モード

Power Shellのスクリプト解析には、「コマンドモード」と「式モード」があります。 式モード スクリプトを「最上位レベル言語として解析」します。 「2+2」や「"aaa"」などは式として(一般的な感覚からして普通に)評価されます。 コマンドモード シェル内で…

約定一覧取得のサンプル

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