MT4のヒストリカルデータの集め方

ヒストリカルデータ(過去チャート)の入手方法

MT4でバックテストなどを行う際、長期間の信頼できるヒストリカルデータが必要になります。
MT4の「ツール→ヒストリーセンター」からダウンロードできるMetaQuotes社提供のデータは、正確性において評判があまりよろしくなく、他の業者からヒストリカルデータを入手している方も多いかと思います。
FXDDマルタ』や『Forexite』からダウンロードして使用するのが一般的ですかね。

国内業者は長期間のデータを提供しているところがなかなか無いのですが、GMOクリック証券が2007年からのデータを提供していることを今更ながら知りまして、MT4で使用する方法について考えてみました。

少し面倒ですが、国内業者のヒストリカルデータというのも貴重ですので、価値はあるかと(;´∀`)

いつものことですが、私はこの手のことに詳しいわけではありませんので、稚拙な部分があったり、
他にもっと便利な方法もあると思います。そのあたり、ご了承くださいm(_ _)m

ヒストリカルデータの基本的な使用方法

ヒストリカルデータの基本的な使用方法については、沢山解説サイトがありますが、一応おさらいしときます。

1.バックテスト用に、専用のオフラインのMT4を用意
サーバーに接続すると、チャートを更新した時に、サーバーのデータに上書きされてしまいます。
「ツール→サーバー」で、「プロキシサーバーを有効にする」にチェックを入れ、
プロキシの内容はデタラメにしておけば、常に回線不通の状態になってくれます。
「ツール→オプション→チャート」で、読み込む最大バー数を増やしておくこともお忘れなく。

2.古いデータを削除しておく
古いデータと混ざると混乱しますので、データをインポートする前に削除しておいた方が良いでしょう。
「インストールフォルダ→history→○○ Serber」フォルダにある、○○.hstというファイルを全て削除します。

MT4は、アプリを閉じるときにこのフォルダにチャートデータ(hstファイル)を保存します。
ヒストリカルデータをいじるときは、何かをするたびにMT4を再起動して、ファイルを更新しておきましょう。

3.ヒストリカルデータをインポートする
「ツール→ヒストリーセンター」でお目当ての通貨ペアの1Minuteを選択し、インポートします。
終わったら再起動を忘れずに。

4.他の時間足のデータを作成する
各社から提供されているヒストリカルデータは、基本的には1分足のみになります。
1分足のチャートを開き、スクリプト『period_converter_ALL.mq4』を使用すると、1分足のデータを元に、
5分足などの他の時間足も自動で作成してくれます。
標準にない2分足などは、『period_converte.mq4』で個別に作成し、オフラインチャートから開けます。

クリック証券からヒストリカルデータをダウンロード

ヒストリカルデータは、マイページにログイン後、「ツール→ヒストリカルデータ」からダウンロードできます。

GMOクリック証券←口座開設はこちら


ダウンロードしたヒストリカルデータをフォルダにまとめる

クリック証券のヒストリカルデータは、1日分ごとにCSVファイルにされていて、月ごとにフォルダ分けされています。まずは、これらを一つのフォルダにまとめてしまいましょう。

私は、『 Cドライブ > ヒストリカルデータ > データ置き場』というフォルダを作業場として使用しました。
ご自分の環境に置き換えてご覧ください。

まず、まとめたいファイルをフォルダごと『データ置き場』フォルダに移動します。
あまりデータが多すぎると、行不足でエクセルで開けなくなりますので、2年分ごとに行いました。

WS101404.jpg

次に、『200701』『200702』などの各フォルダ内のCSVファイルを、全て『データ置き場』フォルダに移動させるのですが、手動でやっていたら大変なので、バッチファイルを作成して一気に行います。

デスクトップなどで「右クリック→新規作成」から、テキストファイルを作成し、↓のように記述し保存します。

for /r C:\ヒストリカルデータ\データ置き場 %%F in (*) do move "%%F" C:\ヒストリカルデータ\データ置き場


次に、作成したテキストファイルの拡張子を.txtから.batに変更し、バッチファイルとします。
バッチファイルのファイル名や保存場所は任意で構いません。私は『ファイル移動.bat』としました。
拡張子変更後は、右クリックして『編集』を選べば、メモ帳などで内容を編集できます。

WS101406.jpg

もし、ファイル名に拡張子が表示されていない場合は、
『フォルダオプション』の『登録されている拡張子は表示しない』のチェックを外してください。

WS101408.jpg

あとは、作成した『ファイル移動.bat』をダブルクリックで実行すれば、
サブフォルダ内の全てのCSVファイルが、『データ置き場』フォルダに移動してくれます。

WS101411.jpg

空になったサブフォルダが残っていますが、とりあえずそのまま放置して大丈夫。

CSVファイルを一つに結合する

1日ごとのCSVファイルを一つのフォルダにまとめたら、これら全てを一つのファイルに結合します。
これにもバッチファイルを使用しますので、さきほどの要領で、↓を記述したバッチファイルを作成します。

copy /y /b C:\ヒストリカルデータ\データ置き場\*.csv C:\ヒストリカルデータ\結合ファイル.csv


実行すると、『データ置き場』フォルダ内の全てのCSVファイルを結合して、『ヒストリカルデータ』フォルダに『結合ファイル.CSV』を作成してくれます。入出力のフォルダは、必ず違うフォルダに設定してしてください。

1行目にさきほどの移動させる命令を記述して、一つのバッチファイルにしてしまっても構いません。

ちなみに、作成した日時をファイル名にしたい場合は↓のようにします。(2行で入力、○△はフォルダ名)

set time2=%time: =0%
copy /y /b C:\○\△\*.csv C:\○\%date:~-10,4%%date:~-5,2%%date:~-2,2%_%time2:~0,2%%time2:~3,2%%time2:~6,2%.csv


これを実行すると、『ヒストリカルデータ』フォルダに、全てを一つにまとめたCSVファイルが完成します。
『データ置き場』フォルダのサブフォルダやCSVファイルは使用済みとなりますので、削除しておきましょう。

WS101412.jpg

ヒストリカルデータをMT4で読み込める形式に変換する

さて、ようやく一つになったヒストリカルデータですが、残念ながらそのままではMT4で読み込めません。
結合したCSVファイルをエクセルで開くと、↓のようになっています。(見やすいように表示を少し変更)

WS101413.jpg

2007年01月02日07時00分00秒という意味ですが、↓のように変換しないとMT4では読み込めません。
(「日時」「始値」などと記載されている行は無視して構いません。)

WS101420.jpg

時刻は070000でも読み込めるのですが、07:00にしておいた方が編集が必要になった時に楽だと思います。

エクセルの関数で行う場合は、↓のようにすると良いでしょう。

WS101415_2.jpg

=LETFB(A2,8)
=TIME(MOD(INT(A2/10000),100),MOD(INT(A2/100),100),0)

コピーし終わったら、元のA列は削除して詰めておくのを忘れずに。

最後に、時刻の列の表示形式を、「07:00」という形式に変更して上書き保存すれば完成です。

WS101422.jpg


また、これらの作業をマクロに登録して行うこともできます。
【 私がエクスポートしたマクロはこちら → Module4.txt(拡張子を.basに変更してください) 】

マクロの保存方法等については、↓のサイトあたりが参考になるかと。
『エクセルで個人用マクロブックを使うには』

個人用マクロブックに、↓のように記述して保存してください。

Sub GMOヒストリカルデータ()

'BC列を挿入
Columns("B:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

'B1,C1セルに関数入力
Range("B1").Select
ActiveCell.FormulaR1C1 = "=LEFTB(RC[-1],8)"
Range("C1").Select
ActiveCell.FormulaR1C1 = "=TIME(MOD(INT(RC[-2]/10000),100),MOD(INT(RC[-2]/100),100),0)"

'B1,C1セルをコピー
Range("B1:C1").Select
Selection.Copy

'BC列の最終行まで選択して貼り付け
Range("B1:C" & Cells(Rows.Count, 1).End(xlUp).Row).Select
ActiveSheet.Paste

'BC列をコピーして、数値として再度BC列に貼り付け
Columns("B:C").Select
Application.CutCopyMode = False
Selection.Copy
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'A列を削除して詰める
Columns("A:A").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft

'上書き保存
ActiveWorkbook.Save

'強制終了
If Workbooks.Count = 2 Then
ActiveWorkbook.Close savechanges:=False
Application.Quit
Else
ActiveWorkbook.Close savechanges:=False
End If

End Sub


CSVで保存する際の確認ダイアログがわずらわしいので、確認無しの保存と終了まで行います。

マクロなり手動なりで変換が完了すると、MT4で読み込めるヒストリカルデータの完成です。
あとは、必要な分だけこれまでの手順を繰り返してください。


ちなみに、作成したCSVファイルを再度エクセルで開くと、
↓のように、07:00の最初の0が消えて7:00になってしまいます。

WS101421.jpg

この状態で上書き保存すると、MT4で読み込めなくなってしまいますのでご注意ください。
編集が必要な場合は、「セルの書式設定」で「hh:mm」と指定し直してください。

以上、非常に長くなってしまいましたが、自分への備忘録の意味も含めてまとめてみました(;´∀`)
スポンサーサイト

