English Русский Deutsch
preview
MQL5入門(第1部):アルゴリズム取引入門ガイド

MQL5入門(第1部):アルゴリズム取引入門ガイド

MetaTrader 5テスター | 19 3月 2024, 15:54
370 0
Israel Pelumi Abioye
Israel Pelumi Abioye

はじめに

プログラミングの経験がなければ、MQL5の学習は難しいかもしれませんが、不可能ではありません。アルゴリズム取引のために作られた専門言語であるMQL5を理解するには、プログラミングと金融市場の両方の専門知識が必要です。今後の記事では、プログラミングのバックグラウンドがなくてもMQL5を学びたいと考えている人たちのギャップを埋めることを目的とし、プログラミングの概念を崩し、初心者の方にもMQL5を身近に感じてもらえるような内容にする予定です。

変数、データ型、ループ、条件文などの概念を初心者にわかりやすく説明しながら、プログラミングの基礎をしっかりと学んでいきます。記事はステップバイステップのアプローチで、読者をMQL5の基礎へと導きます。簡単なスクリプトから始めて、徐々に複雑なトピックを紹介し、スムーズな学習ができるようにします。

学習は、実践的な例を伴うとより効果的になることが多いものです。MQL5がアルゴリズム取引にどのように応用されているかを、実例やシナリオを交えて説明します。理解を深めるため、インタラクティブな学習を促します。読者はコードを書く練習をし、例題で実験し、実践的に知識を応用することができます。要するに、これらの記事は、プログラミングの素養のない個人が自信を持ってMQL5の世界をナビゲートし、アルゴリズム取引の領域で徐々に楽しく学習できるようにするためのものです。

この記事では、以下のトピックを取り上げます。

  • プログラミング入門
  • MQL5プログラムの種類
  • MetaEditor IDE
  • MQL5言語の基礎
次回は、以下のトピックを取り上げます。
  • 定義済み変数
  • 共通関数
  • 制御フロー文
  • 配列とループ
  • エキスパートアドバイザー(EA)の作成
  • ストラテジーテスター

1. プログラミング入門

お気に入りのゲームやソフトウェアがどのように作られたのか、不思議に思ったことはあるでしょうか。お気に入りのゲームキャラクターは、どのようにしてあなたの命令に従うのでしょうか。プログラミングとは、人間とコンピュータのコミュニケーションを可能にするために書かれた一連のコードだとお考えください。

プログラミング言語とは何でしょうか。「プログラミング」という言葉は、特定の目標を達成するために従うべきルールや指示を設定するプロセスを意味します。一方、「言語」という言葉は、個人がアイデア、感情、考えをコンピュータに表現することを可能にするコミュニケーションのシステムを意味します。コンピュータは人間の言葉を理解できません。では、目標を達成するための一連の指示をどのように伝えればいいのでしょう。プログラミング言語は、人間がコンピュータとコミュニケーションするのを助けることで、人間とコンピュータの仲介役を果たします。

1.1.プログラミング言語の種類

人間の言語にも種類があるように、プログラミング言語にも種類があります。これらの言語は次の2つに分類されます。

  • 高水準プログラミング言語:人間の言葉に近く、親しみやすいです。例としては、MQL4、MQL5、Pythons、JavaScriptなどがあります。
  • 低水準プログラミング言語:マシンコードに近く、人間が書いたり理解したりするのはより難しくなります。これにはアセンブリ言語も含まれ、コンピュータのハードウェアとより密接な関係があります。

目的による分類

  • 汎用プログラミング言語:幅広い機能を果たすように設計されています。例としては、Pythons、Java、C++などがあります。
  • ドメイン固有言語:特定のタスクを実行するプログラミング言語です。例えば、MQL5は取引ボットの開発に使われています。

