English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
計算用OpenCL のインストール方法と使用法

計算用OpenCL のインストール方法と使用法

MetaTrader 5 | 25 11月 2015, 09:21
16 995 0
MetaQuotes
MetaQuotes

MetaTrader 5 クライアントターミナルのOpenCL

MQL5で OpenCLに対するプログラムを書くことが可能になって1年以上経過しました。見つかる OpenCL のあらゆるデバイスの入力は MetaTrader 5 ターミナル起動の「ジャーナル」で以下のように見ることができます。

見つかる OpenCL デバイスの MetaTrader 5 へのジャーナル入力

この場合、MetaTrader 5 ターミナルはMQL5 プログラムから直接 OpenCL を起動する方法を4とおり検出しました。インストールされるドライバーによって NVIDIA (OpenCL 1.1) からのグラフィックカード、AMD (OpenCL 1.2)から1つ、Intel Core-i7 CPU 利用オプションを2つです。みなさんのコンピュータがすでに適した OpenCL デバイス バージョン 1.1 またはそれ以上を備えているなら、記述部分は安全に飛ばし、並列計算できるタスクに高まるパフォーマンスをご自身で確認できるよう直接 パフォーマンス比較 に進みます。


OpenCL はすばらしい!

ところが、Expert Advisors、インディケータ、スクリプトで並列計算を活用しているユーザーは多くありません。というのも提供されている新しい機能に気づかず、必要な知識も持ち合わせていないからです。

問題は OpenCL を利用する MQL5 プログラムを起動するにはどんなものであっても適切なソフトウェアをインストールする必要があるということです。Mandelbrot セットスクリプトならびに MQL5.community のフォーラムで利用できるその他多くのプログラムを実行することができるユーザーが多くないのはそのためです。

本稿では、MQL5で並列計算を活用することのメリットを直接理解することができるよう、みなさんのコンピュータにOpenCL をインストール方法をお伝えします。 このテーマを取り上げている記事がウェブサイトですでに公開されているため、MQL5 で OpenCL 用のプログラムを書くことの特殊性は考察しません。


OpenCLとは?

OpenCL とは2008年に クロノスグループコンソーシアムによって開発された並列プログラム用オープンスタンダードです。この基準により異機種混在システムにて異なるアーキテクチャを持つ GPUs または CPUs で並列的に実行できるアプリケーションを開発することができます。

すなわち、タスクを計算する際 OpenCL によりあらゆる CPU コアまたは GPUの莫大な計算能力を使用することが可能となり、それによってプログラム実行時間が削減されるのです。労力がかかりとリソース消費する計算に関するタスクを処理する場合、OpenCL を使用することはひじょうにメリットがあります。

たとえば MQL5に関して言えば、複数シンボルやタイムフレームによる履歴データの複雑で長い分析を行う特定のスクリプト(イディケータまたは Expert Advisor)を処理する際ひじょうに性能向上に貢献します(ここで、並列実行を行う MQL5 プログラムはOpenCL APIを用いて特殊な方法で書く必要があることに注意します)。


OpenCL のサポート

MQL5 での OpenCL サポートは2010年6月に発表されたバージョン1.1以降で開始されています。よって並列計算を行うには、基準に適した比較的新しいソフトウェアとハードウェアが必要です。

ということは OpenCL を使い始めるには PC にグラフィックカードがあるかないかはたいした問題ではないことに注意が必要です。CPU が持ちますから。これは OpenCL は実質的に MQL5 プログラムの実行時間を減らしたいユーザーならだれみも利用可能であるということです。

CPUは確実に分散型の計算スピードの点ではグラフィカルなライバルにはるかに遅れをとるものです。ただ性能の高いマルチコア CPU は大きなスピードアップをうまい具合に達成します。とにかくわれわれの話に戻りましょう。

