実践MQL

解説・方法

実践 MQLでは、EA作成の環境構築から始め、基本的な EAの作り方を学習していきます。

教材として作成する EAは「買いのみトラリピ EA」です。「買いのみトラリピ EA」には EAを作る上で基本的な内容が組み込まれています。

プログラムは 70行程度、インジケータ無し、ロジック (いつ新規取引をして、いつそれを決済するか) も分かり易い EAなので学習しやすいと思います。また、この EAは実際の取引にも使うこともできます。

EAを作る時は MetaEditorを使って MQL4言語で書いていきます。

実践 MQLの「買いのみトラリピ EA」のプログラミング練習は、EA作成の基礎になりますので次の手順で環境構築から始めて EA作成の練習にしてください。

環境構築

MT4をパソコンへインストール済みの人はこの章は省略してください。


MT4を使うパソコンにダウンロードします。基本的に MT4は WindowsOS用に作られていますので WindowsOSを使うことをお勧めします。

MT4をダウンロードしてインストールするだけで FXの取引、EA (自動売買システム) の作成が可能になります。

MT4は国内業者、海外業者で扱っています。国内の FX会社では MT4が使えるところは限られています。

また、FX会社ごとに取引方式やスプレッドの広さ、スワップの大きさに違いがあるのでご自身のトレードに合った FX会社の MT4を選んで頂ければと思います。

各 FX会社の MT4の特徴 および ダウンロード方法は次を参考にしてください。

MT4のインストールは各社の基本情報の表の一行目「MT4ダウンロード」からできます

EAの作成は必ずデモ口座を使って作成するようにしてください。EAの作成後においても実環境でテストを行なうのでデモ口座は必須です。

MetaEditorを使ったプログラミングの流れ

ここでは MT4インストール後の MetaEditorを使って簡単なプログラムを書きます。
MT4を開いて、次の「初めての MetaEditor」を参考にして MetaEditorを動かしてみてください。

「初めての MetaEditor」に記載されていますが、EA作成の基本文型となるものなので覚えておきましょう。因みに管理人はいつもEA作成の基本文型からコピペしています。

MQL4の基礎

データ型と変数

MQL4では、データ型は変数のタイプを知らせる(宣言する)ために使用され、これは変数にどのような種類のデータ型 (数値、テキストなど) を使えるかが決められることになります。

基本的なデータ型の種類についてはこちらを参考にしてください。

変数はこれらのデータ型を使用して宣言され、プログラム内でデータを格納するための「容器」として機能します。

例えば「int ticketNumber;」は、整数型の変数 ticketNumberを宣言したことになります。

中級者以上を目指す段階の方はこちらの変数の使い分けも確認しておくとよいでしょう。

演算子と式

演算子は数値や変数に対する操作を行います。MQL4には「数学演算子」「関係演算子」「論理演算子」があります。難しいものではありませんのでそれぞれのリンクから確認してみてください。一覧表はこちらです。

よく使う処理プログラムの学習

関数の定義と使用

関数は特定のタスクを実行するための MQL4で予め準備されているコードです。準備されている関数は約 450個あります。関数の一覧はこちらから確認してください。

また、MQL4では自分で関数を作成して必要に応じて呼び出すことができます。これによりコードの再利用が可能になり、プログラムの整理と保守が容易になります。

例えば、特定の計算を何度も行なう場合、その計算を関数にまとめて必要な時に呼び出すことができます。例としてこちらのコードを参考にしてください。

24行目から 37行目までの「void draw() {…}」と 39行目から 43行目までの「int end() {…}」が作成した関数になります。

売買注文の関数

EAを作成する時に必ず使用する売買注文の関数を使って注文するプログラムを学習してみましょう。

条件と繰り返し処理のプログラム

条件分岐と繰り返し処理については、if文と for文の2つを覚えておけば十分です。この2つでほとんどの処理が可能だからです。

if文は条件分岐、for文は繰り返し処理を行なうコードです。その他にも処理方法はありますが、それらを使うとスマートなプログラムになるくらいで、if文と for文で代替できてしまいます。

ですので、初心者は if文for文を徹底的に使って、使いこなせるようになることをお勧めします。

EAの作成

ここからは実際に取引可能な EAとして「買いのみトラリピ EA」を作成します。

実践的な EAのプログラミングです。これには前章の「MQL4の基礎」と「よく使う処理プログラムの学習」の内容が使われています。

全体を把握するために最初はコピペでもいいですが、2回目以降は実際に書いてみるとより理解が深まるでしょう。

「買いのみトラリピ EA」を使うのであれば、こちらの 決済・キャンセル EA を合わせて使うと作業が楽になるので学習するついでに使ってみてください。

作成 EAの動作確認テスト

これまでに作った EAは、きちんと動作するかテストする必要があります。また、動作確認も大事ですが、作った EAが利益を出せるシステムなのかも検証しなければなりません。

以下では、MT4の機能を使って、作成した EAの動作確認テストについて解説します。

ストラテジーテスターを使ったテスト

MT4では過去のデータを参考にして作成した EAの動作をシミュレーションすることができます。

これにより実際の相場で EAを動かしたときに利益が出せるロジックであるかを判断することができます。また、作成した EAなどでは設計したとおりに EAが動いているかの確認ができます。

ですので、EAを作成後、必ずストラテジーテスターでテストをして利益が出せる、設計した通り動くEAなのかを確認する必要があります。

ストラテジーテスターによるシミュレーション