1.3.プログラミングにおける重要な用語

  • IDE(統合開発環境):ソフトウェア開発のための包括的な機能をプログラマーに提供するソフトウェアアプリケーションです。開発者がソフトウェアを書き、テストし、デバッグし、デプロイできる中心的なプラットフォームです。例としては、VisualStudioCode、CodeBlocks、MetaEditor5などがあります。この記事が進むにつれて、MQL5で使われているIDEであるMetaEditor5に焦点を当てていくことにします。
  • デバッガー:このツールは、開発者がコードをステップスルーし、ブレークポイントを設定し、実行中に変数を検査することで、コードのバグを発見し修正するのに役立ちます。
  • コンパイラ/インタープリタ:多くのIDEには、環境内で直接コードをコンパイルして実行するためのツールが組み込まれています。コードを実行し、エラーをチェックし、出力を表示することができます。
  • データ型:プログラミング言語が操作できるデータのさまざまなカテゴリ。例としては、整数、浮動小数点数、文字列、ブーリアンなどがあります。この記事が進むにつれて、これについての説明のセクションが設けられる予定です。
  • 構文:プログラミング言語の記号と単語の組み合わせを定義するルールのセットです。どのプログラミング言語にも、コードの実行を助ける独自の構文があります。
  • アルゴリズム特定の問題を解決するため、またはタスクを実行するために設計された、明確に定義された命令のセットです。
  • 機能:特定のタスクを実行するコードのブロック。これは再利用可能で、プログラム内で何度も呼び出すことができます。
  • ライブラリ:特定のタスクを実行するために使用できる、あらかじめ書かれたコード、関数、ルーチンのコレクションで、プログラマーが車輪の再発明を避けるのに役立ちます。
  • 条件文:if-elseやswitch-caseのように、特定の条件に基づいてプログラムが判断を下すことを可能にする構文です。つまり、ある条件が真であれば、コンピュータはあるコードを実行しなければなりません。
  • ループ:特定の条件が満たされるまでコードのブロックを繰り返す制御構造です。一般的な型としては、forループ、whileループ、do-whileループなどがあります。例えば、whileループは特定の条件が満たされる間、コードのブロックを実行し続けます。
  • 変数:データを格納するためのコンテナです。名前を持ち、プログラムの実行中に変更可能なさまざまな値を保持できます。

注:この記事を書き進めるにあたり、これらの重要な用語のいくつかについて詳しく説明します。


 2.MQL5プログラム

MQL5 (MetaQuotes Language 5)は、高水準かつドメイン固有のプログラミング言語です。MQL5は、取引に関連するタスクのみを実行するため、ドメインに特化したプログラミング言語です。例としては、取引戦略の自動化、取引ロボットの開発、テクニカル指標などがあります。

MQL5プログラミング言語では、取引を自動化し、市場を分析し、全体的な取引体験を向上させるために、さまざまな種類のプログラムを開発することができます。MQL5プログラムの一般的なタイプをいくつか紹介しましょう。

  • エキスパートアドバイザー(EA):EAは、取引戦略を自動化するために使用されるMQL5プログラムの一種です。事前に定義されたルールに基づいて取引を実行するのに役立ちます。EAはチャートに拘束され、コマンドを実行するまでにどれだけ時間がかかろうとも、あらかじめ定義されたイベントが発生するのを待ちます。
  • スクリプト:スクリプトはEAと似ていますが、異なります。スクリプトは、アクティブ化された直後にプログラムを実行するワンタイムOTPのようなもので、事前定義された条件が満たされた場合はプログラムを実行し、満たされない場合はそうでない場合に実行されます。
  • カスタム指標:EAとは異なり、カスタム指標は取引を実行することはできません。カスタム指標は、事前に定義したルールに基づき、市場で特定のイベントが発生したことを示すプログラムです。
  • ライブラリ:特定のタスクを実行するために使用できる、あらかじめ書かれたコード、関数、ルーチンのコレクションで、プログラマーが車輪の再発明を避けるのに役立ちます。
  • インクルードファイル:プログラミングにおいて、インクルードファイルとは、プログラムの複数の部分で再利用したいコードや宣言を含む別のファイルのことです。includeディレクティブは、他のファイルの内容をメインプログラムファイルにインクルードするために使用されます。インクルードファイルは、コードを整理してモジュール化し、コードの再利用と保守性を促進するためによく使用されます。