前に述べたとおり、並列計算にはグラフィックカード、CPUの両方を利用することが可能です。市場には適切なデバイスメーカーが3社あります。インテル、AMD 、NVidiaです。次の表はこれら3社による OpenCL 1.1 をサポートするデバイスとオペレーションシステムに関する情報です。

メーカー デバイス オペレーションシステム
インテル CPU:

コア i3, i5, i7 -PC向け
Xeon -サーバー用
Xeon Phi -コプロセッサ用(詳しく読む
Windows 7、8
openSUSE;
Red Hat.
AMD グラフィックカード

AMD Radeon HD グラフィック、6400 シリーズ以上
ATI Radeon HD グラフィック、5400 シリーズ以上
ATI FirePro グラフィック、A300, S, W, V シリーズ
ATI Mobility Radeon HD、5400 シリーズ以上
ATI FirePro M7820 M5800(詳しく読む

K8 アーキテクチャに基づくCPU以上

Opteron、 Athlon 64、 Athlon 64 FX、 Athlon 64 X2, Sempron、 Turion 64、 Turion 64 X2、 Phenom、 Phenom II (詳しく読む).

APU (ハイブリッドCPU/GPU プロセッサ)

CPU シリーズ A, C, E, E2, G, R.
Windows Vista SP2, 7, 8;
openSUSE 11.x;
Ubuntu 11.04;
Red Hat 6.x.
NVidia GPUCUDA アーキテクチャを伴う)

Tesla、Quadro、GeForce (詳しく読む)
Windows XP, Vista, 7, 8
Linux および Mac OS
詳しく読む
また開発者の公式ウェブサイトであるKhronos Groupでは OpenCL の各バージョンに必要なハードウェアおよびソフトウェア完全な情報が提供されています。

最低みなさんのコンピュータに利用できるデバイス(CPU または GPU)が1台はあり、そのデバイスおよびオペレーションシステムが OpenCL 1.1.のサポートをインストールしているか確認します。こういった条件が満たされるとハードメーカー に応じたOpenCLのセットアップ方法を述べる次のセクションに安全に移ることができます。

 

OpenCLのセットアップ

お手持ちのコンピュータに必要はハードやソフトウェアがインストールされているなら、 MetaTrader 5 で並列計算を始めるに当たり必要なことはデバイスの1つに OpenCL をセットアップすることです。

The OpenCL のセットアップ手順は使用するハードウェアが GPU か CPUかによって変わります。MetaTrader 5 ターミナルが OpenCL をサポートするグラフィックカードを検出すると、ドライブを最新バージョンにアップデートする必要があります。

コンピュータに適切なグラフィックカードがない場合に限り、CPU用 SDK をインストールする必要が生じます。

重要事項:すでに OpenCL サポートインストール済みのグラフィックカードがあれば、CPUで OpenCL をエミュレートするためにソフトウェアバージョンをインストールする必要はありません。

実験のために要求されない限り OpenCL 用グラフィックカードには明白なメリットがあります。

以下の段落ではメーカーに応じた OpenCL のセットアップ手順を述べます。対応するリンクによって適切なセットアップ手順説明に移動することができます。



1. インテル

インテル CPU でOpenCL を使うにはOpenCL アプリケーション用インテル SDKをダウンロードしインストールする必要があります。これには開発者の公式ダウンロードページに行きます

図1.1 OpenCL 向けインテル SDK ダウンロードページ

図1.1 OpenCL 向けインテル SDK ダウンロードページ

ここで OpenCLに関する一般情報を入手することができます。またダウンロード可能なプロダクツリストも入手可能です。利用可能なプロダクツをダウンロードするにはページの上右角のプロダクツ比較とダウンロードボタンをクリックします。

図1.2 利用可能プロダクツ情報およびインストール要件

図1.2 利用可能プロダクツ情報およびインストール要件

クリック後、サポートされているプロセッサタイプやオペレーションシステムなどプロダクツ要件についての情報を伴うウィンドウが表示されます。プロダクツアイコンの上にあるダウンロード ボタンをクリックして適切なプロダクツを選択しダウンロードします。

図1.3 SDK ダウンロード用リンク

図1.3 SDK ダウンロード用リンク

ダウンロードリンクのある別ウィンドウがポップアップします。32ビットまたは 64ビットいずれかの SDK を選択しダウンロードします。数分待ち、ダウンロードが完了したら取得したファイルを実行します。SDK コンポーネントのインストールを確認し、フォルダの1個からファイルを抽出します。

図1.4 OpenCL用インテル SDK のインストール開始

図1.4 OpenCL用インテル SDK のインストール開始

OpenCL アプリケーション用インテルSDK と書かれたインストールウィンドウが表示されます。次へをクリックし、インストール手順に従います。

図1.5 エンドユーザー使用許諾契約へ同意します。

図1.5 エンドユーザー使用許諾契約へ同意します。

ライセンス契約の条件に同意します。これに続きインストールされるコンポーネントがウィンドウに表示されます。続けるには次へをクリックします。

図1.6 SDK の Visual Studioとの統合

図1.6 SDK の Visual Studioとの統合

Microsoft Visual Studio 2008 ソフトウェア(またはそれ以降のバージョン)がすでにお手持ちのPCで使用可能であれば、OpenCL 使用目的でそれを統合するよう指示されます。それから必要なことはインストールしたコンポーネントにアクセス可能なユーザーを選択し、SDKのインストール先を指定し、インストールするをクリックすることだけです。

図1.7 インストール

図1.7 インストール

インストールには数分かかります。問題なくインストールが完了すれば、画面に結果が表示されます。インストール手順を終えるには終了するをクリックします。

図1.8 インストールの終了

図1.8 インストールの終了

 

2.1. AMD グラフィックカードと APU

AMD グラフィックカード用にOpenCL をインストールするにはそのドライバーを利用可能な最新バージョンにアップグレードします。これはドライバーのダウンロードページから行うことができます。

図2.1 AMD ドライバーダウンロードページ

図2.1 AMD ドライバーダウンロードページ

お手持ちのグラフィックカード仕様がお判りなら、ページの左手のフォームを記入すると肝がんに見つけることができます。すべてのフォームフィールドで必要はオプションを選択したら、適切なドライバーの結果を表示するをクリックします。

図2.1.2 AMD Catalyst のダウンロード

図2.1.2 AMD Catalyst のダウンロード

システムはCatalyst ソフトウェアスイートで数個のドライバーを提供し、 OpenCL ドライバーもそのうちの1つです。Catalyst をダウンロードし取得したファイルを実行します。

図2.1.3 グラフィックカードタイプとドライバーバージョン特定のためのアプリケーションダウンロードページ

図2.1.3 グラフィックカードタイプとドライバーバージョン特定のためのアプリケーションダウンロードページ

またページの上右角の対応リンク(図2.1.1)をクリックすると「ドライいばー自動検出」システムを利用することができます。AMD ドライバー自動検出 アプリケーションをダウンロードするように指示されます。そのようにしてそれを起動します。

図2.1.4 検出用アプリケーションと適切なドライバーのダウンロード

図2.1.4 検出用アプリケーションと適切なドライバーのダウンロード

アプリケーションはシステムを解析し、適切なグラフィックカードドライバーをダウンロードさせてくれます。それをダウンロードし取得したファイルを実行します。「インストールマネージャ」がファイルを解凍するフォルダを選択するよう依頼します。選択し インストールするをクリックします。

図2.1.5 AMD Catalyst インストールマネージャ

図2.1.5 AMD Catalyst インストールマネージャ

「エンドユーザー使用許諾契約書」がポップアップウィンドウに表示されます。その条件に同意します。それから「高速」インストールを選択し、AMD Catalystのインストール先を指定したら「次へ」をクリックします。

図2.1.6 インストール

図2.1.6 インストール

インストールには数分かかります。インストールが完了すれば、画面に適切なメッセージが表示されます。

図2.1.7 インストールの終了

図2.1.7 インストールの終了

 

2.2. AMD CPU

AMD CPU用に OpenCLをインストールするには AMD APP SDKの最新バージョンをダウンロードしインストールする必要があります。このために開発者の公式ウェブサイトで次のページに行きます。

図2..2.1 AMD APP SDK ダウンロードページ

図2..2.1 AMD APP SDK ダウンロードページ

このページでは SDK に関する情報、OpenCLの考えが提供されます。ここで必要なことは記述の下にあるダウンロードに行くリンクを見つけクリックすることです。

図2.2.2 ダウンロード可能な SDKの一覧

図2.2.2 ダウンロード可能な SDKの一覧

ページの一番下にのさまざまなオペレーションシステム用の最新 SDK バージョンリストが表示されます32ビットまたは 64ビットでダウンロードのリンクも表示されます。適切なリンクをクリックして必要なバージョンを選択します。エンドユーザー使用許諾契約のページへ移動します。ダウンロードを開始するためそれに同意します。

ダウンロードしたインストーラを実行したら、フォルダにインストールファイルを抽出するよう指示されます。これに続きお手持ちの CPU用AMD APP SDK を持つ前述の AMD Catalystのインストールを行います。 Catalyst のインストール手順は2.1.節2.1.7項図2.1.5の上に表示されています。

 

3. NVidia

If you have a NVidia グラフィックカードをお持ちなら OpenCLがインストールできるようそのドライバーを最新バージョンにアップグレードします。開発者のウェブサイトにあるドライバーのダウンロードページからそれをダウンロードすることができます。

図3.1 NVidia ドライバーダウンロードページ

図3.1 NVidia ドライバーダウンロードページ

このページでは適切なドライバーをマニュアルで見つけるか自動で見つけるかの選択をします。マニュアルを選択するとプロダクトタイプ、シリーズ、オペレーションシステムを選択し検索するをクリックします。システムはお手持ちのグラフィックカードに適した最新のドライバーを検索し、それをダウンロードするよう指示します。

図3.2 選択したドライバーのダウンロード

図3.2 選択したドライバーのダウンロード

オプション2を選んだ場合は グラフィックドライバー でクリックします。そうするとGPU_Reader Java アプリケーションを用いてお手持ちのシステムをスキャンするよう依頼されます。

図3.3 グラフィックカードタイプおよびドライバーバージョンを特定するためのアプリケーション実行

図3.3 グラフィックカードタイプおよびドライバーバージョンを特定するためのアプリケーション実行

実行するをクリックしアプリケーションを実行します。グラフィックカード上にインストールしたドライバーの現在バージョン、最新の推奨ドライバーバージョン情報が表示されるよう数秒待ちます。ダウンロードするをクリックすると図 3.2 に示されるダウンロードページに行きます。

図3.4 グラフィックカードタイプとドライバーバージョンの自動特定結果

図3.4 グラフィックカードタイプとドライバーバージョンの自動特定結果

Click 今すぐダウンロードするをクリックし、同意しダウンロードするボタンを押して NVidia ソフトウェア使用許諾契約に同意します。

図3.5 使用許諾契約への同意とドライバーのダウンロード

図3.5 使用許諾契約への同意とドライバーのダウンロード

これdグラフィックカードの最新ドライバーバージョンを入手します。そして取得したファイルを実行します。フォルダの1つにドライバーインストールの抽出を行うよう指示されます。ファイル解凍後インストールが開始されます。まずもう一度 NVidia ソフトウェア使用許諾契約に同意する必要があります。

図3.6 使用許諾契約への同意とインストールの第一段階

図3.6 使用許諾契約への同意とインストールの第一段階

それから 高速インストールを選択し、「次へ」をクリックします。またオプションでNVidia Experience アドインプログラムをインストールするよう提案されます。

図3.7 インストールオプションの選択

図3.7 インストールオプションの選択

その後すぐにドライバーのインストールが開始され、NVidiaの最新版についての広告も表示されます。

図3.8 インストール

図3.8 インストール

以上です。ドライバーはインストールされたので、MetaTrader 5 ターミナルで OpenCL 使用できるようシステムを再k同するだけです。

図3.9 インストールの終了

図3.9 インストールの終了

 

パフォーマンス比較

MQL5で OpenCL を使用するメリットを示すためにOpenCL_Sample.mq5 が書かれました。いくつかのセットで2つの変数の関数値を計算し、グラフィックラベル (OBJ_BITMAP_LABEL)を用いてグラフウィンドウに結果を表示します。計算は2とおりの方法で行われます。OpenCLを使用する方法と使用しない方法です。ブロックはそれぞれ関数WithOpenCL() および WithoutOpenCL() の形式で実装されます。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//...
   Print("\nCalculations without OpenCL:");
   WithoutOpenCL(values1,colors1,w,h,size,const_1,const_2);
//--- calculations with OpenCL
   Print("\nCalculations with OpenCL:");
   WithOpenCL(values2,colors2,w,h,size,const_1,const_2);
//...
  }
