Home > FX
FX Archive
近似する相場をヒストリカルデータから検索して相場を予測するツールを作ってみました
- 2008-02-25 (月)
- FX | Programming

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

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

予測とは逆に下がった(トレンドの変わり目に弱い?)
- コメント: 0
- Trackbacks: 0
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から売買シグナルを発信し、それを受け取った外部システムがブラウザや売買システムを自動操縦して発注するなんてことも出来ますね。怖いけど。
- コメント: 5
- Trackbacks: 0
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にデモ口座開設の手引きがあったりしました。 図付きで分かり易いです。
- コメント: 4
- Trackbacks: 0
ホーム > FX