3.MetaEditor IDE

MetaEditor 5はMQL5プログラミング言語で使用されるIDEです。IDEは、コードを書いたり、デバッグしたり、コンパイルしたり、テストしたりできる環境やページのようなものです。MetaEditor 5をダウンロードすると、常にMetaTrader 5が付属します。

  • MetaEditorにアクセスするには、MetaTrader 5のIDEボタンをクリックします。

    図1:MetaTrade 5からMetaEditorを開く

  • ナビゲーターセクション(Ctrl+D)は、MQL5プログラムのすべてのタイプを表示します。どのプログラムをクリックしても、あなたが書いたすべてのコードが表示されます。

    図2:ナビゲーターセクション

  • コードを書くためのページを開くには、[新規]ボタン(Ctrl+N)をクリックして、開発したいMQL5プログラムのタイプを選択する必要があります、開発したいプログラムのタイプを選択した後、MQLウィザードのセクションで[次へ]ボタンをクリックします。

    図3:開発するMQL5プログラムのタイプの選択

  • 詳細を入力するページが表示されます。入力が終わったらMQLウィザードセクションの[完了]ボタンをクリックします。

    図4:必要事項の入力

  • お疲れさまでした。Meta Editorの準備ができたので、コードを書き始めることができます。

    図5: MetaEditor 5


  • このセクションには、先ほど入力した詳細が表示されます。

    図6:詳細

  • OnStart()は、スクリプトプログラムの中で呼び出される関数で、スクリプトプログラムが起動された直後に、中括弧{}内のコードが一度だけ実行されるようにします。

    図7:OnStart()

  • 最初のコードを書いてみましょう。起動時に「HelloMQL5」とアラートするスクリプトを作成します。

    void OnStart()
      {
    
       Alert("Hello MQL5");
    
      }


注:さらに詳しい説明は、この記事が進むにつれて追加される予定です。


  • コンパイラはコードが正しいかどうかを確認し、コードを修正するために何をすべきかを提案します。コードを書き終えたら、[コンパイル]ボタンをクリックし、説明セクションにエラーや警告がないか確認してください。

    図8:コンパイラ


注:コードにエラーがある場合、修正するまでコードは実行されません。警告を修正しなくてもコードを実行することはできますが、プログラムの問題を避けるためには、それに対処した方がよいです。

  • プログラムをテストするには、[再生]ボタンをクリックします。

    図9:コードのテスト


  • このプログラムはMetaTrader 5で実行されます。

    図10:MT5でのコードの実行


これまで、プログラミングの基礎とMetaEditor環境について、短いながらも重要な旅を始めました。アルゴリズムの言語であるMQL5を理解するための基礎を築き、MetaEditorが提供するクリエイティブな空間を探求しました。MetaEditorは単なるツールではなく、アイデアを実行可能な戦略に変えるための入り口です。MQL5の豊かな魅力を解き明かし、金融市場向けプログラミングの達人へと導くこの先にご期待ください。アルゴリズム取引への冒険は始まったばかりです。

4.MQL5言語の基礎

MQL5プログラムの開発を進める前に、プログラムを構成するいくつかの基本的な事柄を理解することが重要です。例としては、データ型、関数、変数、コメント、MQL5構文などがあります。

4.1.構文

構文とは、特定の言語で書かれたプログラムがどのように構成されるべきかを規定するルールの集合を指します。プログラミング言語の文法のようなものです。人間の言語に文章を形成するためのルールがあるように、プログラミング言語にも、有効で理解しやすいコードを作成するためのルールがあります。

以下は構文の重要な側面です。

4.1.1.文の終了

MQL5の各文は通常、セミコロン(;)で終了します。これは、ある文が終了し、次の文が始まることをコンパイラに知らせます。

例:

void OnStart()
  {

   Alert("Hello MQL5");  // the semicolon means the end of the code line

  }

4.1.2.コメント

MQL5のコメントは、コード内で説明やドキュメントを提供するために不可欠です。コメントは、後で参照したり、コードの目的を説明したりするために、コード行に追加するタグのようなものだとお考えください。ここでは、さまざまな場面でのコメントの使い方の例を詳しく紹介します。

一行コメント:「//」で始まり、簡単な説明に使われます。

例:

void OnStart()
  {

   Print("Hello MQL5");   // This line of code will print “Hello MQL5” when run

  }

注:コンパイラは「//」の後に書かれたものを完全に無視します。

複数行コメント

複数行のコメントは「/**/」で囲みます。これは、より広範な説明に適しており、計画を書き出したり、プログラムを開発するために従うべきステップバイステップのガードを書いたりするのに役立ちます。

例:

void OnStart()
  {

   /* In many programming languages, including MQL5
    a semicolon “;” is used to indicate the end of a statement.
   It is a crucial element for the compiler to understand the structure of the program.
   */
   
  }

コンパイラは、/*と*/の間のすべてを完全に無視します。

コメントは、コードを読みやすく理解しやすくするために重要な役割を果たします。自分自身の理解だけでなく、あなたのコードを読んだり共同作業したりする可能性のある他の人の理解にも役立ちます。MQL5プログラムの分かりやすさを向上させるために、コメントは惜しみなく活用しましょう。


4.1.3.識別子

プログラミングにおいて識別子とは、変数や関数、その他コード内のユーザー定義項目に与えられる名前です。識別子は、コードを読みやすく理解しやすくする上で重要な役割を果たします。MQL5における識別子のキーポイントは以下の通りです。

命名規則

識別子は特定の命名規則に従わなければなりません。アルファベット(A~Zまたはa~z)で始まり、アルファベット、数字(0~9)、アンダースコア(_)を続けることができます。

大文字と小文字の区別

MQL5は大文字と小文字を区別します。したがって、myVariableとMyVariableは異なる識別子とみなされます。

例:

int myage = 25; 
int MyAge = 25;  // myage is a different identifier from MyAge.


意味のある名前

識別子には、意味のある説明的な名前を選んでください。これによりコードの可読性が向上し、他の人(あるいは将来の自分)が変数や関数の目的を理解しやすくなります。

予約語

予約語を識別子として使うことは避けます。予約語とは、プログラミング言語において特別な意味を持ち、他の目的には使用できない語です。例としては、Alert、Print、Commentなどがあります。予約語の詳細についてはこちらでご覧ください。

例:

    int Age = 25;      
    Print(Age);   
    /*
    Int is the data type is an integer because 25 is a whole number.
    Age is the  identifier
    Print is a reserved word in MQL5 and it serves a special function. This means it can't be used as an identifier
    */


4.2.基本データ型

プログラミングでは、データ型はさまざまな種類の情報を入れる容器のようなものです。ある箱には数字を入れ、ある箱には単語を入れ、ある箱にはもっと複雑なものを入れます。例を挙げます。

整数(int)

これは、整数だけを入れる箱だと思ってください。1、5、10といった数字は格納できますが、小数点以下の数字は格納できません。

例:

int myInteger = 10;

double

この型は小数点を持つ数値を表します。

例:

double myDouble = 3.14;

文字

MQL5では、文字とは、文字、数字、記号などの単一の文字を表すために使用されるデータ型です。これはcharキーワードで示されます。

例:

 // Declaring a character variable 
      char myChar = 'A';

 // Printing the character to the console 
      Print(myChar);

文字列タイプ

文字列とは文字の並びのことで、通常はテキストに使われます。

例:

string myString = "Hello, MQL5!";

Alert(myString);

ブール型

ブール値は真か偽の値を表します。

例:

bool iam25 = true;

配列

MQL5の配列では、同じデータ型の複数の値を1つの変数名に格納できます。データの集まりを扱う便利な方法を提供します。MQL5における配列の主要な側面は以下のとおりです。