//+------------------------------------------------------------------+
//| Calculations without using  OpenCL                               |
//+------------------------------------------------------------------+
void WithoutOpenCL(float &values[],uint &colors[],const uint w,const uint h,
                   const uint size,const uint const_1,const uint const_2)
  {
//--- store the calculation start time
   uint x=GetTickCount();
//--- calculation of function values
   for(uint i=0;i<h;i++)
      for(uint j=0;j<w;j++)
         values[i*w+j]=Func(InpXStart+i*InpXStep,InpYStart+j*InpYStep);
//--- print the function calculation time
   Print("Calculation of function values = "+IntegerToString(GetTickCount()-x)+" ms");
//--- determine the minimum value and the difference between 
//--- the minimum and maximum values of points in the set
   float min,dif;
   GetMinAndDifference(values,size,min,dif);
//--- store the calculation start time
   x=GetTickCount();
//--- calculate paint colors for the set
   uint a;
   for(uint i=0;i<size;i++)
     {
      a=(uint)MathRound(255*(values[i]-min)/dif);
      colors[i]=const_1*(a/16)+const_2*(a%16);
     }
//--- print the paint color calculation time
   Print("Calculation of paint colors = "+IntegerToString(GetTickCount()-x)+" ms");
  }
//+------------------------------------------------------------------+
//| Calculations using OpenCL                                        |
//+------------------------------------------------------------------+
void WithOpenCL(float &values[],uint &colors[],const uint w,const uint h,
                const uint size,const uint const_1,const uint const_2)
  {
//--- variables for using OpenCL
   int cl_ctx;
   int cl_prg;
   int cl_krn_1;
   int cl_krn_2;
   int cl_mem_1;
   int cl_mem_2;
//--- create context for OpenCL (selection of device)
   if((cl_ctx=CLContextCreate(CL_USE_ANY))==INVALID_HANDLE)
     {
      Print("OpenCL not found");
      return;
     }
//--- create a program based on the code in the cl_src line
   if((cl_prg=CLProgramCreate(cl_ctx,cl_src))==INVALID_HANDLE)
     {
      CLContextFree(cl_ctx);
      Print("OpenCL program create failed");
      return;
     }
//--- create a kernel for calculation of values of the function of two variables
   if((cl_krn_1=CLKernelCreate(cl_prg,"Func"))==INVALID_HANDLE)
     {
      CLProgramFree(cl_prg);
      CLContextFree(cl_ctx);
      Print("OpenCL kernel_1 create failed");
      return;
     }
//--- kernel for painting points of the set in the plane
   if((cl_krn_2=CLKernelCreate(cl_prg,"Grad"))==INVALID_HANDLE)
     {
      CLKernelFree(cl_krn_1);
      CLProgramFree(cl_prg);
      CLContextFree(cl_ctx);
      Print("OpenCL kernel_2 create failed");
      return;
     }
//--- OpenCL buffer for function values
   if((cl_mem_1=CLBufferCreate(cl_ctx,size*sizeof(float),CL_MEM_READ_WRITE))==INVALID_HANDLE)
     {
      CLKernelFree(cl_krn_2);
      CLKernelFree(cl_krn_1);
      CLProgramFree(cl_prg);
      CLContextFree(cl_ctx);
      Print("OpenCL buffer create failed");
      return;
     }
//--- OpenCL buffer for point colors
   if((cl_mem_2=CLBufferCreate(cl_ctx,size*sizeof(uint),CL_MEM_READ_WRITE))==INVALID_HANDLE)
     {
      CLBufferFree(cl_mem_1);
      CLKernelFree(cl_krn_2);
      CLKernelFree(cl_krn_1);
      CLProgramFree(cl_prg);
      CLContextFree(cl_ctx);
      Print("OpenCL buffer create failed");
      return;
     }
//--- store the calculation start time
   uint x=GetTickCount();
//--- array sets indices at which the calculation will start 
   uint offset[2]={0,0};
//--- array sets limits up to which the calculation will be performed
   uint work[2];
   work[0]=h;
   work[1]=w;
//--- calculation of function values
//--- pass the values to the kernel
   CLSetKernelArg(cl_krn_1,0,InpXStart);
   CLSetKernelArg(cl_krn_1,1,InpYStart);
   CLSetKernelArg(cl_krn_1,2,InpXStep);
   CLSetKernelArg(cl_krn_1,3,InpYStep);
   CLSetKernelArgMem(cl_krn_1,4,cl_mem_1);
//--- start the execution of the kernel
   CLExecute(cl_krn_1,2,offset,work);
//--- read the obtained values to the array
   CLBufferRead(cl_mem_1,values);
//--- print the function calculation time
   Print("Calculation of function values = "+IntegerToString(GetTickCount()-x)+" ms");
//--- determine the minimum value and the difference between 
//--- the minimum and maximum values of points in the set
   float min,dif;
   GetMinAndDifference(values,size,min,dif);
//--- store the calculation start time
   x=GetTickCount();
//--- set the calculation limits
   uint offset2[1]={0};
   uint work2[1];
   work2[0]=size;
//--- calculation of paint colors for the set
//--- pass the values to the kernel
   CLSetKernelArg(cl_krn_2,0,min);
   CLSetKernelArg(cl_krn_2,1,dif);
   CLSetKernelArg(cl_krn_2,2,const_1);
   CLSetKernelArg(cl_krn_2,3,const_2);
   CLSetKernelArgMem(cl_krn_2,4,cl_mem_1);
   CLSetKernelArgMem(cl_krn_2,5,cl_mem_2);
//--- start the execution of the kernel
   CLExecute(cl_krn_2,1,offset2,work2);
//--- read the obtained values to the array
   CLBufferRead(cl_mem_2,colors);
//--- print the paint color calculation time
   Print("Calculation of paint colors = "+IntegerToString(GetTickCount()-x)+" ms");
//--- delete OpenCL objects
   CLBufferFree(cl_mem_1);
   CLBufferFree(cl_mem_2);
   CLKernelFree(cl_krn_1);
   CLKernelFree(cl_krn_2);
   CLProgramFree(cl_prg);
   CLContextFree(cl_ctx);
  }

