MT4 バックテスト【最終案内】リアルティックを再現する方法

f:id:miraaaman:20161231051615p:plain

2016年も最後ですね。最後は表題の通りいま海外で主流の、信頼性の高いバックテストの方法「MT4でスプレッドの広がりやスリッページを再現する、バックテストのやり方」を書いて行きたいと思います。

いまさらバックテスト?と思った方も多いと思いますが、本日紹介するバックテストは、前途の通り「スプレッドとスリッページ」が再現出来きます。何がいいかというと、リアルと同じ状況でバックテストが出来るので高い角度でストラテジーを評価することができます。見てもらうのが早いと思うので以下に動画を上げました。

 

 

動画は実際のバックテストを「ビジュアルモード」で表示したところです。まずチャート左上のステータス「Spread 」が 浮動しているのが分かると思います。チャートの Ask ラインも同様。通常のバックテストではスプレッドが固定のためこうはいきません。さらに後半ではMT4の取引ログで、スリッページを確認しています。

もうお分かりだと思いますが、従来の FXDD 1分足や、TickStory のティックデータでは実現出来ないバックテストが出来ます。ちなみにこちらはバックテストの比較です。

f:id:miraaaman:20161231174410p:plain

上はわたしが制作したストラテジーの1つです。バックテストごとに少し差はありますが概ね同じ波形を描いておりリアルでも行けそうな判断が出来ます。

f:id:miraaaman:20161231174433p:plain

次のはストラテジー名は伏せますが、とある方が制作した某ストラテジーです。これを見るとTickDataSuiteでのテストだけ異なるのでリアルではまだ不安が残ります。もしTickDataSuiteを使っていたならば、これを参考にもう一度修繕などの作業が出来たかもしれません。実際わたしはこちらを購入しましたが、なんとなく不安だったので結局フォワードテストもしませんでした。作者的にもまだ改善中のようなので一旦様子を見ている状態です。このように、ストラテジーなどはフォワードテストでダメだったときの出戻りが時間的なコストとして跳ね返ってくるので、可能な限りバックで検証をしておきたいものです。

 

●Birt's Tick Data Suite + True FX ミリセカンドティックでリアルを再現

じゃぁ、このバックテストはどうすれば出来るかというと「Birt's Tick Data Suite」というツールを使います。海外では非常に人気で特に開発者の間では、もはや TickDataSuite で検証を得ていないバックテストやストラテジーは相手にされないくらい信頼の厚いツールです。

使い方は超簡単でもう公式サイトを見てもらえれば分かるので、説明不要だと思いますが、英語が苦手な方のために補足をしておきたいと思います。

1.Tick Data Suite 入手(通常版:有料 / お試し版:無料7日間)

2.ティックのヒストリカルデータを「CSV形式」で入手

3.ティック生成

4.MT4でバックテスト

 

(1)

まず、TickDataSuite を入手してください。通常は有料で「97 USD」します。そして、ライセンス式なので、1回の購入で5ライセンスまで(5回コピー可)で、月々10USDくらいの月額です。要するに「97 USD + 10 USD(月額)」なので本体を購入した後は月額が掛かります。ただお試しもありますので、まずはそちらを使ってみるのがよいと思います。お試し版は「7日間」無料でユーザー登録さえすればダウンロード出来ます。

●7日間 無料 お試し版

https://eareview.net/tick-data-suite/trial

インストールの流れはこちら

f:id:miraaaman:20161231190947p:plain

 

(2)

ヒストリカルデータの入手。TickDataSuite が推奨しているヒストリカルデータはCSV形式で、高解像度のティックデータを推奨しています。ここで紹介されているのは、Dukascopy か Integral のティックデータです。Dukascopy は TickStory で使うティックデータと同じもので、Integral は True FX が提供しているミリセカンドのハイレゾデータです。

もし、真のティックデータで検証したいのであれば、Integral のティックデータをオススメします。おそらく現在、入手できる無料のティックデータとしては最高峰です。True FX は Integral のパートナーみたいで登録さえすれば無料で高解像度のインターバンクティック入手することが出来ます。データはCSV形式です。

リクイディティプロバイダーのハイレズデータになるので、CSV でも 20GB を超えてきます。入手出来る期間は最長で2009年〜現在までとなります。TickStory を使ってる人は、CSV書き出しをすれば2005年〜のデータが落とせます。ただしフォーマットは TickDataSuite 用に変更する必要あります。もし面倒なら以前わたしが紹介した cAlgo からTickDataSuite フォーマットのCSVで書き出すのが簡単で信頼性は高いと思います。いずれにしてもデータの入手には一手間あります。

