最初に
皆様、初めまして<(_ _)>。
この度、FXやCFDの自動売買を可能にするプログラミング言語、MQL5を使って、
MT5用EA(自動売買プログラム)の作り方をお伝えする講座を始めようと思い立ちました。
※EAとは、エキスパートアドバイザーの略語で、MT4やMT5(メタトレーダー4、メタトレーダー5)などの取引ソフトで走らせる自動売買プログラムのことを指します。
よろしくお願いいたします<(_ _)>
EAで自動売買を始めるようになった経緯
私自身、FX取引自体は、裁量取引で5~6年前からやっていたのですが、仕事の傍らにチャートに張り付いているのにだんだんストレスを感じ出しました。
裁量取引だと自分が取引タイミングだと判断した時に必ずしもエントリーできるとは限らない。
睡眠時間中にチャンスが訪れるかもしれないし、そもそもチャンスが来ても怖気づいてエントリーができないかもしれない・・・。
でももし、自分が今裁量でやっていることを全て自動化できるとしたら・・・
トレードロジック自体は、自分で確立したものがあるし、このロジックをプログラム化して自動売買に落とし込めればそれらの問題はすべて解決するじゃないか!
そんな考えに行き着き、2021年1月思い立って、MQL5の前身であるプログラミング言語、MQL4の勉強を始めました。(2020年一杯で会社も辞めてしまいました(>_<) )
プログラミングの経験がないばかりか、四則演算すら怪しい状態からのスタートでしたが、なんとか半年ほどで、自作で、それなりに満足いくEA(自動売買プログラム)が作れるようになりました。
2021年後半からはMQL4の後継言語であるMQL5の学習も開始し、現在はMQL4とMQL5それぞれの言語でつくった、合計4つのEA(自動売買プログラム)を実践投入しています。
現在金融資産は2000万ほどで、1300万は株式・ETF・投資信託で運用しており、残り700万円をFXのトレード資金に充てています。
トレードスタイルは現在は裁量は一切やっておらず、100%EA(自動売買プログラム)によるシステムトレード派です。
※もし「そもそもシステムトレードって何?」という方がいらっしゃいましたら、↓の記事で詳しく解説しておりますのでご参照ください。
このブログでは訪問してくださる方に、MQL5を使って、自動売買プログラムEA(自動売買プログラム)の作り方をお伝えしていく講座記事を今後UPしていきます。
今回は第0回パイロット版、ということで、
- MQL5に関するブログを始めようと思った経緯
- 今後どういった情報を発信していくのか、
といった事について主に書いていきます。
具体的なプログラミングの文法的な話は次回以降の記事で触れていきたいと思います。
MQL5とは?
そもそもMQL5とは何なんだ、という方もいらっしゃるでしょう。
MQL5というのはプログラミング言語の1種で、c++というプログラミング言語に由来する言語構造を持っています。
そのため、c++をはじめとした、c系言語の経験がある方には割とすんなり、取り組めるのではないかな、と思います。
しかし、その一方で、プログラミングを全くしたことがない((+_+))
という人も、このサイトでこれから始まる講座記事を継続して読んで、そこに書かれているサンプルコードを実際に書いて試しながら勉強していけば、どなたでもMQL5を習得できるようになりますから、安心してください(^^♪
私自身も、プログラミング言語はそれまで触ったこともなく、当然エンジニアでもありません。
最初にも書きましたが、勉強を始めた当初は四則演算さえおぼつかない状態でした。
それでも、それなりには自由に自動売買プログラムを作れるぐらいにはなりました。
なので、
「プログラミングに興味はあるけど、自分にできるかな?」
と、不安に感じている人の背中を押せるような情報を発信していきたいと思っています。
この講座では徹底的にわかりやすい説明を心掛け、なるべく難しい言葉を使わず進めていきます。
MQL5をきちんと1つのプログラミング言語として取り扱い、他のサイトでは飛ばしがちな、プログラミング言語共通の基礎的事項も網羅的に説明しながら、進めていきます。
MQL5に関して、これだけ基礎から網羅的に解説しているサイトは他にはないでしょう。
一度勉強した事でも「あれ、これってなんだったっけ?」と思ったら、すぐにその学習単元に戻れるよう、細かくテキストリンクを張り巡らし、プログラミング学習を諦めないような工夫を施しています。
このサイトに来てくださった方から一人もEA作りに脱落者を出さない気概を持ってコンテンツを作っていきますので楽しみにして頂ければと思います。
MQL5でできること。
MQL5は、
メタトレーダー5(通称MT5)という取引プラットフォーム上でFXやCFDの取引を自動で行えるプログラム、エキスパートアドバイザー(通称EA)というものを作ることができる言語です。
EAとは?
先ほども書いた通り、EAとは、エキスパートアドバイザーの略語で、メタトレーダーという取引ソフトで走らせる自動売買プログラムのことを指します。
下の動画は実際にEA(自動売買プログラム)がどのようなものか、を撮影したものです。
このように、MT5にプログラミングファイルを挿入することによって、自動的にFXブローカーに売買注文を出し、自分の定めたルールに従って、取引をしてくれます。
これは、MT5の、「ストラテジーテスター」という機能を使って、私が作ったMT5用EA(自動売買プログラム)が動作している様子です。
「ストラテジーテスター」はMT5に実装されている、過去の相場データを用いてそのMT5用EA(自動売買プログラム)を実際に運用したら、どうなるのか(損するのか、得するのか)ということを試して検証できる機能です。
※この過去の相場データを使って、システムや取引手法を検証する作業をバックテストと言います。
バックテスト自体について詳しく知りたいという方は↓の記事で詳しく解説していますので、興味があればご覧ください。
MT5ではストラテジーテスターという機能を使い、バックテスト結果をグラフで見ることができます。
グラフだけではなく、取引回数や勝率等、の詳細なデータを数字としても確認できます↓
折に触れて、これらのバックテストレポートの見方についても、ブログで紹介していこうと思います。(ただしMT5用EA(自動売買プログラム)の作り方に関する記事作りを優先しているので、少し先の話になるかもしれません)
※ちなみにこのEAは実際に私が運用しているEAの1つなのですが、
レンジ相場対応のストラテジー1
トレンド相場対応のストラテジー2
というエントリーロジックを実装しており、
その他、
複数のロット(取引量)調整方法
や
複数のトレーリングストップ方法
等も併せて実装されており、それらを自由にONOFFできるようになっております。
複雑にすればより利益が得られるEA(自動売買プログラム)になる、というものではありませんが、MQL5でプログラミングができるようになれば、このように、これまで裁量でやっていたトレード手法や、自分で思い描いた手法を自動売買に落とし込めるようになります。
また、最適化といって、自分が作ったプログラムの各種パラメーターをどのように設定すれば、より利益を生み出すことができるのか?といったことも調整・検証できるようになっております。↓
この、「最適化」という作業をすれば、勝てるEA(自動売買プログラム)が出来上がるのか?というと必ずしもそういう訳ではないのですが、とにかくMT5にはこのように、さまざまな角度からシステムトレードを検証できる機能が設けられているということです。
MQL5を使って、トレードシステムを自分で構築できるようになれば、これらの機能の恩恵を受けられるわけです。
エビデンスの希薄な、高額情報商材で教えられたトレード手法に従って、取引をするよりも遥かに堅実に、腹落ちできる形にFXトレードに挑めることは間違いないでしょう。
今まで説明してきたことは、MQL5を使ってできることのほんの一旦にすぎません。
EA作成以外にも、ざっとあげるだけで以下のような事ができるようになります。
- カスタムインジケ-タの作成: 独自の市場分析ツールとして、特定のトレーディング戦略や分析方法に基づいた、オリジナルのインジケータを開発できます。
- スクリプトの作成: 一度きりの操作や分析を行うためのスクリプトを作成できます。※スクリプトというのは繰り返し実行される必要のない特定のタスクに特化したプログラムです(今は何のことかわからなくても大丈夫です)
- カスタム関数の作成: よく使う計算やアクションを関数として定義し、それを異なるEAやインジケータで再利用することができます(関数については、この先の講座でじっくり解説するので、これも今はよくわからなくて大丈夫です)
- ライブラリの作成と利用: 共通のコードをライブラリとして保存し、複数のトレーディングプログラム間で共有して使うことができます。
- 複雑なトレードオペレーションの実行: MQL5を使って、複雑なトレード条件や管理タスクを自動化し、高度なオーダー管理やリスク管理戦略を実行できます。
- マーケットデータの分析: 過去の価格データや、リアルタイムの価格フィードを分析し、統計的な分析やパターン認識などのアプローチを用いることができます。
- カスタムグラフィックとユーザーインターフェースの開発: MQL5には高度なグラフィックツールが含まれており、ユーザーインターフェースやグラフィカルな表示をカスタマイズすることができます。
- アラートと通知の設定: 特定の市場条件やイベントが発生した際に、アラートや通知を設定し、リアルタイムで情報を受け取ることができます。
上記のような事がMQL5を使ってできる訳ですが、具体的にどのような事を意味しているかはピンとこない人が殆どだと思います。今は「MQL5ってたくさんの事ができるんだなあ・・・」という期待を膨らませて頂ければと思います。
MQL5を習得して、その拡張性の魅力を身をもって実感してください!
MQL5に関するブログを始めようとしている理由
なぜ私が、MQL5に関するブログを始めようとしているのか、という理由を端的に説明すると
出回っている情報があまりにも少ないから。
↑これに尽きます。
既に書いたように、MQL5は拡張性が高く、大いなるポテンシャルを秘めた言語である一方、学習しようにも体系だった情報の発信が本当に少なく、情報を得ようとするとMQL5の公式リファレンスに頼らざるを得ないのが現状です。
そしてどんな分野にも往々にしてあることですが、公式が発信している情報が、お世辞にもわかりやすいとは言えないという問題もあります。
有益な情報が少なすぎて、自分で積極的にアウトプットしていかないと、習得できる気がしない。
それがこのブログを始めようと思ったきっかけです。
自分が学習していく中で苦労したことや、習得する上での勘所などをリアルタイムで発信することで、自分も読んでくださる皆さんにもプラスになるのではないか?(なるといいな・・・)と思っています。
なぜMQL5が広まっていかないのか?
そもそも、なぜそんなにMQL5の情報が少ないのでしょうか?
MQL5の前には、MQL4という言語が開発・利用されていてMQL5の方が最新バージョンです。
が!いまだに旧バージョンのMQL4の方が幅広く使われており、MQL5の普及はあまり進んでいるとは言えません。(プラットフォームであるメタトレーダー5と共に、MQL5が発表されてからもう10年以上経過しているのに、です)
なぜ、前バージョンのMQL4からMQL5への移行が進んでいないのか?、
という理由は細かく挙げれば色々あるのでしょうが、端的に言ってしまえば
- 使い勝手が悪い(わかりづらい)
- MQL4と文法的に、連続性がない(MQL4とは別の言語として学びなおす必要がある)
という点に集約されるでしょう。
例えば、iPhoneの最新版がリリースされたとして、その使い勝手はほぼ前バージョンの延長線上にありますよね?最新版になったからと言って、一日中チュートリアルと首っ引きになるという事態にはならないはずです。
ところが、MQL4→MQL5では、そんな楽観的な想定をしているユーザーに冷や水をぶっかけました。
MQL4とMQL5には、言語構造上の連続性がかなりの部分でなくなっていたのです。
そのような経緯もあり、非常に便利で、拡張性の高い、可能性を秘めた言語であるにもかかわらず、MQL4からMQL5への移行は遅々として進んでいないという状況があります。
ただ、見方を変えればプログラミング未経験者にとってみれば、
MQL4だろうが、MQL5だろうが、プログラム自体が初めてなわけですからその困難さに大した違いはないとも言えます。
MQL4経験者が
「せっかくMQL4でEA(自動売買プログラム)作れるようになったと持ったら、また1から勉強しなくちゃいけない(>_<)・・・」
という心理的な壁を感じやすいのに対して、そのあたりの壁はむしろプログラミング未経験者の方の方が乗り越えやすいのではないかな?とさえ考えています。
現状のMQL5に関する情報の少なさに関しては、私が基礎からEA(自動売買プログラム)制作まで、一気通貫で出し惜しみなく情報発信していくつもりなので、是非最初は難しいと感じても、あきらめずについてきていただければと思います。
<m(__)m>
プログラミングは難しくない
プログラミングに興味があるけど、
「今までやったことないし、きっと難しいんだろうな」
とか、
「自動売買プログラムを作るなんて自分には無理だ!」
という不安や諦めの気持ちを持っている方がいるとしたら、その方に言いたいです。
プログラミングは誰でもできます。
自動売買プログラム(EA)も作れます。
と。
もちろん、めちゃくちゃ簡単だ!、とうそぶくつもりもありませんし、私もいろいろと苦労した部分も多々あります。もっと言えば今も学習中の身です。
ただ四則演算さえおぼつかない状態で、全くのプログラム未経験の状態から独学でMQL5を習得した経験を持っているので、プログラムを始めようと思っている人たちが躓きやすい勘所などは心得ているつもりです。
今悩んでいる人やプログラムに興味はあるけど、躊躇している人を手助けできる情報を少しでも発信できれば、と思っています。
元プロ野球選手しか野球を子供に教えちゃいけない、という法はないですし、MQL言語における「少年野球のコーチ」的立場になれればいいなと思います。
MQL5は目指す成果物が明確な分、実はプログラミングを学ぶのに最適
昨今つとにプログラミングの重要性が説かれています。
プログラミングに興味のある人は、少なくないでしょう。
しかし、漠然とプログラミングを勉強したいと思っても、具体的に形になるもの、何か作りたいと思うものが思い浮かべない人は挫折しやすい、ということもよく言われます。
MQL4やMQL5に関して言えばその点
作るべきものは自動売買プログラム(エキスパートアドバイザー)、という明確な成果物があるわけですから、そのゴールが明確になっている
という一点に置いても、プログラミングを始める上で有利だと思います。
そして、一度MQL5を習得してしまえば、プログラミング言語の基本的な構造はどの言語も大差はないので、ほかのプログラミング言語を習得するハードルも大幅に低くなり、習得時間も短時間で済むでしょう。
難しくはない。けど手っ取り早くはない
ただし、「難しくない」というのは「楽」に、習得できる、ということを意味するものではありません。
(そもそも論として、プログラミング言語を理解して、システムを構築できるということと、収益を生む自動売買プログラムを作り上げることは全然別の話、という問題もあります。裁量取引から自動売買にしたところで、利益を得るためには「エッジのある投資手法」と「適切な資金管理」が必要である、という問題から逃れられるわけでもありません)
一つ一つの簡単な理屈をもれなく積み上げていくという作業には当然ある程度の時間がかかりますし、一つ一つは簡単な理屈でも、それをすっ飛ばしてしまうと、それが途端に途方もなく難しいものに変貌してしまいます。
自分もMQL4の学習を始めたときは、地道な学習を重ねることができず、挫折を繰り返してきました。
だから、1回や2回嫌になってしまい、途中で休むようなことがあっても全然いいと思うんです。
一つ一つ着実にできることを増やしていって、ゆっくり、着実に自分自身の思い描く自動売買プログラムを組むことができるよう頑張っていきましょう!
推薦図書
※このセクションにはプロモーションが含まれます。
ところで「じゃあお前はそんな中、どうやってMQL5を勉強したんだ」と思う方のために一冊参考書籍を紹介させていただこうと思います。
Andrew R Youngさんという方が書いた
Expert Advisor Programing for MetaTrader5という
本です。↓
残念ながら日本語翻訳版は出ていません。
MQL4の参考書はいくつかあるものの、MQL5に関する日本語で書かれた書籍は現状ほとんどないのではないかと思います。
英語ではありますが、MQL4やC言語を習得されている方であれば、中学英語でも大丈夫だと思います。
逆に英語ができてもプログラミング未経験者だと、理解するのは厳しいかもしれません。
MQL5の言語的文法を基本的な部分から押さえてくれていますし、(だからMQL4の復習にもなります。)、MQL5の特徴たる構造体やクラスについても、段階的に解説してくれています。
基礎から応用まで網羅的にカバーしている良書だと感じました。
特に素晴らしいのが資金管理に関するコードベースについて多くの紙面が割かれている事です。
個人的には自動売買の最大の利点がこの資金管理を簡単に行ってくれる事だと思っているので、実践に役立つコード例がふんだんに盛り込まれているのがありがたいですね。
※当サイトのMQL5講座では、
にて資金管理に関するプログラミング記述についても解説していく予定なので、是非お楽しみに講座記事を読み進めていただければと思います。
ただし、書籍の発売から、少々時間がたっていることもあり、現行のバージョンのMT5・MQL5にはそぐわない部分もでてきているので、その点はご承知おきください。<m(__)m>
英語がある程度できてもプログラミングは未経験の人や、逆にプログラミング経験はあるけど、英語は苦手、あるいはその両方という方はよろしければこのブログにお付き合いいただければと思います。
この講座の今後の方針
これから投稿していく記事は、プログラミング未経験者の方が見ることを前提にやっていきますので、MQL4を勉強していなくても大丈夫なようにやっていく予定です。
一方で、MQL4を学んだ人にとっても、結局MQL5を学ぶにあたっては、言語的に違う部分があるので、基礎的な部分から学びなおすのが結局は一番早いと思うのでお勧めです。
MQL4とMQL5で、どの部分が同じでどの部分が違うのか、ということがわからないと結局つまづいてしまうので。
MQL5の基礎的な部分を見ることによって、結果的にMQL4の復習にもなり、MQL4の力も強化されるのではないかなと思います。
ただし、この講座ではFXの仕組みとか、インジケータの細かい計算式だとか、経済指標をどう分析するのか、といったプログラミング言語から外れたFXに関する内容を一から解説するようなことはありません(そもそも自分もそういった内容を語れるほどFXや投資、経済に精通しておりません)。
従って、FX自体の初心者の方や、「MT4とかMT5って何?」という方は、そういったことを解説しているネットなり、動画なり、本なりを見てもらって、まずはFXの経験を積んでいただけたらと思います。
※このサイトを訪問されている方で「そもそもFXって何?」という方は殆どいないかとは思いますが、一応そういう方に向けた、FXの基本的な仕組みについて書いた記事がありますので、下記のリンクをご参照ください
一連の講座記事を見ていけば、自動売買プログラムをある程度自分の力で作れるようになる予定ですが、あくまでプログラミングの構造や原理・原則を説明することを趣旨としたものなので、これから紹介するソースコードを使えば必ず利益を得られるようなことを保証するものではありませんので、その点だけご了承ください。(免責事項を一度確認いただければと思います)
講座のメイン記事では、プログラミング初心者の人が無理なく進められるように厳密さよりもわかりやすさを取って、大胆に省略できる部分は省略して進めていこうかな?と考えています(公式のリファレンスがあまりにもわかりづらいもんですから)。
その一方で、なるべく網羅的に細かい事項も取り扱いたい、というアンビバレントな気持ちもあるので、そういった項目は、メイン講座記事とは別に、補足記事として投稿してこうかなという予定です。
嘘みたいに長くなってしまいましたが、次回以降徐々にプログラミングの具体的な内容に入っていきたいと思いますのでよろしくお願いします。
ここまでお付き合いいただきありがとうございました!!
→MQL5講座第1回「メタトレーダー5とメタエディター5のダウンロード」
—————————————————————————————-
コメント