スクリプト実行後数秒間、グラフウィンドウに色づけされた関数値のセットが表示されます。各セットは入力パラメータで選択された色(赤、グリーン、ブルー)の一つに対応しています。

ステップ0.1で-22 ~ 22 の平面上のポイントセットに対するスクリプト実行結果

ステップ0.1で-22 ~ 22 の平面上のポイントセットに対するスクリプト実行結果

画像そのものに加え、両方法に対する関数計算時間 "Expert Advisors" ジャーナルに表示されるので、MQL5で OpenCL を使用するメリットと実用的価値をはっきりと確認することができます。段階値を増やしスクリプト実行結果を取得します。

step value関数計算結果と2とおりの方法を用いた塗装色値

関数計算結果と2とおりの方法を用いた塗装色値

OpenCL を用いた CPU での関数計算時間は5倍以下よりまだ速いと表示され、これは限界にほど遠いものです!OpenCL サポートの高度な GPUでの計算は CPUでの計算よりはるかに速いのは周知のことです。異なる OpenCL デバイスでスクリプトを実行した結果からはっきりとこれを確認することができます。それは以下の表に示されています。

OpenCL デバイス
OpenCLを使用しない実行時間(ms)
OpenCLを使用した実行時間(ms)
パフォーマンス向上
AMD Radeon HD 7970 20,361 ms
171 ms
 119.07 times