ストラテジーテスターを使ったシミュレーションの方法です。シミュレーションをすることで動作確認と利益が出せるシステムなのかを検証します。

デバッグ処理

ストラテジーテスターのシミュレーションで設計した通りに動いていれば問題ないのですが、動いていない場合、どこに問題があるのか探す必要があります。それをデバッグ処理と言います。

ストラテジーテスターを使ったデバッグ処理は少々面倒ですが、必ず必要になりますのでマスターするようにしてください。

デモ口座による動作確認テスト

ストラテジーテスターのシミュレーションで問題が無ければ、デモ口座で EAを動かしてみます。最低でも一週間 (月曜日朝の開始前~土曜日朝の終了) は動かして設計通り動いているか確認してください。

デモ口座で EAを稼働

デモで動かす期間は、設計したロジックの内容によるので、その内容に合った期間でデモを行なうようにしてください。例えば、一ヶ月に一回くらいの取引しか発生しないのに一週間のデモ期間では短すぎるということになります。

MetaEditorを使ったデバッグ方法

ストラテジーテスターによるシミュレーションで問題なく、デモ取引による動作確認テストで問題が発生した場合は、MetaEditorを使ったデバッグを行なう必要があります。

修正が完了したら適切な期間で再度デモ取引を行なって設計どおり動作するか確認するようにしてください。

動作確認テストは重要!! まとめ

動作確認テストにおいては、エラーの発生、設定どおり動作しない、利益が出せないシステムであったなどのことを発見することができます。エラーの発生や設定どおり動かないなどのバグはコンパイルエラーと違い、プログラムに構文上の問題が無く動くのでバグを見つけ出すことは大変です。特に再現性がないエラー、再現させることが難しいエラーでは上級者の人でもバグを見つけ出すことは困難になりますし、時間もかかかります。しかし、プログラムを組む以上避けては通れない非常に重要な作業になります。

バグの内容も千差万別であり、このようにすればバグを発見できて修正ができるとは言えないものです。しかし、時間はかかりますが、最初からプログラムの動きを追っていけば、そこでどのような現象が起きているか分かり、それが分かれば対策ができるようになります。

エラーを出さないためにも、作成した EAについては次の1~3の作業は必ず行なってください。

1.コンパイルエラーを無くす。

errorはもちろん warningも必ず無くすようにしてください。このとき「#property strict」を省略することはしないでください。

よくあるのが、自身が意図しないところでデータ変換に誤りがあり、小数点以下の桁が削られてるといったことがあります。「#property strict」を記載しておくことで未然に防ぐことができます。

2.ストラテジーテスターでテストをする。

これを使うことで、ある一定期間での過去のチャートデータでシミュレーションができるので、自分が作った EAがロジック通り動いているか確認ができます。

多くのエラーはここで発見して解決することができますが、と言うかここまでで発見ができないと今後、エラーを見つけることが困難になります。ただ、スプレッドやスワップの変動を組み込んだ EAの場合は、ストラテジーテスターでは固定値になるためチェックすることができません。

例えば、設定値以上にスプレッドが開いたら新規取引はしないプログラムなどが該当します。この場合は、スプレッドが設定値未満の場合と設定値以上の時のスプレッドでそれぞれテストして確認するしかないです。

動作に問題が発生したらストラテジーテスターでのデバッグを参考にしてエラーを発見して修正していってください。

3.デモ口座でテストをする。

デモ取引で動かす期間は EAのロジックによりますが、現在動いている相場のデータを使うことになるので目安として 1週間から 1ヶ月くらいは見た方が良いと思います。

デモ口座ではストラテジーテスターと違い、スプレッドやスワップ、為替の急な変動などがあります。また、業者によってはスリッページが効かないこともあります。

これらを含めてご自身が作成したプログラムに問題が発生しないかを確認する必要があります。動作に問題が発生した時は、その期間でのストラテジーテスターでのデバッグ 及び、MetaEditorを使ったデバッグ方法を参考にしてエラーを修正してください。

リアル口座での取引開始(完了)

以上でリアル口座で EAを動かすまでの作業は完了です。実際のリアル口座で作成した EAを使ってみてください。

これで EA(自動売買システム)を作ることができるようになりました。

プログラムを書くときは最初はざっと書いて取りあえず動くようにするのでも良いですが、最終的に仕上げる時はコメントなどを入れて整理して書いた方が良いです。後から見直した時に修正がやり易くなることと、雑多に書いてあるとその中にエラーが隠れることがあるからです。

本内容は基本的なことなので繰り返し学習することをおすすめします。

ストラテジーテスター、デモ口座のテストで問題が無くても、それはストラテジーテスターとデモでのテストを行なった期間で問題が無かったというだけで、その EAに全く問題が無い、エラーが発生しないということにはならない点にご注意ください。

これは、これからの未知な変動に対しても問題がないと言えないからです。

ただ、このようなことを言い出すとどのような EAも本番では使えなくなりますので、最低限、ストラテジーテスター、デモ取引で問題が無いことを確認して EAプログラムのデビューを果たしてください。

Good Luck!!


おまけ

本ページで紹介した「買いのみトラリピEA」を使うと取引をリセットしてやり直す場合、注文数が多すぎて注文の決済やキャンセルをする作業が大変になります。デモ口座でテストを繰り返す場合は特に大変です。

そこで、それらの注文を一括決済、一括キャンセルする EAを以下で紹介しておきます。「買いのみトラリピEA」よりもコードが短く分かり易いので EA作成の練習として是非挑戦してみてください!

タイトルとURLをコピーしました