MT4のDDEサーバ機能でエクセルに為替レートを取得して遊ぶ方法のメモ。

GW中は麻雀大会以外暇なのでなんか指標作ることに。

VBAの勉強にもなるし!

とりあえずDDEサーバから取得したレートを使ってRSI(超短期)を算出して30,70くらいでサイン出すものを作ってみる。

最初はDoLoop使ってぐるぐる回すのかと思ったけどそれじゃずっと回ってるだけでDDEサーバの更新が止まってしまいずっと同じ値になる...
少し調べてみると DDEサーバからデータを取得するタイミングでマクロを起動する関数があるとのこと。
.OnDataである! 
ActiveSheet.OnData = "プロシージャ名"と書くことで更新するごとに起動されてうまくいった!

サインもいい感じに出るようになったのでバックテストっぽい機能を付けようと思う。

まずはLとSサインを分けてサインが出たときのレートとそのn分後のレート比較して精度はそんなに高くないけど勝敗を出してみることに。 

Application.OnTimeでサインが出たときからn分後にレート比較して勝敗を出すプロシージャを動かすように書いてみた。

しかし、実際に動かすとプロシージャが実行できないとエラーが出る
(*´д`)...うむむ...
どうやらOnTimeで呼び出すプロシージャとデータ更新からのOnDataのタイミングがかぶってるらしく2つのプロシジャは同時に動かせないみたい。そんなことはなかった(笑)

同一モジュール内に記述したら動いた!

明日から他のインジも作りつつ、テスト!