ただ今回は、せっかくなので True FX から入手する方法を書いておきます。まず下記HPにアクセスしユーザー登録をしてください。任意のユーザーネーム、名前、メールアドレス、パスワードを決めて送信するとログインできます。

True FX

f:id:miraaaman:20161231153243p:plain

f:id:miraaaman:20161231153839p:plain

ログイン出来たら上の「Downloads」ページに行きます。Downloads ページでは、年代別・通貨別・月別で小分けで CSV がダウンロード出来るようになっています。超大変ですがここから地道にダウンロードします。コツとしてはもし Mac を使ってる人なら、Safari でログインすれば、リンクを触るだけでダウンロードが始まるので、いちいち要求を聞かずに済みますしダウンロードがとても楽になります。ダウンロード後の解凍やリネームも複数ファイルまとめてボタンひとつでMacは出来るので、とても楽だと思います。Winの人は頑張るしかないです笑。ちなみにDLツールは使わないほうが良いでしょう。サーバーは貧弱で頻繁に落ちていますので、毎回DLツールを使われ落ちてるのだと推測できます。落ちたらそれはそれで面倒なので1個づつやるのが安全です。

さて、無事ダウンロード出来たら CSV を年代別に繋いで1つのCSVファイルにします。何か CSV連結ソフトなどがあれば更に楽でしょう。もしそれも面倒な人は、ここでも紹介されているやり方ですが、コマンドプロンプトから直接連結するのが簡単かつ高速だと思います。ギガサイズの CSV でも一瞬で終わりますのでオススメです。PC画面右下 Windows マークを右クリックで「コマンドプロンプトを選択」→「黒い画面を開きます」この後の作業フローは下記の動画をご参考ください。 

f:id:miraaaman:20161231162022p:plain

 

 

●CSV連結のやり方

コマンドプロンプト(黒い画面)を開き、連結したいファイルが存在するフォルダーへ移動します。移動するには、黒い画面で「cd」と入力した後、半角スペースを入れ、フォルダーのパス(フォルダーのURL)をコピーして貼り付け → Enterキーを押します。するとフォルダーへ移動したことになります。移動したら今度は「type」と入力、半角スペースを入れた後に、連結したいファイル名を拡張子付きで、順番に黒い画面に入力していきます。ファイル名とファイル名の間には半角スペースを入れて区切ってください。ファイル名を全部入力できたら「>」の半角大なり記号の後に連結後のファイル名を入力して→ Enterキーを押してください。しばらくすると、またフォルダーの位置を示す状態になって作業が終了します。

cd C:UserspcDesktopTickData

Enter キー

type EURUSD-2011-01.csv EURUSD-2011-02.csv EURUSD-2011-03.csv > EURUSD.csv

Enter キー

 

(3)

連結CSVが出来たら、今度は「ティックの生成」をします。ティックの生成とは、CSVからTickDataSuite 専用の「FXTファイル」を作ることを指します。CSV2FXT と呼んでいるみたいです。FXTファイルはバックテスト時にティックを再現するためのプログラムです。FXDDでバックテストをする時も1分足から hst ファイルを生成しますよね。あれと同じです。TickDataSuite が愛されてる理由はどうやら実際の値動きを合成してつくるみたいです。そのためリアルなティックに仕上がるみたいです。さて、まず下記サイトからスクリプトをダウンロードしてください。

スクリプトのダウンロード

f:id:miraaaman:20161231171620p:plain

ダウンロードしたスクリプトファイル「csv2fxt_v0.50.zip」は解凍し、ファイルの中身をMT4/MQL4フォルダにコピーします。ファイルはそれぞれ対応したフォルダに入れてください。

f:id:miraaaman:20161231172324p:plain

そして、さらに MT4「MQL4」フォルダ内の「Files」フォルダーへ先程つくった「連結済みのCSVファイル」を格納してください。出来たらMT4を再起動します。MT4を再起動する際には、このエイリアス経由でMT4を起動してください。これによってMT4がTickDataSuite 仕様になります。MT4の上に「TickDataSuite v1.4.x」などが表示されていればOKです。

f:id:miraaaman:20161231183936p:plain

MT4が起動したら、ティックを生成したいチャートを開いてください(EURUSD.csv)を使うならEURUSDチャートを表示します。この時MT4は必ずオンラインで行ってください。オフラインでは機能しません。(※休日などでマーケットがクローズしている時はティックの状態は若干異なります。)

続いて、ナビゲーター欄の Scripts から先程格納したスクリプトファイルをダブルクリックして開いてください。するとパラメーターセッティングが出てきます。パラメーターの説明は、下にURLを張っておきますのでご参考ください。

