本ブログは、MetaTrader を利用して、EA プログラムを自作紹介するサイトです。
決して儲かるシステムを紹介するものではありませんのであしからず・・・
もし、記事中に嘘偽りを発見された方、ご連絡頂けると幸いです。
なお、過去に作成した EA プログラムの作り方はこちらになります。

Loop_Entry : 同じ指値エントリーを繰り返し実行するプログラムです。
estTurn : 高値(安値)で反対売買を実行するプログラムです。

2008年7月30日水曜日

プログラムは Tick をきっかけに動いている

MetaTrader はプログラムを繰り返し実行することで自動売買の仕組みを実現していることはわかりましたが、繰り返すタイミングがどうやら定期的ではない様子です。

いったい何をきっかけに動作させているのでしょうか?

ちょっと、”Test1”プログラムが表示するメッセージを眺めてみます。

やっぱり、一定時間ごとには表示されません。

チャートにプログラムを連携させて動かしている様子ですので、何かチャートに関係することだと思うのですが、試しに周期設定(1分/5分/15分・・・)を切り替えてみました。

すると、プログラムは再起動しましたがプログラム実行タイミングが大きく変化する様子ではありません。

ちなみに、プログラムが再起動しているかどうかは、ターミナルウィンドウの Experts タグのメッセージ欄に

deinitialized
uninit reason 3
initialized

が表示されていることで分かります。

#それぞれの行について、詳しくはプログラムを作成する時に改めて調べてみます。

何がきっかけで動いているのかさっぱり分からないので、ネットで調べてみました。

すると、「Tick に沿って動作する」との記事を見つけたので、MetaTrader のヘルプで tick を検索してみると、それらしき説明が記載してありました。

#英語は得意ではないので、違ったらごめんなさい。

試しに気配値表示ウィンドウの「ティックチャート」タグを選択し、眺めていると、tick チャートが変動するたびに、”Test1”のメッセージも表示されているように見えました。

ここまでで、プログラムは「チャートに連動した環境で Tick をきっかけに繰り返し実行される」ことがわかりました。

よし次は、エントリーするプログラムを作ってみようかな。

2008年7月23日水曜日

プログラムとチャートの関係

無事、ライブでプログラムを動かすことができました。

MetaEditor は、作成したプログラムをチャート画面に連動させて動かす仕組みの様子。

プログラムとチャート画面の関係について、いろいろ試してみます。

まずは、ひとつのチャート上で2つのプログラムが同時に動くのか試してみました。

”Test1”と似たようなプログラム”Test2”を作成し、同じチャート画面で動かす設定(「チャートに表示を選択」)をしてみたところ、

”Test1”が”Test2”のプログラムに変わってしまいました。

どうやら1チャート上で動かせるプログラムは1つみたいです。

次に、複数のチャート上で2つのプログラムが同時に動くのか試してみました。

別なチャート(EUR/USD)を表示し、画面上に2つ以上のチャートを表示した状態で、それぞれのチャート上でプログラムを動かす設定をしてみたところ、

2つのプログラムが同時に動きました。

どうやら、複数のプログラムを同時に動かせるみたいです。

さらに、同じプログラムが別々のチャートで同時に動くかどうか試してみました。

”Test1”プログラムを2つ以上のチャートで動かす設定をしたところ、

バッチリ動きました。

あと、チャート画面を切り替えてみましたが、プログラムは動き続けている様子です。

最後に、チャート画面を閉じてみると、

プログラムはとまりました。

と、チャートごとにプログラムを動かせることが確認できましたが、気になることが一つ。

同じプログラム内で表示されるメッセージの表示タイミングが一定間隔ではありません

何を基準にプログラムが繰り返し実行されているのでしょう?

次はプログラムが動くタイミングについて試してみます。

2008年7月21日月曜日

ライブでプログラムを動かしてみます

いよいよリアルタイム(ライブ)な自動売買の開始です。