MT4でアラートやシグナルをメール送信する方法

MT4では、指定したレートになった時やシグナル発生時などに、メールを送信させることができます。
今回は、Yahooメールを送信元アドレスとして使用する場合の設定方法をご紹介します。

まず、MT4全体のオプションからメールアドレス等の設定をします。
『ツール』→『オプション』→『E-メール』で、↓のように設定します。

WS000485.jpg

SMTPサーバーには、↓を入力します。『:587』を付けるのがミソのようです。
smtp.mail.yahoo.co.jp:587

他の項目はそのまんまですね。Testをクリックしてみて、メールが届けば成功。
送信先は、携帯メールなど自由に設定できます。



では具体的に、指定したレートになった場合にメール送信したい場合。
『表示』→『ターミナル』→『アラーム設定』で、↓のように設定します。

WS000490.jpg

↑の場合は、AUDJPYのBidが100.000を越えるとメールでお知らせしてくれます。
5分以上の間隔をあけて、最大3回まで繰り返します。

【音声設定】の部分には、AUDJPYなど、適当に文字列を入力します。これがメールの件名になります。
私だけなのか、バグなのか、ここを空欄にするとうまく動作しませんでした。



次に、インジのシグナルなどをメール送信したい場合、インジにメールの設定があればそれをONにする。