分からない人は、もうこのパラメーターをを丸写しでも良いです。ただし注意して欲しいところは、パラメーター上から2段目の「CSV filename」です。こちらは、Files フォルダに入れた「連結済みCSV」のファイル名と一致する必要があります。拡張子も忘れず入力してください。ティックの生成には若干時間が掛かります。進行具合はチャートに表示されます。たまにティックの抜けなのか不整合アラートが出るかもしれませんが、全部OKにして飛ばしてください。ティック生成の完了時もFXTファイルを上書きするか(存在する場合)聞いてくるので、全部OKにしてください。このティック生成は一度やってしまえば次回からはやる必要はありません。ただしCSVファイルを変更した場合や別の通貨でやる場合は、その都度ティックを生成してください。通貨を増やすと数百ギガに達する事もありますのでご注意ください。

f:id:miraaaman:20161231182009p:plain  

f:id:miraaaman:20161231183245p:plain

 

これにて、作業は完了です。あとは通常通りバックテストすることが出来ます。バックテストの期間はCSVファイルの期間に限定されます。

 

●Tick Data Suite の取説 & パラメーターの解説(公式)

https://eareview.net/tick-data/convert-tick-data

 

 

以上、まだ書ききれなかった事はたくさんありますので、後日また情報はアップデートしていこうと思います。TickDataSuite はわたしもまだ使い始めて半年くらいなので、分からない事はありますが、もしご不明点や作業効率をご希望の方はお気軽にお問い合せください。

 

 それでは良いお年を。

 

MT4 EA を cTrader cAlgo に移植しやすいAPIを開発中

f:id:miraaaman:20161225170601p:plain

ほとんど人は MT4 ユーザーでアルゴといえばEAを使ってると思います。おそらくですが MT4 の次にメジャーなプラットフォームといえば cTrader ではないでしょうか。

個人的に cTrader は最近よく使っていて、使えば使うほどその良さや開発のしやすさが分かってきます。正直なところもう MT4 には戻りたくないというくらい。とくに開発においては。いままで MT4 で出来た事が cTrader では出来ないと思っていたのですがそのような事もなく以前よりもストレスなく開発ができます。

ただEA開発者がcAlgo開発に挑戦する上で二の足を踏む理由は「開発言語の違い」です。MQL言語に慣れ親しんだ方は、APIの扱いやお作法がかなり違うため、なかなか移れずにいます。というか、そもそもMT4でいいし移る気なんてないよと思ってる人は多いと思いますが笑。しかしこれはかなり勿体無いなくて、cTrader では MT4 で出来ない事が簡単にできたりするので、慣れていくとその良さに気づくと思います。

とはいえ、いまから cTrader を覚えるのは面倒くさいというのは普通だと思います。ということで、MT4(MQL)開発者が、cTrader(cAlgo)に移行し易い API を開発中です。上の画像はまさにいま作ってる cAlgo の画面です。これやってみて思うのですが、かなり鬼畜です笑。

そして、やってて分かるのですが、MQL ってムダな記述が多いんだなって。まぁ当時は普通だったのかもしれません。また職人クラスであれば深いレベルで要求を投げれるのは良いんですが、そもそも毎回そこまでの要求は必要ないのが現実です。しかも同じような要求を毎回投げる事の無意味さに気が付きます。という意味では、近代の言語仕様である cAlgo は秀逸です。

というわけで、自分の開発方針として、MQLを触ってきた人が簡単に使えるような仕様を目指していますが、MQL で面倒だった記述を簡略化しむしろ cAlgo 仕様にしようと思っています。まぁ圧倒的に cAlgo のほうが短い記述で済むのでAPI仕様は「MQL風 cAlgo」という事になると思います。cTrader でもストラテジーを作ってみたいという人はご期待下さい。

MQL をそのままコピペで cAlgo にしたいという人は「MQL4 to C#」というサービスがありますので、簡単にとりあえずやってみたいという人はそちらを試してみてはいかがでしょうか。これもかなり優秀なサービスで、簡単にcAlgo化できます。ただ完全なコード変換は出来ないようで、たまに出来ないものもあります。ただしコードがかなり複雑なのでどこを直していいか分からないのと、何が原因で変換出来ないのかは教えてくれないので、ある意味大切なコードを吸い取られて終わり(サービス提供者のサーバー上で変換される→つまりコードはあっちに保存される)という悲しい結果を覚悟する必要があります。まぁそれが嫌なら自分で書きなさいという事だと思いますが笑。