とは言っても、メッセージを表示するだけですから損も得もしませんので気楽ですが。

まずは、プログラムを動かす準備が必要です。

MetaTrader を起動し、ナビゲーターウィンドウを見てみると、「Expert Advisors」のフォルダ?のところに”Test1”が表示されています。

ネットで MetaTrader について色々調べているときに、よく”EA”という言葉が出てきていたのですが、どうやら「自動売買用のプログラム?」のことを”Expert Advisor”略して”EA”と呼んでいる様子です。

#そう言えば、MetaEditor で”Test1”プログラムを「ウィザード機能」を利用して作成するとき、”Expert Advisor”を選択したことを思い出しました。

ナビゲータウィンドウの Expert Advisors にて”Test1”を右クリックすると「チャートに表示」と書かれた選択肢が表示されます。

#ここから MetaEditor を起動してプログラムの修正/削除/追加もできるみたいです。

この「チャートに表示」を選択すると、”Test1”というタイトルで下図のようなプロパティ画面が表示されます。

このプロパティ画面の「Live Trading」(上図赤枠)の部分の「Allow live trading」にチェックをつけて OK ボタンをクリックします。

#他にも項目はありますが、とりあえずそのままで。

すると、チャートの右上部分に「Test1 ×」の文字が表示されます。

どうやら、これで準備は完了みたいです。

あとは、画面上部にある「Expert Advisors」ボタンをクリックすると、チャートの右上部分の「Test1 ×」の×部分がニコチャンマーク?に変りプログラムが動作している状態になりました。


実際に動いているかどうか確認してみます。

画面下のターミナルウィンドウに「Experts」タグが現れ、プログラムした”Test1プログラムを実行しています”の文字がバックテストと同じように次々と表示されました。

プログラムを止めるには、画面上部にある「Expert Advisors」ボタンをクリックすると、チャートの右上部分が再び「Test1 ×」になりプログラムがとまりました。

とりあえず、これで、プログラムを動かすことはできました。

#ひと満足です。

MetaEditor は、作成したプログラムをチャート画面に連動させて動かす仕組みの様子ですので、次は、もう少しチャートとの関係性について調べてみようと思います。

2008年7月20日日曜日

プログラムは繰り返し実行される

非常に簡単なプログラムですが、とりあえず準備はできました。では、このプログラムを動かしてみようと思います。

プログラムは MetaTrader 上で動かすみたいですが、まずは過去のデータを使ってテストする、いわゆる”バックテスト”を実施してみます。

MetaTrader のメニューバーから<表示>-<Strategy Tester>を選択します。

すると、画面下に「テスター」ウィンドウが表示されます。

テスターウィンドウには「セッティング」と「操作履歴」タグがあり、「セッティング」タグにてプロ
グラムを動かす条件を指定します。

指定する条件はいろいろありますが、今回はメッセージを表示するだけのプログラムですので、とにかく動かすことを優先してみます。

「セッティング」タグにて次の内容を指定してスタートボタンをクリックします。