NVidia GeForce GT 630
24,742 ms
578 ms
 42.8 times
Intel Core i5 430M
27,222 ms
5,428 ms
 5.01 倍
AMD Athlon X2 Dual-Core QL-65
45,723 ms
9,516 ms  4.8 倍

ご覧のように最高機能の AMDグラフィックカードでOpenCL を使用すると、計算時間は100倍削減されるのです!大きな結果はまた 2011年版のGeForce GT 630 というやや古いものでもめざましい結果が得られ、42倍時間削減を達成しました。インテルと AMD の CPUは最後です。ただそれらで達成されたパフォーマンス向上も複雑な計算を行う場合はひじょうに有益でしょう。

これでおしまいです。比較表がバルクデータ処理における並列計算を用いるメリットを明確に示しています。みなさんが行うべきはお手持ちのグラフィックカードまたはCPUに適切なドライバーをインストールすることです。

MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/690

添付されたファイル |
opencl_sample.mq5 (12.93 KB)
MQL5 クックブック:典型的なチャートイベントの処理 MQL5 クックブック:典型的なチャートイベントの処理
本稿では典型的なチャートイベントを考察し、その処理例についてお話します。マウスのイベント、キーストローク、グラフィックオブジェクトの作成/変更/消去、チャートおよびグラフィックオブジェクト上でのマウスのクリック、マウスでのグラフィックオブジェクト移動、テキストフィールドでのテキスト編集終了、チャート上でのイベント修正を取り上げます。考察する各イベントに対応する MQL5 プログラム例も提供します。
もうひとつ別の MQL5 OOP クラス もうひとつ別の MQL5 OOP クラス
本稿では一からオブジェクト指向 Expert Advisor を構築する方法をお伝えします。トレードの理論的考えを着想することからその考えを実験的世界で実現する MQL5 EA をプログラムするまでです。実践から学ぶことは IMHO で成功への確実な方法です。よってみなさんが最終的に Forex ロボットのコーディングをするために考えを整理できる方法を確認していただけるよう実例を示していきます。また私の目標はみなさんにオブジェクト指向の原理に忠実に従うようお勧めすることです。
MQL5 プログラムのデバッグ MQL5 プログラムのデバッグ
本稿は第一にすでに言語を学習したがまだプログラム開発を完全にはマスターしていないプログラマーを対象としています。本稿ではいくつかデバッグテクニックを提供し、著者やその他多くのプログラマーの経験を紹介します。
MQL5 ウィザードおよび Hlaiman EA ジェネレータを用いたニューラルネットワーク EA の作成 MQL5 ウィザードおよび Hlaiman EA ジェネレータを用いたニューラルネットワーク EA の作成
本稿はMQL5 ウィザードおよび Hlaiman EA ジェネレータを用いたニューラルネットワーク EA の自動作成について述べます。理論的な情報をすべて学習する必要なくニューラルネットワークと簡単に連携し、ご自身のコードを書く方法をお伝えします。