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

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

2007-12-01から1ヶ月間の記事一覧

ContainerJS-0.3.0をリリース

ContainerJS-0.3.0をリリースしました。→ContainerJS 変更点 [機能追加] Typeでのコンポーネント取得 コンポーネントが持つAPIを条件にコンポーネントを探索する機能です。マッチしたコンポーネントは、コンテナから取得したり、アスペクトを適用したりでき…

JsDocを使ってみたがうまくいかず。

圧縮版の次はAPIリファレンス、ということでGoogleさんに聞いたらでてきたJsDocを試してみました。が、ContainerJSはうまく変換できず。サンプルで付いてきたtest.jsはちゃんと変換できたのにー。 インストール JsDocはPerlのスクリプトなので、Perlをインス…

JavaScriptの圧縮ツールを試してみた。

ContainerJSのリリース物に、空白やコメントを除いた圧縮版も含めようと思って、JavaScriptの圧縮ツールを3つほど試してみました。 ツール名 評価 圧縮率 コメント 圧縮結果のサンプル(圧縮前のソースはこちら) JavaScriptZIP 1.0.2 ○ 45.2% 不要な空白、コ…

Queueを使ったワーカースレッド

Queueを使うとワーカースレッドが簡単に作れます。 ワーカースレッド(=仕事をするスレッド)は、キューから順番に仕事を取り出して実行するスレッドです。 これとは別に定期的に仕事を積むスレッドがいて、 ワーカースレッドは↑から仕事が積まれた場合にそれ…

Mutex

Thread間の処理の同期にはMutexを使います。 Mutex#synchronizeで Mutexのロックの獲得 ブロックの処理を実行。 ロックの解除 を行います。Javaのsynchronizedブロックと似た感じで使えます。 require 'thread' m = Mutex.new ts = [] 3.times { |j| ts << T…

Typeでのコンポーネント取得を実装。

前に検討したTypeでのコンポーネント取得(コンポーネントが持つAPIを条件にコンポーネントを探索し、コンテナから取り出したりインジェクションしたりする機能。)をまったり実装。実装自体はだいたい済んだけどテストは未。簡単なサンプルが動くのは確認。こ…

method_missingは重いのか?

レシーバに該当するメソッドが定義されておらずmethod_missingが実行された場合、通常のメソッド呼び出しと比べて遅くなったりするのか測ってみました。 結論 たいして変わりません。 計測コード プロファイラを使ってみました。 通常のメソッド呼び出し met…

delegateでプロトタイプベース継承

delegateを使うと、任意のオブジェクトに処理を移譲するクラスを作ることができます。これを利用してJavaScriptなプロトタイプベースっぽい継承ができます。 require 'delegate' #superクラス class Animal def walk () puts "teku teku." end end #subクラ…

日時のフォーマット

Extを読み込むと、Dateオブジェクトに「形式を指定してフォーマットするAPI」と「形式を指定して文字列を日付にパーズ」する関数が追加されます。 // 現在時刻を指定の形式にフォーマット var date = new Date(); stdout.innerHTML += date.format("Y-m-d H:…

2ペインのUIを作る。