・Expert Advisor:”Test1, Copyright ・・・
・通貨ペア :”USDJPY, US Dollar vs Japanese Yen
・期間 :”Daily
・モデル :”Open prices only (fastest method to ・・・

すると、プログラム実行中を表すバーが横に伸びて行き、”ブヒ”と変な音(ちょっと文字では表現しずらい音です)がしてプログラムが終了したことを知らせます。

では、”Test1”プログラムで作成したメッセージが表示されているか確認してみます。

「操作履歴」タブを開いてみると”Test1プログラムを実行しています”の文字がずらずらと表示されます。一応、プログラムは動いたみたいです。

でも、”Test1”プログラムでは、メッセージを1行しか書いていません

なので、一見すると同じメッセージが何度も表示されているので、正常に動いていないのではないかと思いますが、メッセージ欄の日時部分をよく見てみると、1日1回ずつメッセージが表示されているのが分かります。

これから言えることは、MetaTrader は”Test1”プログラムを繰り返し実行してくれるみたいです。

つまり、パソコンで MetaTrader を起動している間は、プログラムを繰り返し実行することで、自動売買の仕組みを実現しているみたいです。

次回は、リアルタイムな取引におけるプログラムの実行を行ってみます。

2008年7月19日土曜日

コンパイルしてみましょう

ではウィザードによって作成された”Test1”プログラムを動かしてみます。

とは言っても、”Test1”プログラムは必要最低限のコードしか書かれていないので、このまま動かしても何の動作も結果も得られません

ですので、せめてプログラムが動いた証がわかるようなプログラムにしてから、動かしてみます。

では、画面に”Test1プログラムが動いています”といったメッセージが表示されるプログラムを作ってみます。

#プログラムの詳しい書き方については次回以降で調べていきますので、とりあえず下記内容を実施してみます。

プログラムコードを書くエリアの”int start”部分に以下の赤字文字(Printで始まる行)を入力します。
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
//----
Print("Test1プログラムを実行しています");
//----
return(0);
}
//+------------------------------------------------------------------+

すると下の画面のように日本語の部分が文字化けしてしまいます

これは、MetaEditor が日本語表示設定になっていないためにこのような状態になってしまいます。そのため、次の手順で日本語表示設定を行います。

メニューバーの<Tools>-<Options>を選択し、Options 画面の「Font」タグを表示し、Font で”MSゴシック”を選択、Script で”日本語”を選択し OK ボタンをクリックします。

これで日本語が正しく表示され、プログラムコードは完成です。

次に、プログラムコードの準備ができたら、コンパイルという作業を行います。

コンパイルとは、プログラムコードに記述誤りがないかどうかをチェックし、問題なければ MetaTrader(コンピューター)が動かせるファイルを生成する作業です。

先ほど書いたプログラムコードは、以前説明したように”Test1.mq4”というファイルに保存されるのですが、これは人間が分かりやすい書き方で書いたものであって、コンピューターにとっては処理しにくい状態なのです。

これをコンピューターが処理し易い形に変換してファイルとして保存する行為をコンパイルといいます。

#コンパイルは特に MetaTrader に限った行為ではなく、その他のプログラム作成においても一般的な行為です。

コンパイルの操作方法は、MetaEditor のメニューバーで<File>-<Compile>を選択するか、「Compile」のボタンをクリックすることでコンパイルされます。

コンパイルしたときには、プログラムコードに間違いがなければ、画面下の「Toolbox」の「Errors」タグに0 error(s), 0 warning(s)」と表示されます。

コンパイルすることで生成されたプログラム実行用ファイルは、”C:\Program Files\ODL MetaTrader 4\experts”フォルダに、ファイル名”Test1.ex4”として保存されます。

#上記フォルダは ODL Japan 社の MetaTrader インストールファイルを利用して環境作成した場合に限ります。

つまり、拡張子が.ex4”のファイルは、MetaTrader 上で動くプログラム実行用のファイルになります。

ちなみに、間違ったプログラムコードを書いてコンパイルしてみると、エラーになり、プログラム実行ファイルは作成されません。

先ほどのプログラムコードに”aaaaa”というプログラムコードを書いてコンパイルしてみると、
のように「Toolbox」の「Errors」タグにエラー内容が表示されます。(英語ですが・・・)

次は、このプログラムを動かしてみましょう。

2008年7月13日日曜日

プログラム名とコメント

ウィザードによって Test1 というプログラムが作成されました。

作成されたと言っても、プログラムのコードが記載されたファイルができただけで、これだけではプログラムは動かない様子です。

MetaEditor の画面をよく見てみると、”Test1”の文字が3箇所に表示されています。

まず、画面左上のウィンドウタイトルバーの赤枠のところに表示されています。これはプログラムコード表示エリアに表示しているプログラムコードが”Test1”であることを表しています。

#当然、他のプログラムコードファイルを開くと、このウィンドウタイトルも変わります。

