finelworks
XREA+からCORESERVERへ引っ越し
- 2009-12-24 (木)
- Diary
ずっとほったらかしでした。
コメントにも返信していません。 申し訳ない。
さて、このブログのホスト先であるXREA+の契約がそろそろ切れるので、条件のよいCORESERVER(CORE-MINI)に移転しました。
ついでにブログシステムをMovable TypeからWordPressに変更し古くてコメントのついていないエントリはリダイレクト書くのが面倒なので消しました。
コンテンツの「ポジションとオーダーのヒストリー」はだいぶ前に最新データが提供できなくなっていましたが、少々修正して正常に稼働するようになりました。
iGoogleガジェットの「しょぼいカレンダー アニメアラート」は原因不明でずっと「一時的にデータを提供できません」になってますが、原因がわかりましたので対処しました。
ガジェットのホスト先が問題でしたのでホスト先を変更しました。いったんガジェットを削除したのち、新しいガジェットを追加してください。
細かい使用方法はiGoogleガジェット「しょぼいカレンダー アニメアラート」の使い方をご覧ください。
iGoogleガジェット「しょぼいカレンダー アニメアラート」障害対応しました。
- 2009-06-19 (金)
- Programming
Syobocal Alert、2年前に作ったiGoogleのガジェットだが、気がついたらまともに動いてなかった。
現象は抽出条件が全角だと正しい抽出結果がでない。
たとえば抽出条件が「MAJOR」だった場合はMAJORを含む番組タイトルが抽出されるが、抽出条件が「【新】」の場合だと【新】を含む番組タイトルが存在していてもindexOfメソッドで常に-1が返却されスルーされてしまう。
どこかで文字化けか文字コードがそろっていないのかと疑ったが、ガジェットのソース、しょぼいカレンダーのRSS、ブラウザのエンコード、すべてUTF-8で揃っていた。訳がわからない。化けようがない。
ユーザー設定の抽出条件を読み込まずにソース内にハードコーディングすると正常に抽出してくれるから、このままでいいや~原因究明めんどくさい。あ~でも一応ユーザー数見てからにしよう。
って見てみたら393人も使ってくれてた。Goodなコメントも二件ついてた!
使ってる人なんて5人ぐらいだと思ってたからびっくりだよ!
こりゃ勝手はできない、つかさっさと直さないと大迷惑じゃないか!ってんで至急原因を探ってみた。
ユーザー設定の値がどうも臭う。調べてみるとユーザー設定値の取得方法には現在使っている文字列置換方式以外にJavaScriptで取得する方法があるらしい。
文字列置換方式で取得した値とJavaScriptで取得した値をcharCodeAtで文字コードを比較してみると同じ文字でもコードが違っていた。内部で文字化けしてた?みたい。
早速取得方法を変更してみると直った!
ユーザーの皆様ご迷惑おかけしました。
※新しいガジェットのソースがgoogleサーバーに反映されるまで1~2日かかると思います。
近似する相場をヒストリカルデータから検索して相場を予測するツールを作ってみました
- 2008-02-25 (月)
- FX | Programming

近似する相場をヒストリカルデータから検索してその後どうなるのか予測するためのツールを作ってみました。
検索したい相場が赤と青のローソク足、その後の相場が黄と緑のローソク足、そして多数の薄く赤いバーチャートが折り重なったものが、検索したい相場に近似した相場のその後の値動きを表したものです。
もし相場が過去の値動きと同じ値動きを繰り返すのなら濃く赤い部分にローソク足が描かれるはず・・・
なのですが、ロジックが悪いためか17万本のヒストリカルデータで検索するのに4分ほど掛かるので多く試してないんですが、ほとんどの相場で上下対称の山(正規分布?)が出現してしまい、予測にはつかえないのかなぁと鬱状態。
まあ、アストマックスFXのPUCKツールっていう市場予測ツールと似てなくもないので、上げ下げの予測ではなく、リスク管理ツールとして使えるかもしれませんね。
とにかく人に使ってもらえるような品質まで持って行きたいです。
今後の改良点としては
- 検索に時間が掛かりすぎるのでパフォーマンスの改善
- ヒートマップ風に相関係数によってバーチャートの色を変えてみる
- ニューラルネットとか多変量解析を導入してみる
レシピはこんな感じ
- Microsoft Visual C# 2005 Express Edition
- MySQL Server 5.0
- NPlot(チャートを描画するライブラリ)
- AutoForexiteとCandleStickEditorで生成したヒストリカルデータ
- 相関係数を求める式
以下出力例