1.配列宣言:配列を宣言するには、データ型と名前を指定し、その後に配列を示す角括弧([])を続けます。

例:

Integer array declaration

int numbers[5];


2.初期化:中括弧({})で囲まれた値のリストを指定することで、宣言時に配列を初期化することができます。

例:

// Initializing an integer array

   int numbers[] = {1, 2, 3, 4, 5};


3.要素へのアクセス:配列要素には、0から始まるインデックスを使ってアクセスします。例えば、配列numbersでは、numbers[0]が最初の要素です。MQL5の配列は、ローソク足の終値や始値を取得するために使用することができます。

例:

// Accessing elements of an array

   int firstNumber = numbers[0];  // Accesses the first element


注:これらはほんの一部のデータ型であり、基本的なことを説明したに過ぎません。目的は、各コンセプトを明確な例で説明し、無理な詳細を避けて、楽しく簡単に学習できるようにすることです。


結論

まとめてみると、私たちはプログラミングの基礎とMQL5特有の世界を探求する旅に出ました。プログラミングの入門から始まり、MQL5プログラムの種類を掘り下げ、取引アルゴリズムを作成する上でのMetaEditor IDEの重要性を理解しました。MQL5言語の基礎の探求は、より洗練されたプログラムを構築するための基礎を築きました。これはほんの始まりに過ぎず、今後、MQL5を使ったコーディングのパワーが開花し、強固で効率的な取引戦略を作成できるようになることを忘れないでください。アルゴリズム取引とMQL5プログラミングのエキサイティングな領域に関する洞察や記事を今後もお届けします!



MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/13738

モデル解釈をマスターする:機械学習モデルからより深い洞察を得る モデル解釈をマスターする:機械学習モデルからより深い洞察を得る
機械学習は複雑で、経験を問わず誰にとってもやりがいのある分野です。この記事では、構築されたモデルを動かす内部メカニズムに深く潜り込み、複雑な特徴、予測、そしてインパクトのある決断の世界を探求し、複雑さを解きほぐし、モデルの解釈をしっかりと把握します。トレードオフをナビゲートし、予測を強化し、確実な意思決定をおこないながら特徴の重要性をランク付けする技術を学びます。この必読書は、機械学習モデルからより多くのパフォーマンスを引き出し、機械学習手法を採用することでより多くの価値を引き出すのに役立ちます。
ソフトウェア開発とMQL5におけるデザインパターン(第2回):構造パターン ソフトウェア開発とMQL5におけるデザインパターン(第2回):構造パターン
この記事では、MQL5だけでなく他のプログラミング言語でも拡張可能で信頼性の高いアプリケーションを開発するために、デザインパターンのトピックが開発者としてどれほど重要であるかを学んだ後、当トピックについての記事を続けます。デザインパターンのもう1つのタイプである構造デザインパターンについて学び、クラスにあるものを使ってより大きな構造を形成することによってシステムをデザインする方法を学びます。
MQL5を使ったシンプルな多通貨エキスパートアドバイザーの作り方(第4回):三角移動平均 — 指標シグナル MQL5を使ったシンプルな多通貨エキスパートアドバイザーの作り方(第4回):三角移動平均 — 指標シグナル
この記事の多通貨エキスパートアドバイザー(EA)は、1つの銘柄チャートからのみ複数の銘柄ペアの取引(注文を出す、注文を決済する、トレーリングストップロスとトレーリングプロフィットなどで注文を管理するなど)ができるEAまたは自動売買ロボットです。今回は、多時間枠または単一時間枠の「三角移動平均」という1つの指標のみを使用します。
MQL5における組合せ対称交差検証法 MQL5における組合せ対称交差検証法
この記事では、ストラテジーテスターの低速&完全アルゴリズムを使用してストラテジーを最適化した後に過剰学習が発生する可能性の程度を測定するために、純粋なMQL5における組合せ対称交差検証法の実装を紹介します。