次に画面右側の赤枠部分にも、”Test1”の文字が表示されています。ただし、ここには”Test1”の文字に加え、”.mq4”という文字が付与されています。

MetaEditor では、作成したプログラムコードをファイル形式で保存します。この”mq4”はプログラムコードファイルの種類を識別するための拡張子であり、Test1 のプログラムコードを”Test1.mq4”というファイル名で保存しています。

なお、実際にプログラムコードファイルがどこに保存されているかと言うと、”C:\Program Files\ODL MetaTrader 4\experts”のフォルダに保存されています。

#ODL Japan 社のダウンロードファイルを利用して MetaTrader をインストール(デフォルト設定)した時に限ります。

プログラムコードをどんどん作成していくと、このフォルダに保存されていき、MetaEditor の「Navigator」ウィンドウの「Files」タブに表示されていくことになります。

#つまり、実際のコードファイルが保存されているフォルダの中身が表示されているのです。

最後に、画面中央上の赤枠部分にも、このプログラムコードの名前が”Test1.mq4”であることをあらわしています。

ここはプログラムコードを表示するエリアで、自分なりに考えた自動売買のルールをプログラムコードとして記載する場所です。

MetaTrader はここに書かれたプログラムを上から下に向けて繰り返し実行することで(一部は1回しか実行されない箇所もあります)、自動売買ができる仕組みの様子です。

とは言っても、この行の一番左の青枠の部分を見ると”//”で始まっています。

MQL4以外のプログラムコードを書いたことがある方であればすぐに分かる話ですが、これはプログラムコードの中でコメント行として書く際に使われるもので、”//”で始まる行には何を書いても実際に動かすプログラムには影響ありません。

つまり、「このプログラムコードのこの箇所で何をやっている」みたいな説明や備忘録としてよく使われるものです。

そのため、今後も”//”の行については無視してもよいのですが、このコメント行があるのとないのでは、結構「見易さ」が変わったり、後からプログラムコードを見直す際の情報として役立ちますので、できるだけ完結に加えていくことをお勧めします。

次はいきなりですがプログラム動かしてみましょう。

2008年7月12日土曜日

MetaEditor を起動してみよう

では、プログラムを作ってみましょう。

って、何をどう作ればいいかはまだ具体的に分かってないので、参考になりそうなサイトをネットで検索・・・

まず、プログラムをどうやって書くのかですが、専用のソフト”MetaEditor” を使うみたいです。
#MetaEditor は、MetaTrader をインストールすると一緒にインストールされます。

MetaEditor は、MetaTrader のメニューバーより<ツール>-<MetaQuotes Lnguage Editor>を選択すると起動します。

MetaEditor が起動しました。

この画面のグレーの部分にプログラムが表示されるようになるのですが、ここではまだ何も表示されていない状態です。

この状態では、まだプログラムを書くことができません。

新しくプログラムを作るのであればプログラム名を決めて、プログラムを書ける状態にしなければなりません。

MetaEditor には、プログラムを作成する時に、必要最低限の準備をしてくれるウィザード機能(メニューに沿って進むと勝手に作ってくれる)が装備されています。

MetaEditor 画面のメニューバーより、<File>-<New>を選択するとウィザードが表示されます。

何やら選択肢がある Welcome 画面が表示されました。

自動売買のプログラムを作るには、この画面で”Expert Advisor” を選択する必要があるみたいですので、そのままの選択状態で次へをクリックします。

#他の選択肢は追々調べていきましょう。

次の画面ではプログラム名を入力します。

表示された画面の「Name」欄にとりあえず”Test1”と打ってみます。 ここで入力した文字がプログラム名としても利用される様子です。

#他にも入力する欄がありますが、とりあえずほっときます。

完了ボタンを押すと、プログラムを書く場所に必要最低限の準備がされたプログラムが表示されました。

よし、次はウィザードによって作成されたプログラムを見ていきましょう。

2008年7月10日木曜日