収束してない例(手を出すなってことか!?)

予測とは逆に下がった(トレンドの変わり目に弱い?)
MT4でDLLを作らずにカンタンにプロセス間通信を行う方法
- 2007-08-26 (日)
- FX | Programming
ここの所、障害対応と仕様変更対応ぐらいしか仕事がなくてとっても暇です。
んで暇つぶしにMetaTrader4のCustom Indicatorを改造したり作ったりしてます。
MetaTrader4のCustom IndicatorやExpert Advisorsの作成に専用のスクリプト言語、MetaQuotes Language(以下MQL)を使うわけだけどこのMQL、C言語そっくりなんで1日中ネットしてるより罪悪感がなくて良い感じです。
MQL専用エディタもシンタックスハイライトやコードアシストがありそこら辺のエディタよりも出来が良いです。あと今気がつきましたがブレークポイントまでありました。素晴らしすぎです。
そして外部と連携したいときC/C++言語で作ったDLLを呼べるんですが・・・メンドクセ(‘A`)
C#に慣れすぎてどうすんだか忘れたし、Cのコンパイラ入れてないし。どーすっかなーと考えてて思い出した。
あ!そうだATOMを使おう。GlobalAddAtomにデータを入れて、AtomIDをSendMessageで連携したいプロセスに送ればタイムラグ無しに連携できるネ。
#include <WinUser32.mqh> #import "kernel32.dll" int GlobalAddAtomA(string lpString); int GlobalGetAtomName(int nAtom,string lpBuffer,int nSize); int GlobalDeleteAtom(int nAtom); #import #define WM_APP_ATOM 0x8001
こんな感じでkernel32から使うWin32API関数を宣言する。 さらにSendMessageとFindWindowが必要なんでWinUser32.mqhをincludeします。 WM_APP_ATOMはSendMessageで送信するメッセージ定義です。
string ClassName = "WindowsForms10.Window.8.app.0.b7ab7b"; string TitleName = "Form1"; int HWND = FindWindowA(ClassName,TitleName);
そしてウィンドウクラス名とウィンドウタイトルを指定してウィンドウハンドルを取得。
int atom = GlobalAddAtomA("アッー");
SendMessageA(HWND,WM_APP_ATOM,atom,0);
GlobalDeleteAtom(atom);
ATOMに文字列を保存して得られたATOMIDをSendMessageで送信。
[DllImport("kernel32.dll", SetLastError = true)]
static extern int GlobalGetAtomNameA(int nAtom, StringBuilder lpBuffer, int nSize);
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_APP_ATOM)
{
StringBuilder buf = new StringBuilder();
GlobalGetAtomNameA((int)m.WParam, buf, 1024);
Console.WriteLine(buf.ToString());
}
base.WndProc(ref m);
}
送信先システム(例ではC#)でWM_APP_ATOMを受信したらWParamに入っているATOMIDを元にGlobalGetAtomNameAで文字列を取り出す。
という具合にDLLを作らずともATOMとSendMessageでプロセス間通信を行い外部と連携が出来るようになります。
これでMetaTraderから売買シグナルを発信し、それを受け取った外部システムがブラウザや売買システムを自動操縦して発注するなんてことも出来ますね。怖いけど。
MT4でリアルタイムにNYダウのチャートを表示する方法
- 2007-08-05 (日)
- FX

FXをしていると、少しでも多くの市場情報が欲しい。そのうちの一つは世界の株価指数だ。
ここのところ為替レートは株価と連動して上下していると聞く。見ていて損はないだろう。
よく、リアルタイムでダウが見られるところは?と掲示板やQ&Aサイトでで質問している場面をみるが、その際よく挙げられるのがリアルタイム世界の株価指数と為替(www.w-index.com)とか、その参照元のBigcharts.comだったり、Javaのリアルタイムチャートが使えるADVFNだったりするわけですが、Bigchartsはリロードしないと最新の状態が見えないし、ADVFNは広告一杯でうざかったりするので他に無いかな?と探してたら、ありました。それもとても近くに。
それはMetaTrader4(以下MT4)です。
FXやっててMT4を知らない人はいないと思いますが、MT4とは無料でチャート表示はもちろん自動売買までやってのける高性能トレーディングプラットフォームです。
いままで為替専用かとばかり思っていましたが、接続先デモサーバーをNorthFinanceに変えればDOW・NASDAQ・S&P500などの株価インデックスはもちろん先物などのチャートをリアルタイムに見ることが出来ました。
接続先のデモサーバーにNorthFinanceを追加するには2つの方法がありますが一つめの方法を紹介します。
MetaTrader4をインストールしたフォルダ配下にconfigフォルダがありますので、そこにnorthfinance-demo.zipをダウンロードして中に入っているNorthFinance-Demo.srvをコピーしてください。(このファイルはMT4のコミュニティーサイトにアップされたサーバーリストファイルからNorthFinanceのみを取り出したものです)
- MetaTraderを起動し、ファイル→デモ口座の申請
- 貴社からのニュースレター受け取りに同意します。にチェック
- サーバーリストからNorthFinance-Demoを選択し、次へ
- IDとパスワードが発行されますが、MT4が覚えてくれるのでメモする必要はありません。完了ボタンを申請は終了です。
NorthFinanceにログインすると通貨ペアにDJI(ダウ)やNASDAQが出ているのが確認できると思います。あとは煮るなり焼くなりお好きにどうぞ。
ちなみにNorthFinanceにデモ口座開設の手引きがあったりしました。 図付きで分かり易いです。
アニメの新番組や放送時間の変更を通知するiGoogleのガジェットを作った
- 2007-06-14 (木)
- Programming
昨日、しょぼいカレンダーからアニメの番組データを取得してアニメの新番組や放送時間の変更を抽出するツールをPraggerで作りましたが、導入が簡単じゃないので、iGoogle用の単体で動くガジェットを作りました。
これで多くの方が番組表を必死に見ることなく、2007年夏期の新番組の嵐を乗り越えられれば幸いです。
+Googleってボタンを押せばiGoogle(旧Googleパーソナライズドホーム)にガジェットを追加できます。
ガジェットを追加したら右上の[↓]ボタンを押して、設定画面を開いてください。

設定画面にてしょぼいカレンダーのユーザーIDを入力してください。
入力したら、保存ボタンを押してください。
他の設定項目は後述します。

するとこんな感じで、新番組や放送日の変更、たまに放送されるアニメ映画劇場、そして憎っくき野球中継により発生する繰り下げ予告などアニオタなら見逃してはならない情報が一目でわかっちゃいます。

設定項目について
タイトル名:ガジェットのタイトル名を設定します。
タイトルのリンク:ガジェットのタイトル部分のリンクを設定します。
しょぼいカレンダーのユーザーID:しょぼいカレンダーのユーザ設定を使って、フィルタリングされたデータを取得するため。
取得する日数:取得する日数で設定した日付分の番組情報をしょぼいカレンダーより取得します。
抽出条件:抽出条件に設定したスペース区切りの単語が番組タイトルに含まれている番組を抽出します。
除外条件:抽出条件で抽出した番組に除外条件に設定した単語が含まれている場合、抽出結果から除外します。
表示個数:抽出結果から何件の番組を表示するかを設定します。
フォントサイズ:そのままの意味です。
マーク:番組タイトルの先頭に表示するマークを設定します。
Praggerでアニメの新番組や放送時間の変更等を拾ってRSSに吐かせる
- 2007-06-13 (水)
- Programming
2007年夏期に放送開始されるアニメは24本、春に比べれば格段に少ないが、放送日時を調べるのはやっぱり大変です。
そこで役立つのがしょぼいカレンダーです。視聴可能なチャンネルを設定すれば、アニメの放送スケジュールが一目で分かるようになります。
でも、毎日しょぼいカレンダーを見に行くのも面倒なのでしょぼいカレンダーのRSSから「新番組」「終了」「注目」「放送日時変更」など注意しなければならない所だけ抽出して再びRSSとして出力するフィルターを作ってみた。
※追記
一般向けにiGoogle用のガジェットを作りましたので、こちら(アニメの新番組や放送時間の変更を通知するiGoogleのガジェットを作った)をご利用下さい。

実際にiGoogleでRSSを表示してる様子
こうゆうのはPlaggerで作るのが有名だがインストールが面倒くさいので止めた。
代わりにインストールが簡単なPlaggerのRuby版、PRaggerを使います。
svnからチェックアウトしてRubyが使えるサーバーにUPすればOK。
PRaggerはyamlというファイルに利用するプラグインと設定を記述してRSSなどのデータを制御します。
が、説明も面倒くさいので作成したyamlとプラグインの配置とyamlの編集方法だけ書きます。
詳しく知りたい場合はそれPraggerでできるよ! – Ruby版Plagger登場を読んでみてください。
あらかじめ、しょぼいカレンダーにてアカウントを取得して視聴可能なチャンネルを設定してください。
ここ(syobocalfilter.zip)から、自作したyamlとプラグインをダウンロードしてください。
syobocal.yamlとpluginフォルダをpragger.rbと同じフォルダにコピーしてください。
1.読み込むRSSのアドレスを編集します。
syobocal.yamlをメモ帳などのテキストエディタで開いてください。
RSSのアドレスにしょぼいカレンダーのユーザーIDを入れます。
下記のように、ここにユーザーIDを入れるという文字列をユーザーIDに差し替えてください。
たとえば、ユーザーIDがfinelの場合は
http://cal.syoboi.jp/rss.php?usr=ここにユーザーIDを入れる&days=14&titlefmt=$(StTime)%20$(Mark)%20$(ShortTitle)%20$(ChName)
↓
http://cal.syoboi.jp/rss.php?usr=finel&days=14&titlefmt=$(StTime)%20$(Mark)%20$(ShortTitle)%20$(ChName)
2.番組を抽出する条件を編集する。
あらかじめ、「新番組」「最終話」「注目」を抽出するようにしています。
他に、条件を追加したい場合は下記部分を編集してください。
正規表現で書く必要がありますが、条件を追加するだけなら’|'で単語を区切るだけでOKです。
regex: “【新】|【注】|【終】”
また、プラグイン側で”6/25は放送休止”とか”金曜日に放送日を移動”みたいコメントがある場合も抽出します。
3.抽出された番組から不要な番組を除外する。
注目番組にマンガ夜話とかアニメ夜話があるけど出したくない、とか
新番組にガンダムがあるけど出したくない、という場合
filter: “”
↓
filter: “夜話|ガンダム”
とすればOKです。
4.必要なら、出力するRSSのファイル名とタイトルを変えましょう。
標準でsyobocal.rdfという名前のRSSを出力しますが、変更したい場合は
filename: syobocal.rdf
上記の部分を変えてください。
RSSのタイトルを変えたい場合は
title: しょぼいカレンダー
上記の部分を変えてください。
5.実行
シェルスクリプトに
#!/bin/sh
/usr/local/bin/ruby pragger.rb -c syobocal.yaml
exit
と書いてcronで毎日実行してしてRSSを吐かせます。
私は、iGoogleでRSSを表示していますが、iGoogleのキャッシュのせいで上手く出なかったので、適当にiGoogleのRSSリーダーガジェットを改造してつねに最新のRSSを取得するようにしました。
syobocal.xmlがiGoogleの改造版RSSリーダーガジェットです。
6.さいごに
昔にも似たようなツールを作りましたが、今回もサーバーが必要だったり、タスクの定期実行のためのcornが必要だったりと分からない人にはさっぱりですよね。
またこんど暇があれば、iGoogleのガジェットにしょぼいカレンダーのユーザーIDを入れるだけで動作するようなモノを作ってみたいです。
Advanced/W-ZERO3 [es]の良い点と悪い点を箇条書き
- 2007-06-08 (金)
- PC
ティーザー広告が現れてからワクテカしていたが、ついに今日ウィルコムがW-ZERO3[es]の後継機Advanced/W-ZERO3 [es]を発表した。
第一印象は「esから変化少ない!」「がっかり」なんて思ったが、後継機だものビックリするぐらい変わるわけないよね。
しかし、細部を見てみるとなかなか頑張ってるね!
esを1年ほど使ってるし機種変してもイイかもと思えてきたよ。
さて、良さそうな面と悪い面を箇条書き。
良い点
- [es]では親指の爪を立ててカチカチ入力していたフルキーボードのボタンが大きくなって押しやすそう。
写真では分からないけどクリック感が軽くなってると良いな。 - 十時キー部分が静電タイプのセンサになっていてiPodみたいにスクロールできる。
いままで、Webブラウザでスクロールしようと思うとスクロールバーを慎重に操作する必要があった。 - 無線LANが内蔵されてる!あと赤外線も!
無線LANは言うまでもなく、赤外線で学習リモコンアプリが使えるようとオモシロい。
タイマーと組み合わせて、朝に自動的にシーリングライトを点灯するとかね。 - Windows Mobile 6のUIがカッコいい
いままでかなりダサかった、しょうがないのでCustomBarを使ってた - CPUやメモリがスペックアップ
esはかなり遅い!Windows Mobile 6のせいでさらに重くならないと良いのだが…
悪い点
- どうせならフルキーボード無くしてみるぐらいデザイン変更してほしかった
- Bluetoothが内蔵されてない!
外付けが発売されるらしいが、横に付けるのはちょっとなぁ - ダイアルキー上部のソフトキー2つが消えた
利用頻度が高かったんだけどなぁこれ - 横の音量調節ボタンが消えた
音量調節はあまりしないのでこのボタンにスクロールを割り当ててたが、あったほうが良かったな
機種変するかどうかはともかく早くさわってみたいのです。
ウィンドウのタイトルバーと枠を外して「ほぼテキストブラウザ」を更に目立たなくするツール
- 2007-05-20 (日)
- Programming
業務中に少し暇が出来たのでちょこっとだけ最新ニュースが見たい、だけど大っぴらにブラウザ立ち上げるのもイヤだなぁなんてことありません?
そんなときは、見た目が「メモ帳」そっくりなWebブラウザを使うと画像やスタイルをOFFにして文字だけ表示してくれる「ほぼテキストブラウザー」が大活躍なんですが…
ただ、プログラマな人たちは「メモ帳」は使わないんですよね。
「EmEditor」とか「サクラエディタ」とか「秀丸」などのエディタを使います。
それにウチの場合、Eclipseなどの統合開発環境が作業のメインなのでメモ帳らしきモノを開いてたら異様です。

そこで考えました。
ウィンドウのタイトルバーと外枠を取り除けば他のアプリケーションに溶け込ませることができそうです。
さくっと作ってみました。
名前は「窓枠職人」とでもしましょう。低機能のソフトに職人と名付けるのもアレですが。
使い方

「窓枠職人」を起動すると最前面のウィンドウに赤い枠が現れます。
そのまま「窓枠 ON/OFF」ボタンを押すとタイトルバーとウィンドウ枠が消えます。

ほら、下のアプリケーションの一部のように見えるよね?
もう一度「窓枠 ON/OFF」ボタンを押すと元に戻ります。
あとはおまけ程度にウィンドウの透明度を変更する機能とウィンドウをつねに最前面に設定する機能を持たせました。
「ほぼテキストブラウザ」×「窓枠職人」で限度をわきまえて、快適なこっそりブラウジングをお楽しみ下さい。
ダウンロード
「窓枠職人」 ver1.0.0.0 (48.35KB)
ダウンロード
I’ve最高!
- 2005-10-16 (日)
- Diary

指折り数えて待ちに待った武道館ライブ行ってきました!
I’ve最高!何もかも忘れて熱狂&感動しましたですよ。
こんなに叫んだのは生まれて初めてじゃないかってぐらいにね。
とにかくオイラの少ない語彙では出力できないぐらい楽しかった。
会場全体で”ラララ♪”と歌ったsee you、気持ちよかったなぁ。
また、武道館でI’veの歌姫とI’veを愛するファンとで同じ時間が過ごせる事を祈って、今日はもう寝ます。さすがに疲れたよ。
あーそうそう、秋葉原でチケット購入の列に並んでたときに顔見知りになった二方、一緒に盛り上がることが出来て楽しかったです、今日はどうもありがとうございました。