あと、こんな感じのAPIなら使いたいとか、こういう仕様ならいいなどがあればコメント残してもらえたら、何か参考になるかもしれません。ぜひコメントよろしくお願いします。

 

 

全自動 & 無料 インターバンク情報をMT4に表示するアプリ

インターバンクの大口発注情報や機関投資家のオプション情報などを、自動でMT4にライン表示できるアプリ「みんなのライン」をつくりました。無料です!

無料 自動【みんなのライン】MT4専用 インターバンク情報 ライン表示ソフト/ DLmarket 

DLmarketで購入

【みんなのラインとは】

みんなのラインは、インターバンクの発注状況を自動でライン表示できるMT4専用のソフトです。機関投資家の大口オーダー や、オプション期限などを、MT4のチート上で確認する事ができます。

f:id:miraaaman:20170810050107p:plain

 

【ソフトの特徴&新機能】

 ●自動更新

情報の取得、MT4のライン更新は全て自動です。

●文字やラインの色を変更できる

文字色の設定や組み合わせは自由に変更可能です。

●簡単操作(新機能)

誰でも簡単に使うことが出来ます。また、旧バージョンにあった難しい操作もなくなりました。

●少し前のラインを表示できる(新機能)

通常のラインに加え、更新前のラインも切り替えによって表示することが出来ます。これによって、どのラインに更新があったのか分かりやすくなりました。 

f:id:miraaaman:20161005122214p:plain

更新前のラインは灰色で表示される

●前日の高値&安値をボックス表示できる(新機能)

パラメーター切り替えによって、前日の高値と安値の範囲をボックスで表示させる事ができます。

f:id:miraaaman:20161005122320p:plain

ボックスの色は変更可能です

 

●「みんなのライン」ダウンロードはこちら(無料)

www.dlmarket.jp

 

●セットアップ方法はこちら

miraaaman.hateblo.jp

 

※情報の取得には「トレーダーズ・ウェブ」のサイトから取り込んでいます。個人で利用・閲覧する目的でのみのご利用をお願い致します。トレーダーズ・ウェブが気に入った方は会員の有料サービスもあるようなので有料登録してもよろしいかと思われます。この情報取得は非公式のため突然終了する場合がありますが予めご了承お願い致します。

 

cTraderからティックデータを抜き出す方法

(こちらの記事は、開発者向けの掲示板に投稿した内容と同様です)

 

最近ティックデータをいろいろなところから集めています。

本日は、cTrader からティックデータを抜く方法を考えたので共有したいと思います。

 

まず、ティックデータの入手は、意外と手こずるもので信頼性あるデータを探すのは容易ではありません。場合によっては有料だったりもします。最もポピュラーなものは、Dukascopy / JForex のティックデータ か、Ture FX / Integral だと思います。どちらも無料で入手できるわりにはハイクオリティです。

ひとによってはFXCMのティックデータを所有している方もいるかもしれません。FXCMのティックデータは、有料(扱い)のようで、基本スタンスとして無料じゃないようです。ですが、FXCMのティックデータは期間も長い上に大手ブローカーという意味で、ここのデータがいちばん良さそうとは思っています。が、入手は困難です。

そこで、Dukascopy や TrueFX よりも簡単に!? ティックデータを入手する方法を考えました。もしかすると既にやってる人もいるかもしれません。この方法であれば、異なるプラットフォームからも同様に入手可能かもしれません。何かアイデアや情報をお持ちの方がいましたら共有いただけるとうれしいです。

 

 

【cTrader からティックデータを抜き出す方法】

 

cTrader は、もともとティックデータでバックテストができます。そこで CSVをファイルをローカルに書きだすcAlgo ロボットで、抜き出したい期間バックテストすれば任意のフォーマット、任意の期間自由にティックデータを抜き出すことができます。

 作成したロボットは、 シンボルとミリセカンドのタイムスタンプ付きでBidとAskを書きだすものです。書き出すフォーマットはいろんなバックテストの仕様に合わせて以下のフォーマットでやっています。

 

EURUSD,20160823 00:00:02.291,1.13167,1.1317

{Symbol},{Timestamp:yyyyMMdd HH:mm:ss.fff},{BidPrice},{AskPrice}

 

以下コード cAlgo で ビルドしてください。

(ビルド済みデータも添付しておきました→掲示板から落としてください)

書き出し形式やフォーマットを変更したい人は任意で変更してください。

また、最初から長い期間バックテストをすると途中で止まることがありますので、小刻みにやってください。長い期間取りたいひとは二回目からは早いので、小刻みやって全期間一度やったあとにもう一度通しでやると全部引っこ抜けます。

期間は、FxPro が最長で、2012年1月~現在まです。