ホーム> FX >どのようにMT4プログラミングができるようになったか?【後編】

どのようにMT4プログラミングができるようになったか?【後編】

~前編はこちら~

5.求められるスキル
自分でプログラミングを作るようになり感じたスキルです。

英語
英会話は求めてません。読めるようになるだけでいいです。Google翻訳を使えばいいという考えもありますが、読めないと辛いです。というか、プログラマーは基本英語ができます。主語+動詞+目的語と、ロジカルに読みます。どこまでインジケーターを作るかにもよるかもしれません。結構海外のサイトを読んだりしますので、自然と読めるようになります。

論理的思考
具体→抽象化、帰納法とか、まとめる力が求められます。またはMECEのような「漏れなく、ダブりなく」の考え方。いかに矛盾なく整理できるか。そして短く簡潔で、分かりやすいか。プログラミング的思考とも言えるのかは、微妙なところ。とにかくミニマリストのような無駄なものは徹底排除する思考。でも先を見越して残すことも大事です。

調べるスキル
分からないことが必ず出てきます。まずはGoogle検索で調べることになるでしょう。その他、本とかでもあるかもしれません。自分で調べられるか、もしくは人に聞くか、いろんな方法が考えられます。それができるようにならないと時間だけが経ちます。

その他
誰かに聞く場合、信頼できるグループに所属していた方がいいわけですし、そのときにコミュニケーションスキルとか、伝達力があるといいでしょう。 またアイデアを出す必要があるので、発想法など知って実践しておきましょう。


6.MQL4とMQL5の違い
MT4はMQL4言語、MT5はMQL5言語となります。
非常に似ていますが、全く違う言語です。ただMQL4ができれば、MQL5もなんとなくできます。時間はかかりますが。
どちらから学べばいいかは、どちらでもいいです。MT4を使いたいのであれば、MQL4。MT5を使いたいのであれば、MQL5です。

今後はMT5がメジャーになるかもしれません。現に少しずつですが、MT5対応の業者が増えてきました。しかし完全に移行となるかは、正直先のことなので分かりません。そしてオープンソースで公開されている資源で言えばMQL4の方が多いです。見つけやすいでしょう。しかし、ここ最近、MQL5も確実に充実してきました。MQL4を超えるまでもいかないですが、トレンドはMQL5になっているのは事実です。


7.オープンソースで公開しているお薦めサイト
いちばんお薦めなのが、MT4/MT5の公式サイトになります。

情報も世界中から集まっており、私も何度もお世話になっております。自分が求めるインジケーターも似たようなものがあるはずです。それをダウンロードしてみてください。
ただ英語のサイトであるので、質問などは英語になります。なので英語は使えるといいと思います。

そして情報が集まっているサイトで有名なのが、この「Forex Factory」です。こちらも有名でしょうか。多くのソースコードがあったり、手法が載ってあったりします。

日本語のサイトでソースを公開しているところも探せばあります。


8.さぁMQL4プログラミングを始めてみましょう。
さて、具体的に私がやってきたこと、お薦めの方法などをお伝えしようと思います。

①まず「新MT4対応 FXメタトレーダープログラミング入門」を買って、一通り読んでください。1回読むだけでいいです。理解できなくても構いません。どんな感じでコードが作られているのか感覚だけでいいです。

②次に載っているコードをそのまま書いて、コンパイルして表示させてください。そのまま真似するだけです。写経です。そして作ったファイルをコピーして、少しずつコードをいじっていきましょう。色を変えるとか、何でもいいです。ちょっとしたことでいいです。

③そして、プリント関数「Print("文字列")」を頻繁に使いましょう。変数の値がどうなっているか、うまく機能しているか、大まかなことは分かります。下のコードをコンパイルして、インジケーターを表示させてください。

//+------------------------------------------------------------------+
//| test.mq4 |
//| FX手とり |
//| https://tetori.jp |
//+------------------------------------------------------------------+
#property copyright "FX手とり"
#property link "https://tetori.jp"
#property version "1.00"
#property strict
#property indicator_chart_window

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
Print("test1");
//---
return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
Print("test2");
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+

サーバーが動いているとき、ターミナルのエキスパートで以下のように表示されるはずです。

このターミナルからだされた結果を常に意識している感じです。何かあればPrint関数です。

④あとは自分でトライ&エラーの繰り返しです。他人が作ったオープンソースを見ては真似して、学習して、取り入れるような感じです。
これをずっと繰り返してきました。1年続ければ十分なインジケーターは作れるはずです。あとはアイデア次第。とにかく作っていくことです。


9.中級、上級への道
中級になるとさらに複雑な描写ができます。そして外部のAPIサービスを使いながらトレードであったり、分析ができます。
今後はトレードをAIに任せるということも可能になるでしょう。
そして作ったものを売ることができます。インジケーターであったり、EAであったり、売ることで収益を得られます。