2ペインのUIを作るには、Viewportを生成してレイアウトを"border"にし、右と左のパネルを設定してやります。 Ext.onReady(function(){ // ビューポート var border = new Ext.Viewport({ title: 'タイトル', layout:'border', items: [{ // 左のパネル conte…

Array comprehensionsでクイックソート

JavaScript1.7からgeneratorとそれを使ったArray comprehensionsが使えるようになっているらしい。ということでとりあえずクイックソートを作ってみた。 // クイックソート! function sort(list) { if ( list.length <= 1 ) { return list; } return sort([i…

オブジェクトをプロパティキーにするとtoString()した値が使われる

今日はまったところ。 JavaScriptのオブジェクトはハッシュマップのように任意のキーと値を関連づけて保持してくれますが、オブジェクトをキーにした場合、それをtoString()した値がキーとして使われます。 比較には==や===は使われません。 同じと見なす条…

ページ遷移の管理

JavaScripを多く使ったサイトでページ遷移が必要な場合、1つのHTMLに画面を全部いれて(もしくは動的にロードして)、JavaScripで必要な部分だけ書き換えて遷移を行うのがスマートではないかと思います。(HTMLでのページ遷移を使うと、メモリ上のJavaScriptデ…

evalの戻り値について

任意の文字列をJavaScriptとして評価/実行し結果を返すeval関数ですが、"var x = 3;"とか実行させたらどうなるのか疑問だったので、ちょっと試してみました。 基本ルール 文字列をJavaScriptとして評価/実行し、式が実行されていればその値を返します。 式が…

対戦相手を選択できるようにした

サーバー側のCGIをさくっと実装して、取得した一覧から対戦相手を選択できるようにしました。 サーバーから取得したプレーヤーの中から、相手を選択して対戦できます。 対戦相手のアルゴリズムはエディタ(CodePressを利用)でカスタマイズできます。 →今日ま…

ExtでHello World

Extに手を出してみました。インストールからメッセージダイアログを使ったHelloWorldまで。 Extのダウンロードとインストール ExtからExtのアーカイブをダウンロードして展開します。 最新の version 2.0 を使いました。 必要なモジュールをHTMLに取り込みま…

ClickClient v 0.0.1をリリース

RubyForgeにプロジェクトを作り、version 0.0.1 としてリリースしました。→ClickClient プロジェクト名は「ClickClient」です。 先日会社名が変更されたようなので、それに合わせて変更しました。モジュール名も「GMO」から「ClickClient」に変更しています…

オブジェクトからコンストラクタ関数を得る。

Object.constructorでコンストラクタ関数が取得できます。 var stdout = document.getElementById("stdout"); // Object.constructor でコンストラクタ関数が取得できる。 var Kitten = function () {}; var mii = new Kitten(); stdout.innerHTML += "mii.c…

Typeを作ってみた。

前に構想した「Type」機能をちょっと実装してみました。Typeの生成とチェックAPIのみ。コンテナにはまだ組み込んでいません。あとテストも途中までしかできてないです。こんな感じで使います。 // テスト用モデル var TestObject = function(){} TestObject.…

BitSet

JavaのBitSetみたいなのが必要だったので書いてみました。 function BitSet( defaultValue ) { this.value = defaultValue ? defaultValue : 0 ; } BitSet.prototype = { on: function( index ) { if ( index < 0 || index >= 32 ) { throw "out of bounds."…

「CodePress」でリアルタイムシンタックスハイライト

CodePressはJavaScriptで書かれたリアルタイムシンタックスハイライターです。 サーバーを使わずブラウザのみで、指定されたテキストエリア文字列のシンタックスハイライトを行います。 ハイライトは、テキストの編集に応じてリアルタイムで行われます。 コ…

JSONBrokerのJavaScriptクライアントを書いた

だいぶ前のエントリ、「RubyクラスをJSONでアクセスできるWebサービス化する」で作ったJSONBrokerのJavaScriptクライアントを書きました。 (前置き)JSONBrokerは任意のRubyクラスのAPIをJSONでアクセスできるWebサービスとして公開するための簡易ユーテイリ…

IFD-OCO取引のテストを追加

IFD-OCO取引のテストを追加。約定しないと試せない以下の機能のテストを除き、これで一通りテスト完了です。 決済 建玉一覧 今日までの成果 こちらからどうぞ。

JSON Utility

Yahoo! UI Library 2.4.0 からJSONのパーズとシリアライズをするAPIが使えるようになっています。json.jsでもできますが、あれと違ってグローバル名前空間を汚さないので安心して使えます。(json.jsとprototype.jsを一緒に使うとエラーになる、とかあったし…

Chartを使ってみた。

Yahoo! UI Library 2.4.0 の新機能「Chart」を使ってみました。 「Chart」を使うとJavaScript APIの呼び出しだけで簡単にチャートを作成できます。 チャートはFlash(CSSやJavaScriptではなく)を使って描画されます。 内部的には、ASTRAが使われているようで…

Genericsを使ったJavaBean

JavaBeanを作る時にGetter,Setterを書くのメンドウですよね。Rubyみたいに attr :foo とかでアクセサを作ってくれれば良いけどあいにくJavaにそんな機能はありません。(Java SE 7でできるらしいけど。)楽する手段としてMapを使うという手がありますが、これ…

対戦するプレーヤーを入力できるようにした。

プレーヤーを入力して対戦できるようにしました。 テキストエリアにプレーヤのコード(石を置く場所をコールバックするJavaScript関数)を入力し、「対戦する」をクリックするとそれと対戦できます。 デフォルトでは、「おける場所に置くプレーヤー」のコード…

メソッドセットでのコンポーネント探索

バインドメソッドの設定がメンドイ件について、指定したメソッド(セット)を持つコンポーネントを探してくる機能がコンテナにあれば良いんでは、と思った。 機能 コンテナに登録済みのコンポーネントをスキャンして、指定したメソッドを持つコンポーネントを…

タイマー機能を実装。

Reversiにタイマー機能を実装。自分のターンになった後、一定時間石を置かないと反則負けになります。あと、不具合もいくつか直しました。 処理フローが複雑になってきたので一旦リファクタしたい。 コンテナのバインドメソッドを使ってイベント通知をしてい…

OCO取引とIFD取引の基本のテストを追加

OCO取引とIFD取引の基本のテスト(注文、注文変更、キャンセル)を追加しました。特に問題なし。 今日までの成果 こちらからどうぞ。 ※実際のWebサービスでの動作は未検証です。ローカルサーバーでの動作のみ確認しています。