MetaTrader でできること

さて、そろそろ MetaTrader で自動売買をするためにネットで色々調べてみました。

現時点で分かったことをちょっとまとめてみます。

・自分で自動売買プログラムを書いて実行させる
MetaTrader は MetaQuotes Language4(MQL4)と呼ばれるプログラミング言語を用いて自分でプログラムを書いて実行させるらしいです。

グラフィカルな画面でいろいろセッティングしてスケジュール機能で管理されてることを想像していたのですが、自分でプログラムを書かねばならないとの事です。

これって、プログラムを書いたことがない人には、すごいハードルだなぁ。

#ちなみに、私は一応プログラミング経験があるので、なんとかなるのではと・・・
#ただ MQL4 は C 言語に表記が近いとの事。C 言語は書いたことがないのですが・・・


・過去のデータを使って自分で作成したプログラムのテストができる
自分で作った自動売買のプログラムがどれ程の結果を出せるのか、あらかじめテストできるとの事です。

資金の少ない自分にとっては、とてもありがたい機能です。プログラムの出来次第では、いきなり退場させられるかも知れませんからね。


・手間な注文や決済を一気にできる
これはプログラムを作る必要はありますが、例えば「今もっているポジション全てを一気に決済する」とか、「今もっている利益確定分のポジション全部に対して逆指値の注文を一気に変更する」など、今までポジションごとに一つ一つアクションを起こす必要があったものが、一気に処理できるようになるとの事です。


・独自の指標が作成できる
メジャーなテクニカル指標グラフ(移動平均線など)はもちろんのこと、独自のテクニカル指標グラフも作成できるらしいです。 もちろん、プログラムを自分で作る必要はありますが・・・


・好みのタイミングで通知できる
どこの業者でも、ある状態になったらメール送信や画面にアラートを表示する機能は珍しくありませんが、通知するタイミングルールについてはある程度制約があります。

でも MetaTrader では、通知タイミングのルールを自由に決められるとの事です。当然これも自分でプログラムを作ることになるようです。


と、どこのサイトでも書いてあることをまとめてみましたが、なにをするにも「自分でプログラムを書く」必要がありそうです。

よし、次からプログラムを書いてみるぞ!!

2008年7月9日水曜日

時間

チャート図のセッティングを変更している時に、時間の周期設定(1分/5分/15分など)を色々変更しながら確認していたら、チャート図の時間が日本時間と合ってないことにふと気づきました。

「あれ、最新のデータが取れていないのかな?」と思いましたが、チャートデータは刻々と変わっていきます。

ODL Japan社のサイトのFAQを検索したところ、「ODL Meta Trader システムの時間表記は世界共通GMTの時刻になります。基準時間の変更は世界各国でシステムをお使いになっているので、申し訳ありませんが変更することはできません。」との事。

えぇー、これじゃ大きな変化があった時の出来事(指標など)を確認しづらい・・・

ネットで他も調べてみましたが、どこの業者もGMT時刻になっている様子。

面倒くさいけど、しょうがない。

ちなみに、GMT(グリニッジ標準時)を日本時間に置き換えるには+9時間すれば良いみたいです。

2008年7月7日月曜日

チャート図のセッティング

MetaTraderの画面を眺めていたら、チャートの大きさが非常に見づらいのが気になったので、「ネットで自動売買のやり方を調べる前にちょっと見やすくしとこうかな」って気持ちになり、設定変更にチャレンジしてみました。

まずは、チャート図が4つも表示されていたので、USD/JPYの一つにしました。
#チャート図エリアの下の方にある不要な通過ペアタブを右クリックし”Close”を選択するだけでした。

色合いも変えようかとも思いましたが、せっかくなのでこのままの色で行く事に。

あと、ローソク足以外に”Commodity Channel Index”なるグラフが表示されていたので、これを削除。
#削除はグラフの線の部分を右クリックし”サブウィンドウを削除”を選択すると消えました。