しかし、本当にそこまでの技術が必要なのか考える必要があります。実は初級レベルでもアラートを鳴らしたりすることは十分にできます。求めるものが高いレベルのものであれば、当然必要ですが、そうでないなら必要ありません。他にやることもあるでしょう。目的は何なのか。トレードに勝つことであれば、そこに集中すべきです。


10.終わりに
私はMT4/MT5のインジケーターに関しては全て作れるとは言い切れませんが、自分の作りたいものは大まか作れるようになったかと思います。作り続けて10年以上は経ちましたでしょうか。今ではMQL4かMQL5を毎日のように扱ってます。そのおかげもあってレベルはかなり上がったのではないかと思います。おかげでトレーダーの仲間も増えました。学びたいという人も増えました。プログラミングができるようになり、嬉しいことが多いです。トレードだけでなく、仕事も得られます。そして作ってほしいと言われて作ることで貢献できます。

思い通りのインジケーターやEAを作ってみてください。トレードについて、相場について知れる機会が増えます。何度も検証してください。バックテストしてください。
しかし、ここまで読んでもらって申し訳ないのですが、プログラミングができるからと言って、勝てるとは限りません。プログラミングができる人が勝てるのであれば、世界中のプログラマーがトレードしてますよね。逆にプログラミングが出来なくても勝てている人はたくさんいます。トレンドラインや水平線、フィボナッチリトレースメント。すでにある移動平均線や一目均衡表などなど、わざわざ作らなくても裁量で勝てている人はたくさんいます。逆にインジケーターやEAに頼らずに勝てるのが理想ではないでしょうか。長期投資であればプログラミング必要ですか。週に1回、月に1回チャートを見るぐらいだったら、アラートする必要ありませんよね。各FX業者も素晴らしいツール、サービスを出しています。そういったものをうまく使いこなすことで代用できたりします。

私はプログラミングをやるやらないに関わらず、どれだけ目的、目標をもって、本気でやれるかどうか、そこに左右されるのではと思ってます。100万円出して習ったとしても、やる気がなければ意味がありません。本当に作りたい、何が何でも作りたい、その気持ちがなければ結構苦しい思いをします。挫折します。トレードについても同じことが言えます。本当に勝ちたいですか?
自らが主体的になって道を開拓していけば、新しい発見が生まれます。根本的な原理原則は変わりませんが、私自身多くの気づきを得ることができました。なぜそう言えるのかというと、人間の本質的な部分は今も昔も変わらないのですが、時代と共にどんどん新しく技術が変わるからです。コロナのような想定外のことも起こってます。今後も変わらない軸となる部分は残しつつ、世の中の情勢、変化に対応するために必要なものを取り入れ続ける必要があると思います。柔軟に対応して続けるためにも、一つの手段としてプログラミングができるうようになって良かったと価値を感じています。

子供達がプログラミングを始めるようになってきました。2020年からプログラミングの学習が必修科目となりました。プログラミング的思考と言われるもので、実際にプログラミングをするわけではありませんが、ゲーム感覚で新しい問題に対する解き方を今までの体験、法則を通して自らが考え導き出していくこと。これからはプログラミングができて当たり前になるのかもしれません。
お金を増やす、お金を得るという目に見える人間の欲と、投資系のプログラミングがリンクするとき、リアルマネー”ゲーム”となります。子供たちにそんな教育できませんが、大人は理解し、チャレンジできます。私はこの楽しいゲームを多くの方にやってもらいたいです。ただし、難易度はハードモードになりますけど。


著者プロフィール
「FX手とり」手っ取り早く、時には手取り足取りFX・CFDを
「手とり」には「手っ取り早く」という意味と、「手取り足取り」という2つの意味が込められています。疑問に対する答えを手っ取り早く提供する、あるいは順を追って手取り足取り解説する、2つのニーズに応えます。


本稿は筆者の個人的見解に基づき、執筆されたものです。あくまでも個人ユーザー向けのコラムとして提供された参考記事であり、ゴールデンウェイ・ジャパン(株)の見解、分析ではございません。

リスク警告 / 免責事項

  • 当サイトは、投資判断にあたり参考となる情報の提供を目的としており、金融商品の売買を勧めるものではありません。
    投資の最終的な判断はお客様ご自身の責任でされるようお願いいたします。
  • 当サイトは、当社が信頼できると判断した情報を掲載しておりますが、その情報の正確性、完全性を保証するものではありません。
    ご提供する情報を利用につき生じた何らかのトラブルや損失・損害等につきましては、当社及びブログ執筆者は一切責任を負うものではありません。
  • 当サイトでご提供する情報の著作権は、当社又はブログ執筆者で帰属します。許諾なく、コンテンツを翻案、公衆送信等いかなる目的、態様においても利用することはできません。