2011年5月5日木曜日

5:テスト用データの入手

EABuilderを使うと、実に簡単にEAが量産できます。

しかし、作り出したEAが本当にロジックとして有効なのか、

きちんと検証をしなくてはいけません。


 まず、検証には過去データが必要ですので入手方法を説明します。

MT4の「ツール」から「オプション」を選択します。

「チャート」タブの「ヒストリー内の最大バー数」と、

「チャートの最大バー数」の2項目に対して、

画像の赤丸のように入るだけ9を打ち込みます。

> 

「OK」を押して閉じて、再び開くと

さきほどの2項目には「2147483647」という数字が入っています。

これが、MT4で遡れる過去データの最大値でおよそ10年分相当になります。


 続いて「ツール」の「HistoryCenter」を開き、

検証したい通貨ペアを選択し、最小時間軸である「M1」を選択します。

 さらに過去のデータを入手するために「Download」を選択します。





すると、

「MetaQuotesが提供するデータは、

あなたが使っているMT4サーバとは、

データが異なるがよいか」

と聞いてきますので、「OK」を選択するとダウンロードが始まります。

ダウンロード後、MT4を再起動すると、

無事、過去データが検証に使えるようになります。

「意外と簡単!使ってみようMetaTrader」とは

FX取引をサポートする無料の高機能ツールとして

MetaTraderというソフトウエアの人気が

個人投資家を中心に高まっています。

分析、検証、そして自動売買も実現できる優れものですが、

プログラミングの知識が必要な部分もあり、初心者の方は

「とっつきにくい」

という印象を持たれるかもしれません。

ですが、テクニカル分析をするツールとして使う分には

特にプログラミングを知らなくても大丈夫です。

このレポートでは、初心者の方にとっても分かりやすく

導入方法から使い方までまとめてみましたので、

この機会にぜひMetaTraderの世界を知ってください。

2011年4月30日土曜日

13:シグナルとアラート補足

プログラム知識のある人であれば、

さほど問題にならないのですが、

初心者の方だとなかなか理解が難しいのが、

シグナルの発生条件とアラートの出し方です。


 MAのクロスやMACD、ストキャスティックスなど、

多くのテクニカル指標では、

「○○が□□を上回ったら買い」

「□□が○○を下回ったら売り」

といったロジックを組んだりしますが、

この条件だけでCustomIndicatorやEAを作ると

「○○が□□を上回っている間は買いシグナル」

となり、条件に合致する限りシグナルが発生され続け、

呼応する形で、アラートやメールを設定していると

怒濤のような無限アラートや無限メールが殺到します。

そうした場合は、MT4を終了させて、

Indicatorなどの修正を試みるわけですが、

一番シンプルな回避方法は、

シグナル発生が確定した時にだけ

アラートやメールを発生させることです。

たとえばA線とB線の二本線のクロスであれば、

2本前足で、A線がB線より下(A線<B線)、

1本前足で、A線がB線より上(A線>B線)、

という条件が同時に成立して

現在足の始値がついた時にアラートを発生させます。

 それ以外の方法では、

アラート発生条件の初期値を設定しておいて、

if~の中で条件が満たされた場合に

初期値を返し続けておく方法もあります。

12:メールとアラートについて

CustomIndicatorやExpertAdviserを使って

売買ロジックを作成し、シグナルが発生する度、

アラートやメールで知らせてくれる方法がありますが、

使う時には注意が必要です。


 MT4に、あらかじめ用意されている通知用関数に

Comment、Alert、SendMailがあるのですが、

基本的にレート変動時に1度実行してくれればよいので、

int start()の中に放り込みます。

 alertやmailは、シグナルの発生条件に問題なければ、

コード内の条件分岐(if以下)に埋め込みます。

下にごくごく簡単な例を用意してみました。



各自が設定したAlert_Pointに対し、

価格が上抜けもしくは下抜けすると、

アラームが出て、メールが送られます。

(MetaTraderでコンパイル後、名前を付けて保存し、

チャートにアタッチしてください)

//Alert&Mail_sample---------------------------------------------