それから、ボリンジャーバンドを表示したかったのですが、どうやって表示させるのかが分からず、とりあえずチャート図エリアで右クリックをすると”定型チャート”の選択肢にボリンジャーバンドがあったのでこれを選択。

すると、余計なチャートまで表示されました・・・

ボリジャーバンドの2σと3σのみ表示したかったので、先ほどと同じように余計なものは削除。

操作方法が分からなかったので、Googleで”MetaTrader チャート”をキーワードに検索。

親切丁寧な操作説明のサイトがあったので、参考にさせてもらいながら次のように操作しました。

Indcatorsボタンをクリックし、ボリンジャーバンドを選択。

表示された設定画面で「期間:21日」と「偏差:2σと3σ」と「色:水色と赤」を変更しOKボタンをクリック。

これを2σと3σの2回分実施することで一応完成。

とりあえず満足しました。

2008年7月6日日曜日

マニュアル

では早速、自動売買やっちゃおうかな。

といっても何をどうすればよいのか全く分かりません・・・

とりあえず、ODL Japan 社のサイトに掲載されている取り扱い説明書を見ることに。

MetaTrader 画面に表示される内容の説明や基本的な注文の仕方など、実際の画面を動かしながらポイントを説明する動的な説明書になっています。

これなら、今まで他の業者でやっていた経験も踏まえ、実際に注文をしなくてもだいたい理解できました。 

この調子で自動売買のやり方も覚えられるかなと思い、いよいよ上級編を開いてみると「準備中」との事。

他を探しても一向に自動売買の文字が見当たりません・・・

仕方なく、ODL Japan 社の取り扱い説明書はあきらめて、他を探すことにしました。
#ODL Japan さん、上級編期待してます。

さて、どうしたものかと MetaTrader の画面を眺めていると、メールボックスのヘッドライン欄に”What is Automated Trading?”の文字が・・・


もしや、これが説明書?と思い開いてみると、見事に全て英語です・・・

そういえば、ソフトなんだからヘルプがある。もしかしたらヘルプは日本語になっているかもと思い、メニューバーにあるヘルプを開いてみるものの、これまた全て英語です・・・

すでにあきらめ感漂う状態です・・・

ここはやはり、ネットで検索し先駆者である諸先輩方のサイトを参考にさせて頂こうかと思います。

2008年7月5日土曜日

MetaTrader インストール

我が PC に MetaTrader の環境を準備すべく、ODL Japan 社のサイトより MetaTrader のインストールファイルをダウンロードしインストールしてみました。

手順としては・・・・と詳しく書いてみようかと思いましたが、インストールメニューに沿って進むだけであっけなく完了。

デモ用のアカウント登録もすんなり完了。

なんか拍子抜けするくらいサクッと終わりました。

そして、最後に MetaTrader が起動し、最初はこんな感じで画面が表示されました。


デモ用の環境のため、限られた機能やデータの範囲で試せるのかと思ったのですが、どうやら本当のデータを使って機能制限なしでリアルタイムでやり取りできる様子です。

#もちろん、リアルマネーではないため出金はできません。

ODL Japan 社のサイトに掲載されている操作マニュアルを斜め読みして気づいたんですが、MetaTrader って一般的な取引操作(成り売りや指値、逆指値といったもの)ができるんですね。

私はてっきり自動売買専用ソフトで特殊な取引手順しかないのかと思ってました・・・

まあ、ぱっと見る限りでは、チャート図の色合いが今まで使っている業者のものと違うので、ちょっと違和感はありますが、使い方はこれから調べていくとして、すごく気になるのものが。

画面下側にメールボックスがあり、どうやらここにメールが届くようになっている様子なのですが、すでに届いているメールの内容を見ると、すべて英文なのです・・・

正直、英語はしんどいです。
大丈夫かなぁ・・・

参考になりました? よろしければご協力ください。

にほんブログ村 為替ブログへ 人気ブログランキング【ブログの殿堂】