メールの設定がないインジに、メールの設定を追加したい場合は、
ソースから↓のような部分を探して、メールを送信する命令に置き換えます。

Alert("○○"); ← アラート画面を出す命令
PlaySound("○○"); ← 音声を鳴らす命令

↓に置き換える。(または次の行などに追加する。)

SendMail("件名","本文");


なんらかの理由で正常に動作しない場合もあるようです。もし動作しなかったらゴメンナサイ。
ちなみに、私が使用しているサーバーは、フォレックス・ドットコムのライブ口座です。ご参考までに。

おすすめMT4業者

▷ 日本時間を採用している業者なら
→ フォレックス・ドットコムジャパン
→ 外為ファイネスト
時差とか面倒くさい!という方は、日本時間を採用している国内業者がおすすめ。
海外業者はブチブチ切断されることも多いですが、国内業者はサーバーの安定性も良いようです。
ただし、日足の区切りが日本時間の深夜0時になってしまうため、週6本になります。

▷ 日足が5本の業者なら
→ FXDDマルタ
日足を重視される方はFXDDマルタがおすすめ。
日本時間-6時間(夏時間は-7時間)を採用していますので、NYCLが日足の区切りになります。
海外業者ですが、日本語でのサポートも充実していて日本人にも大人気。
ただし、鯖落ちが結構多いので、最近は微妙かも(;´∀`)

→ サイバーエージェント
国内業者だと、サイバーエージェントが日足5本に設定されています。
最近サービス開始したばかりでまだ未知数ですが、FXDDよりは安定してるかも。たぶん。

▷ ダウ先、日経先物が見たい場合は
→ Broco(ブロコ)
ど定番ですが、ダウ先や日経先物などをリアルタイムで見たい方はブロコがおすすめ。
詳しくは↓あたりでご確認を。
http://anond.hatelabo.jp/20090826192840
FOREX EXCHANGE

外為オプション

IG証券
・人気の記事
・外為オプション攻略
・プロフィール

名前:ふさふさ

ニートレーダーふさふさです
雑誌で紹介されました (∀`*ゞ)

マネーポスト
(2014新春号)
ダイヤモンドZAi
(2012年11月号)


バイナリーオプションランキング




・カテゴリ一覧
・自作インジケーター
・ブログ内検索 / RSS


*ご注意*
ブログへのリンクはご自由に。
ブログ内で配布しているインジケーター等は
全て無料ですが、著作権は放棄しません。
紹介してくださる方はブログ記事へリンクを。

インジの不具合や、検証数値の記載ミス等による損害が発生しても、責任は負えません。
最終的な投資判断は自己責任にてm(_ _)m


【 バイナリーオプションとは? 】
【 バイナリーオプションのリスク 】

    デューカスコピー・ジャパン