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

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

Chartを使ってみた。

Yahoo! UI Library 2.4.0 の新機能「Chart」を使ってみました。

  • Chart」を使うとJavaScript APIの呼び出しだけで簡単にチャートを作成できます。
  • チャートはFlash(CSSJavaScriptではなく)を使って描画されます。
  • JavaScriptからのリアルタイムなデータ更新もサポートされます。(この辺が、画像を返す系のグラフ作成APIに対するメリットかな。)

インストール

必要なモジュールをインポートします。

<!-- 依存モジュール -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.0/build/element/element-beta-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.0/build/datasource/datasource-beta-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.0/build/json/json-beta-min.js"></script>
<!-- ソース -->
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.0/build/charts/charts-experimental-min.js"></script>

また、これに加えswfのライブラリも必要です。

  • Yahoo! UI Libraryをダウンロードして使用する場合は「assets」以下に入っており、デフォルトではそちらを参照する設定になっています。
  • Yahoo! UI Libraryのサイトから直接ロードして使う場合はJavaScriptで以下の設定を行う必要があります。
// サーバーからchart.swfを読ませるための設定
YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.4.0/build/charts/assets/charts.swf";

チャートを描く

JavaScriptのデータを元に、簡単な棒グラフを描いてみます。基本的な手順は次の通りです。

  1. 元データとなるデータを用意する。
  2. データソースを作る。
    • 元データからYAHOO.util.DataSourceを作成します。
  3. チャートを作る。
    • 引数でチャートの描画先、データソース、およびオプションを指定してチャートを作成します。

サンプルです。

// サーバーからchart.swfを読ませるための設定
YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.4.0/build/charts/assets/charts.swf";

// グラフのデータ
var kittens = [
  { name: "mii",   age: 1 },
  { name: "tora",  age: 2 },
  { name: "shiro", age: 4 },
  { name: "kuro",  age: 2 }
];

// データソース
var dataSource = new YAHOO.util.DataSource( kittens );
dataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY; // JSの配列
dataSource.responseSchema = {
  fields: [ "name", "age" ] // 名前と年齢のカラムを持つ。
};

// チャートを書く。
// 引数でグラフを格納する要素、データソース、どの値をどの軸として使うか等の指定を渡す。
var chart = new YAHOO.widget.ColumnChart( "chart", dataSource,{
    xField: "name",
    yField: "age"
});

実行結果はこちらから

チャートのリアルタイム更新

元データの更新に追従して、チャートを更新する機能が用意されています。使い方は次の通り。

  1. チャートを生成する際に、「polling」オプションを指定し、定期的にデータの変更の監視と再描画を行う設定をする。
  2. データを更新する。
    • →次回の更新チェック時にデータが変更されていればグラフが再描画されます。

サンプル。

... 省略

// チャートを書く。
var chart = new YAHOO.widget.ColumnChart( "chart", dataSource,{
    xField: "name",
    yField: "age",
    polling: 1000 // 1秒ごとに再描画する設定
});

//5秒ごとに年を重ねる。
setInterval( function(){
  kittens[0]["age"] += 1;
}, 5000 );

実行結果はこちらから