#property indicator_chart_window
#property indicator_buffers 1
extern double Alert_Point=0;
double Buf[];
int init()
{
SetIndexBuffer(0, Buf);
SetIndexStyle(0, DRAW_LINE, STYLE_DOT, 1, Blue);
return(0);
}
int start()
{
if(Alert_Point == 0) return(0);
int limit=Bars-IndicatorCounted();
for(int i=limit-1; i>=0; i--)
{
Buf[i] = Alert_Point;
}
if(Close[1] = Alert_Point)
{
Alert(Symbol(), " Target up", Alert_Point);
SendMail("Target UP",Symbol());
Alert_Point = 0;
}
if(Close[1] > Alert_Point && Close[0] <= Alert_Point)
{
Alert(Symbol(), " Target down", Alert_Point);
SendMail("Target Down",Symbol());
Alert_Point = 0;
}
return(0);
}

11:自動売買の長短

MT4を日頃から使っていて、

EAを作成する技術と知識があっても、

MT4で活用しているのはCustomIndicatorどまりで、

トレード自体は裁量で行っている、

という人は少なくありません。


 そうした背景には、

「MT4を採用している日本業者が少ない」

といった事情や

「海外業者で口座を開くのは面倒」

といった理由がありますが、それ以外にも

EAによる自動売買ならではのデメリットがあります。


 まず、EAを使った自動売買を実践するには、

常に自宅のパソコンを起動させて、

EAを動かし続けなくてはならないことが挙げられます。

突発的な停電や機器故障の際には、

EAによるポジションコントロールができなくなるため、

復旧後に再接続したら、

とんでもない損失になっていたということもありえます。


 また、プログラムのコードミスにより、

資産の限り無限に注文を繰り返してしまったり、

予期せぬ場面での発注をしてしまうこともないとはいえません。


 もっともEAを自作できるほどの上級者であれば、

一定時間回線不通が続いた場合の退避方法や

コードミスでも最大のロット数を制限する仕組みなどを

プログラム化できるとは思います。


 そうしたリスクを排除できるのであれば、

やはりEAによる自動売買は、収益の機会を逃さない点で、

かなり魅力的な資産運用方法です。EAを使っている方の中には、

日中は裁量で、夜間や就寝中にだけの主婦や

勤務時間中にだけ使うサラリーマントレーダーがいて、

収益を上げているのも事実です。

10:EAのアタッチ(EA側の設定)

MT4側の設定が完了したら、

Navigatorから使いたいEAを選択し、

チャート画面にドラッグ&ドロップします。



「全般」タブでは、ここでも自動売買する上では、

Ask Manual Confirmationは不要ですし、

Disable alert once hitも

「アラートは1度きりで後は通知しない」という

設定ですので、いずれもチェックを外しておいてください。


「パラメータ」のタブでは、EAのコードで

設定できるように宣言した外部変数部分を変えられます。

特に変更がなければそのままOKを選択します。



上のように画面右上に「ニコちゃんマーク」が出れば、

EAによる自動売買が許可され、EAが正常に作動しています。



ニコちゃんマークではなく、

上のような「怒りんぼマーク?」の時は、

EAは動作しているが、トレードが許可されていません。

MT4とEAのAllow Live Tradingのチェックを確認してください。



このような×の時は、EAが動作していません。

MT4のツールバーで「ExpertAdviser」を押したり、

各種設定を確認して、ニコちゃんマークになるようにしましょう。


ちなみにEA自体はCustomIndicatorのように表示されませんので、

同じロジックで作成したIndicatorを別途、

チャートにアタッチしておくことをおすすめします。

9:EAのアタッチ(MT4の設定)

作成したEAのバックテストや最適化が完了し、

収益が見込めそうだとなったら、

EAをMT4にアタッチして、うまくトレードされるか、

デモ取引で試してみましょう。


 MT4の「ツール」から「オプション」を選択し、

ExpertAdviserのタブを選択すると下のような画面が出ます。



 Enable Expert Advisers:チェックすることでEAが使用可能

 Disable experts when the account has been changed:

アカウントが変更されたら、EAを無効にする

Disable experts when the profile has been changed:

通貨ペアの組表示が変更されたら、EAを無効にする

 いずれも誤動作を防ぐためチェックしてください。

 Allow Live Trading:EAによる自動売買を許可する

 Ask Manual Confirmation:売買の度に手動で確認する

Allow DLL imports:

 DLL(汎用性の高いプログラム部品)を呼び出すのを許可する

 Aloow external experts import:

 外部のEA呼び出しを許可する

 EAによる自動売買を実行する際には、

Ask Manual Confirmationだけ不要なので、

ここだけチェックを外してください。

これでMT4側のEAアタッチの準備は完了となります。