はじめに

いまや、株式もFX（外国為替証拠金取引）も、オンライン取引が当たり前の時代となりました。インターネットに接続していれ
ば、パソコンからでも、スマートフォンからでも、簡単に相場にアクセスをして、手軽にトレードができます。
ただしオンライン取引では、他社との差別化を図る目的もあり、各々の業者が独自の取引ソフトを顧客に提供しているのが一般的です。そしてその場合、口座を開設する業者を決めてしまうと、取引ソフトに選択の余地がなくなることになります。
ご存じのように、FXやCFD（差金決済取引）の場合、トレーダーに提示される価格（気配）や約定の具合が、どの業者もいつもすべ【免責事項】※本書およびサンプルプログラムに基づく行為の結果発生した障害、損失などについて、著者および出版社は一切の責任を負いません。
※本書に記載されている URLなどは、予告なく変更される場合があります。
※本書に記載されている会社名、製品名は、それぞれ各社の商標および登録商標です。
※ MetaTrader 4 Client Terminalおよび MetaTrader 5 Client Terminalは、MetaQuotes Software Corp.社の開発したソフトウェアです。
※ Windows®および Excel®は、米国 Microsoft Corporationの米国およびその他の国における登録商標または商標です。

てまったく同じというわけではありません。しかし、取引業者を変えてしまうと、せっかく使いこなせるようになった取引ソフトが使えなくなり、別の取引ソフトをいちから学ぶことになるという“問題”があるわけです。
ところが最近は、このような問題を解消する取引ソフトが、いく
つか登場してきました。その代表的なものこそ「メタトレーダー（MetaTrader）」です。
メタトレーダーは、特定の業者向けに開発された取引ソフトではありません。世界中の業者が、このソフトを開発したロシアのメタ



はじめに

クオーツ社（MetaQuotes Software Corp.）と契約を結び、取引ソフトとして採用する形式です。

チャートソフトや取引ソフトとしての使い勝手でいえば、MT5
は、MT4と基本的に変わりません。しかしMT5では、FXだけでな

日本国内だけでもメタトレーダーを採用している業者は複数存在

く、株式や先物のトレードにも対応できるように、機能が拡張されしています。トレーダーは、これまで培ったメタトレーダーの知識ました。また売買システムの開発環境、特にバックテストや最適化を無駄にすることなく、その複数の採用業者のなかから取引相手をの機能が、格段に充実しています。

自由に選べるわけです。

ところが、魅力も機能も倍増したにもかかわらず、MT4のユー

メタトレーダーは、発注機能はもちろんのこと、価格表示機能、ザーがMT5にすぐに移行したわけではありませんでした。残念な

チャート機能、独自のテクニカル指標や自動売買システムの作成、ことに、プログラミングに関しては、大きな違いが出てしまったか

バックテストやシステムの最適化といった、計画的なトレードの遂らです。

行に役立つ機能が、すべてパッケージ化されています。しかも使用料は無料です。

MT5用のプログラムを作成するためのプログラミング言語であるMQL5（MetaQuotes Language Version 5）は、MT4のプログラ

さらに、メタトレーダーの大きな特長のひとつとして、柔軟性のミング言語であるMQL4（MetaQuotes Language Version 4）の単高いプログラミングの機能が挙げられます。この機能は、特に自動なるバージョンアップではありませんでした。実際には、一部の関売買に関心を持つ多くのトレーダーやプログラマーを魅了してお数を除き、MQL5とMQL4には互換性がないのです。

り、世界中のさまざまなコミュニティで情報が激しく行き交っているのです。
いまやメタトレーダーは、システムトレードの開発者にとって欠かすことのできないツールであるといえるでしょう。

これは、メタトレーダーで独自の指標や自動売買システムを開発する人たちに立ちはだかる、大きな問題となっています。MT4用に開発されたプログラムをMT5用へ移行するのに、多くの手間と時間がかかるからです。
しかし、MQL5自体は、MQL4同様、とても柔軟性のあるプログ

メタトレーダー４と５

ラミング言語です。注文の発注やポジションの決済など、決まった処理をひとまとめにして「関数」という形で定義できます。



2010年、
メタクオーツ社は、世界中で人気を博したメタトレーダー

そしてこの、関数の定義の仕方、使い方という点では、MQL4

４（MT4＝MetaTrader Version 4）をバージョンアップさせたメとMQL5に互換性があるのです。関数の定義内容は異なったとしてタトレーダー５（MT5＝MetaTrader Version 5）を公開しました。

も、その関数を呼び出すときには、同じような形で利用できます。



はじめに

そこで著者は、MQL4のプログラムとMQL5のプログラムを同じような書式で記述できるように、共通の部品となる「オリジナルラ

その基本的な記述法といくつかの例題を扱います。さらにMQL4とMQL5のトレード関数の基本について紹介します。

イブラリー」を作成してみました。これを利用することで、自動売買プログラムの肝である売買ロジックの部分は、ほぼ同じプログラ
ムで記述できます。

●第３章

システムトレードプログラミング

本書のメインです。MQL4とMQL5の自動売買プログラム（EA

もちろん完全な互換性はありません。しかし、利用するテクニカ＝Expert Advisor）を効率良く作成するためのオリジナルライブ

ル指標の宣言の仕方などを変える程度の修正で済みます。MQL4かラリーを紹介します。オリジナルライブラリーを利用した各種EAらMQL5への移行にあたって、大きな負担とはならないでしょう。

の作成例をMQL4版とMQL5版の両方で掲載しました。

本書は、オリジナルライブラリーを利用して、MQL4/MQL5のプログラム、特に自動売買システムを作成する手順について解説しストラテジーテスターを使った売買システムの評価たものです。また、作成された自動売買システムを評価し、最適化

MT4/MT5のストラテジーテスターを使ったバックテストのやりを試みるなど、システムトレード開発の一連の流れを、MT4だけ方や、売買システム最適化の方法について説明します。また、評価

でなく、MT5でも体験できるように紹介しています。

項目や最適化の結果から、売買システムをどう判断するかについて

本書の構成は次のとおりです。
●第１章

メタトレーダーの紹介

解説しました。
●第５章

MQL4/MQL5関数一覧と互換性

MT4とMT5について、それぞれ簡単に紹介します。特にプログ

MQL4とMQL5の関数一覧を掲載します。互換性のある関数、互ラムを記述するソフト「メタエディター」を使ったプログラミング

換性のない関数を一覧にすることで、読者の皆様がこれからMT4/の流れを、それぞれのプログラミング言語であるMQL4とMQL5の

MT5で独自のアイデアを具現化するときに、手助けになると思い場合で説明します。

ます。

●第２章

MQL4/MQL5プログラミングの基礎

MQL4とMQL5のプログラミングの基礎、そしてそれぞれの違いについて説明します。まず、カスタム指標のプログラムについて、



●第４章

本書は、すでにMT4でプログラムを作成できる人にとっても役に立つでしょう。蓄積したノウハウを簡単な修正でMT5でも使えるようになれば、少しでも手間を省くことができるからです。



はじめに

またメタトレーダーのプログラミングが初めての人は、どちらかいます。ぜひ参考にしていただければ幸いです。

らも始められます。両バージョンが並行して利用される期間は、今今回再びメタトレーダーのプログラミングに関する書籍を執筆す

後もしばらく続くでしょう。事実、MT4のアップデートは、2013

る機会に恵まれたことは、メタトレーダーのいち利用者として本当年になってからも行われました。

に光栄なことだと思います。ここに、本書を執筆する機会を与えてMT4であれMT5であれ、基本的な考え方は同じです。一方の言くださったパンローリング株式会社社長の後藤康徳氏、編集・校正

語でプログラムを作成できるようになれば、他方への移行はスムーなどで多大なご協力をいただいた敬静社合同会社の世良敬明氏に、ズにできるでしょう。

感謝の意を表します。

なお、メタトレーダーに関する情報は、著者ブログにも掲載されています。

2013年10月

豊嶋 久道

Toyolab FX - 手ぶらで為替取引
http://forex.toyolab.com/

メタトレーダー実践日記
http://www.panrolling.com/blog/toyoshima.html

基礎から学ぶシステムトレード
http://system-trading.jp/toyoshima/index.php

メタトレーダーで学ぶシステムトレード
http://fx-on.com/education/study/

更新頻度はまちまちですが、本書で触れなかった内容、本書出版後にアップデートされた部分も含め、さまざまな情報が掲載されて





目次

CONTENTS

はじめに―――――――――――――――――――――――――― 1
メタトレーダー４と５……2

2-2

MQL5プログラミングの基礎― ―――――――――― 63

データ型……64
整数のデータ……64

第１章

メタトレーダーの紹介

1-1

メタトレーダー４とメタトレーダー５―――――――― 16

実数のデータ……67
列挙型のデータ……67
データ型の変換……70

メタトレーダーのダウンロードとインストール……16

そのほかのデータ型……73

メタトレーダーの画面構成……17

配列……73MT5 に追加された機能……25

構造体……75

1-2 プログラミングの流れ――――――――――――――― 28関数でのパラメータの参照渡し……78

プログラムとプログラミング言語……28

関数のオーバーロード……85

作成可能なプログラムの種類……31

予約変数……87

MQL4 プログラムのフォルダ構成……36

特別な関数……89

MQL5 プログラムのフォルダ構成……38
実際にプログラムでトレードをするときの注意点……41
1-3

本書で使用したサンプルプログラムについて――――― 43

2-3

カスタム指標プログラムの基本――――――――――― 93

プリプロセッサ命令……96
指標バッファ用の配列の宣言……100

サンプルプログラムのインストール……43

外部パラメータ……101

サンプルプログラムの著作権について……45

初期化関数……103

第２章 MQL4/MQL5プログラミングの基礎
2-1 MQL4プログラミングの基礎― ―――――――――― 48
データ型……48

指標計算関数……107
カスタム指標の計算……111
2-4

テクニカル指標関数を使ったカスタム指標プログラム――――――――――――― 115

配列……55

移動平均……116

関数……59

ボリンジャーバンド……129

予約変数……60

移動平均乖離率……138

特別な関数……61

カスタム指標の平滑化……144

目次

CONTENTS

2-5

MQL4とMQL5のトレード関数の使い方――――― 157

逆張りシグナルによる仕掛け……267

MT4でのトレードの流れ……157

現在形成中のバーの指標値を利用した仕掛け……279

MQL4のトレード関数……159

EAで実際に売買できない場合について……281

MQL4でのポジション情報の取得……165

3-4

手仕舞いのパターン――――――――――――――― 284

MT5でのトレードの流れ……171

一定値幅での損切りと利食い……284

MQL5のトレード関数……178

トレイリングストップ……293

MQL5でのポジション情報の取得……187

テクニカル指標による手仕舞い……303

MQL5のトレード関数を利用したEAの問題点……189

時間の経過による手仕舞い……311

第３章 システムトレードプログラミング
3-1

3-5

トレンドフィルター……325

EA作成のためのオリジナルライブラリー――――― 196

オリジナルライブラリーの基本的な考え方……197

エントリーシグナルのフィルター ― ――――――― 324

タイムフィルター……334
3-6

待機注文による仕掛け―――――――――――――― 343

MQL4用オリジナルライブラリーのデータ構造……199

IFDを繰り返す注文……343

MQL5用オリジナルライブラリーのデータ構造……206

条件付き指値注文……348

MQL4/MQL5のオリジナルライブラリー関数……216
3-2

3-7

EAの基本構成――――――――――――――――― 226

複数のポジションに対応してIFDを繰り返す注文……360

オリジナルライブラリーの読み込み……228
マジックナンバーの指定……230
特別な関数の記述……231
価格の最小刻み幅とpip(s)について……233

複数のポジションを扱うシステム――――――――― 360

複数の売買システムの組み込み……365

第４章

ストラテジーテスターを使った売買システムの評価

4-1

MT4を使ったEAのバックテスト― ――――――― 380

コンパイルでの注意点……235

バックテストのための設定項目……380

MQL5の仮想ポジション初期化での注意点……237

過去データの取得……385

3-3

仕掛けのパターン―――――――――――――――― 241

エントリーシグナルの生成……241
順張りシグナルによる仕掛け……250

テスターのモデル選択……386
4-2

MT5を使ったEAのバックテスト― ――――――― 389

バックテストのための設定項目……389

目次

CONTENTS

さいごに―――――――――――――――――――――――― 491

過去のデータの取得……393
テスターのモデル選択……394

付録

バックテストでの注意点……394
4-3

売買システムの評価――――――――――――――― 401

レポートの見方……401
4-4

本書オリジナルライブラリー ― ――――――――― 493

MQL4用MyPosition.mqh……494
MQL5用MyPosition.mqh……502

MT4を使ったEAの最適化― ―――――――――― 410

MyDateTime.mqh……524

最適化のための設定項目……410
索引――――――――――――――――――――――――― 527

最適化の結果……415
4-5

MT5を使ったEAの最適化― ―――――――――― 419

図索引―――――――――――――――――――――――― 536
プログラムリスト索引――――――――――――――――― 538

最適化のための設定項目……419
最適化の結果……425
バックテストとフォワードテスト……428
シンボルの最適化……432

第５章

MQL4/MQL5関数一覧と互換性
予約変数……436		

特殊関数……437

共通関数……438		

配列関数……440

変換関数……442		

数学関数……443

文字列関数……445		

日付・時間関数……447

口座情報関数……449		

チェック関数……451

ColumnMT4で対応してMT5で対応しなくなった機能 …… 46
符号つき整数と符号なし整数 …… 92
MT5で追加されたスプレッドと出来高のデータ …… 114
スマートフォン向けのプッシュ通知機能 …… 192
クラスの機能を使った標準ライブラリー …… 225

マーケット情報関数……453

EAの自動生成ツール …… 377

時系列・指標データアクセス関数……454

メタエディターのデバッガーとプロファイラー …… 400

チャート操作関数……457

トレード関数……461

大域変数関数……465		

ファイル関数……466

カスタム指標関数……470

オブジェクト関数……473

テクニカル指標関数……476

列挙型定数……485

売買システムとカーブフィッティング …… 434

索引

int TimeHour(datetime val){
MqlDateTime dt;
TimeToStruct(val, dt);
return(dt.hour);}int TimeMinute(datetime val){
MqlDateTime dt;
TimeToStruct(val, dt);
return(dt.min);}int TimeSeconds(datetime val){
MqlDateTime dt;
TimeToStruct(val, dt);
return(dt.sec);}
int TimeDayOfWeek(datetime val){
MqlDateTime dt;
TimeToStruct(val, dt);
return(dt.day_of_week);}
int TimeDayOfYear(datetime val){
MqlDateTime dt;
TimeToStruct(val, dt);
return(dt.day_of_year);
}

＜索引＞
C
C++ 言語……85

記号・数字

char……64
Close[]……61
color……53#define……68, 229

CopyBuffer()……125#include……229

CopyClose()……277#property……96

CopyHigh()……278#property indicator_chart_window……96

CopyLow()……278_Digits……87

CopyOpen()……278_LastError……87

CrossDown()……255_Period……87

CrossDownClose()……276_Point……87

CrossUp()……255_Symbol……87

CrossUpClose()……276

１分足 OHLC……391

Ｃ言語……48

A

D
datetime……54

ArraySetAsSeries()……106

Day()……313

Ask……61

DayOfWeek()……313
DDE サーバー……46

B

deinit()……62
Digits……61
DLL……37

Bars……61

double……49, 50

BASE_LINE……138
Bid……61bool……52

E
EA……31
EMA……151
EntrySignal()……242

526

527

索引

enum……68

IFD を繰り返す注文……360

LOWER_BAND……138

MyOrderOpenPrice()……222

ENUM_APPLIED_PRICE……100iMA()……116

LWMA……117

MyOrderOpenTime()……222

ENUM_DRAW_TYPE……98

iMAOnArray()……149

MyOrderPrint()……239

ENUM_LINE_STYLE……99

indicator_applied_price……100

MyOrderProfit()……223

ENUM_POSITION_PROPERTY_DOUBLE

indicator_buffers……97……188
ENUM_POSITION_PROPERTY_INTEGER

INDICATOR_CALCULATIONS……104

MyOrderProfitPips()……223
MyOrderSend()……219

indicator_chart_window……96

MetaQuotes……2MyOrderStopLoss()……223

indicator_colorN……99

MetaQuotes ID……193

MyOrderTakeProfit()……223

INDICATOR_DATA……104

Minute()……313

MyOrderType()……221

indicator_height……100

MODE_LOWER……68

MyPosition.mqh……197

ENUM_STATISTICS……423

indicator_labelN……100

MODE_MAIN……68

ex4……30

indicator_levelcolor……99

MODE_UPPER……68

ex5……30

indicator_levelN……99

Month()……313

extern……101

indicator_levelstyle……100

mq4……28

indicator_levelwidth……99

mq5……28

OnBookEvent()……91

indicator_maximum……99

mqh……36

OnCalculate()……90

indicator_minimum……99

MQL4……30

OnChartEvent()……90

indicator_plots……97, 100

MQL5……30

OnDeinit()……90

false……52

indicator_separate_window……97

MQL5_TESTING……396

OnInit()……89

FilterSignal()……324

indicator_styleN……99

MQL5InfoInteger()……396

OnStart()……89

float……67

indicator_typeN……98

MqlDateTime……314

OnTester()……91

for……542

indicator_widthN……99

MqlTick……88

OnTick()……90

IndicatorBuffers()……49

MqlTradeRequest……179

OnTimer()……90

IndicatorCounted()……111

MqlTradeResult……186

OnTrade()……91

IndicatorRelease()……126

mqt……38

OP_BUY……170

init()……62

MyCheckPosition()……218

OP_BUYLIMIT……170

High[]……61

input……101

MyDateTime.mqh……316

OP_BUYSTOP……170

HistorySelect()……239

int……49

MyDeinitPosition()……218

OP_NONE……221

MyInitPosition()……218

OP_SELL……170

MyOrderClose()……220

OP_SELLLIMIT……170

MyOrderClosePrice()……223

OP_SELLSTOP……170

MyOrderDelete()……220

Open[]……61

log……37

MyOrderLots()……222

ORDER_FILLING_FOK……181

iBands()……130

long……64

MyOrderModify()……221

ORDER_FILLING_IOC……181

iCustom()……145

Low[]……61

MyOrderOpenLots()……222

ORDER_FILLING_RETURN……181……188
ENUM_POSITION_PROPERTY_STRING
……188

F

H

Hour()……313

I

528

M

L

O

529

索引

ORDER_TIME_DAY……181

P

ORDER_TIME_GTC……181

SMA……120

V

SMMA……117

ORDER_TIME_SPECIFIED……181

Period()……358

Spread[]……108

ORDER_TIME_SPECIFIED_DAY……181

PeriodSeconds()……358

start()……62

ORDER_TYPE_BUY……180

PipPoint……235

StartHistory……217

ORDER_TYPE_BUY_LIMIT……180

pips……233

STAT_BALANCE_DD……423

ORDER_TYPE_BUY_STOP……180

Point……61

STAT_PROFIT……423

ORDER_TYPE_BUY_STOP_LIMIT……180

POSITION_VOLUME……189

STAT_TRADES……423

ORDER_TYPE_SELL……180

PositionGetDouble()……188

string……51

ORDER_TYPE_SELL_LIMIT……180

PositionGetInteger()……188

Symbol()……170

ORDER_TYPE_SELL_STOP……180

PositionGetString()……189

SymbolInfoTick()……88

ORDER_TYPE_SELL_STOP_LIMIT……180

POSITIONS……229

OrderClose()……159

PositionSelect()……187

OrderClosePrice()……167

prev_calculated……112

OrderCloseTime()……168

Price[]……109

T

Volume[]……61

Y
Year()……313

い
板画面表示……25
遺伝的アルゴリズム……414

OrderComment()……168

TesterStatistics()……423

移動平均……116

OrderCommission()……168

Tick_volume[]……108

移動平均乖離率……138

Time[]……61

インストール……16

OrderDelete()……163

R

OrderExpiration()……168

TimeCurrent()……312

OrderLots()……168

rates_total……112

TRADE_ACTION_DEAL……180

OrderMagicNumber()……168

RefreshIndicators()……252

TRADE_ACTION_MODIFY……180

OrderModify()……159

RefreshPrice()……292

TRADE_ACTION_PENDING……180

OrderOpenPrice()……168

RetrieveHistory……217

えTRADE_ACTION_REMOVE……180

エキスパートアドバイザー……31

OrderOpenTime()……169

TRADE_ACTION_SLTP……180

エグジット……284

OrderProfit()……169

TRADE_RETCODE_DONE……187

エントリー……241

true……52

エントリーシグナル……241

U

おOrderSelect()……171

S

OrderSend()……159

530

OrderStopLoss()……169

Seconds()……313

OrdersTotal()……167

SELECT_BY_POS……166

OrderSwap()……169

SELECT_BY_TICKET……166

OrderSymbol()……169

SendNotification()……194

uchar……64

オーバーロード……85

OrderTakeProfit()……169

set……37

uint……64

オープンポジション……157

OrderTicket()……169

SetIndexBuffer()……103

ulong……64

オプティマイズ……391

OrderType()……170

short……64

UPPER_BAND……138

SlippagePips……216

ushort……64

531

索引

か

け

順張りシグナル……250

待機注文……157

上位ライン……131

タイムフィルター……334
ダウンロード……16

カーブフィッティング……434

気配値表示……20

条件付き指値売り……180

外部パラメータ……101

現在形成中のバー……279

条件付き指値買い……180

下位ライン……131
カウンタートレンドシステム……267
カウントダウン注文……202

条件付き指値注文……348

こ

過去データ……385
口座残高ドローダウン……408

仮想ポジション……206

口座情報……35

勝ちトレード数……406

構造体……75

カラーネーム……54

コントロールポイント……388

関数……59コンパイル……30, 235

完全アルゴリズム……420

最小刻み幅……233

すスクリプトプログラム……31

チャートウィンドウ……17
注文履歴……173

つスプレッド……108
スリッページ……234

ツールボックス……22

せて

期待損益……412

最小取引単位……282

逆指値注文……157

最大ドローダウン……407

逆張りシグナル……267

最適化……380

整数……64

定数……49

逆張りシステム……267

指値注文……157

全ティック……388

ティック時実行関数……232

キャスト……70

参照渡し……81

キャンセル注文……159
共通バッファ……122

くしティックチャート……20

そデータウィンドウ……21
データ型……48
データ型……48

総トレード数……406

出来高……108

仕掛け……241

ソースファイル……28

テクニカル指標関数……115

時系列配列……56

損切り……284

テクニカル指標ハンドル……123

クラス……225

資産曲線……384

クローズポジション……159

実行ファイル……30
実数……67

手仕舞い……284

たテスターのモデル……386
デバッガー……26, 400
デモ口座……17

自動生成ツール……377

532

チケット番号……170
チャート……8, 10

ストラテジーテスター……24

さち

初期証拠金……383
シンボルの最適化……432

カスタム指標プログラム……31

き

証拠金ドローダウン……408

自動売買……41

ターミナル……22

指標バッファ……100

大域変数……211

533

索引

と
特別な関数……61
取引リスト……159

標準ライブラリー……225

ふ

め

れ

メタエディター……26

列挙型……67

メンバー……76

トレイリングストップ……293
トレードイベント……395

フィルター……324

トレンド……250

フォワードテスト……26, 428

トレンドフィルター……325

複数のポジション……360

トレンドフォローシステム……250

符号なし……65

ドローダウン……407

プッシュ通知機能……192
プライスボード……21

な

プリプロセッサ命令……96

へ

約定履歴……173

よ
予約変数……60

ヘッダーファイル……228
変数……49はや

予約配列……58
ベースライン……131

値渡し……80

論理……64
文字列……51

プロフィットファクター……412

成行注文……157

ねろ

プログラミング言語……30
プロファイラー……26, 400

ナビゲーター……22

もほら
ランダム遅延……390

売買ライン……232
始値のみ……388

ポイント……233

バックテスト……26, 380

ポジション番号……205

り

ボリンジャーバンド……129

ひリカバリーファクター……409

ま非時系列配列……57
ビジュアルモード……382

利食い……284
両建て……190
履歴リスト……159

マジックナンバー……161, 230

ヒストリーセンター……385

534

535

索引

＜図索引＞

第１章
図 1.1

起動画面

図 1.2

サブウィンドウの選択メニュー

図 1.3

気配値表示ウィンドウ

図 1.4

データウィンドウ

……

21

図 1.5

ナビゲーターウィンドウ

……

図 1.6

ターミナルウィンドウ

図 1.7

ストラテジーテスターウィンドウ

図 1.8

MT5 の板画面表示

図 1.9

メタエディターの画面

図 1.10

……

18
……

……
20
22

……

……

19

……

24

……

29

図 1.11

チャートに表示しているカスタム指標のリスト

図 1.12

EA をチャート上から削除する

図 1.13

プログラムからトレードするための設定

……

……
……

32
33

34
……

42

第２章
図 2.1

MT5 での外部パラメータ

図 2.2

OnCalculate() の２番目の書式に対応するプロパティ画面

図 2.3

移動平均の例

図 2.4

ボリンジャーバンドの例

図 2.5

移動平均乖離率の例

……

102

116
……

129

138

図 2.6 「CustomSM_CI」のチャートへの挿入例
図 2.7

MT4 でのトレードの流れ

……

158

図 2.8

MT5 でのトレードの流れ

……

172

第３章
図 3.1

536

MT4 の注文送信画面……

チャート上で仮想ポジションの売買ポイントのみを表示させる設定

……

214

図 3.4

MT4 で「Generic1_EA.mq4」をコンパイルした結果

……

236

図 3.5

MT5 で「Generic1_EA.mq5」をコンパイルした結果

……

237

図 3.6

２本の移動平均線の交差による順張りシグナルの例

図 3.7

ボリンジャーバンドによる逆張りシグナルの例

……

……

……

215

251

267

第４章

25

……

売買ポイントと売買価格ラインの表示例

図 3.3

23

カスタム指標プログラム名の右クリックメニュー

……

図 3.2

203

……

156

……

図 4.1

資産曲線の例

図 4.2

ヒストリー・センターに古い日付の仮データを追加

……

385

図 4.3

資産曲線の例

図 4.4

最大ドローダウン

図 4.5

最適化のセッティング画面

……

411

図 4.6

パラメータの変化幅の設定

……

411

図 4.7

テスト中の画面

図 4.8

最適化の結果図 4.9

最適化のグラフ

……

……

386

393
……

……

408

……

412
415

……

416

図 4.10最適化の 2-D グラフ……

図 4.11

最適化の設定画面

図 4.12

パラメータの変化幅の設定

図 4.13

最適化の結果図 4.14最適化のグラフ

図 4.15最適化のグラフ（1-D） ……

426

図 4.16

最適化のグラフ（2-D） ……

427

図 4.17

最適化のグラフ（3-D） ……

427

図 4.18

フォワードテストの設定画面……

図 4.19フォワードテストの結果

図 4.20フォワードテスト 2D グラフ……

図 4.21

シンボル最適化の結果

433

417

110
……

……

419
……

420

425

……

426

……

……

430

431
431

537

＜プログラムリスト索引＞

Bands_CI.mq4 …… 133

MA3Cross1_EA.mq4 …… 304

Bands_CI.mq5 …… 134

MA3Cross1_EA.mq5 …… 307

BBCross0_EA.mq5 …… 397

MAKairi_CI.mq4 …… 139

BBCross1_EA.mq4 …… 268

MAKairi_CI.mq5 …… 140

BBCross1_EA.mq5 …… 271

MultiSystem_EA.mq4 …… 366

BBCross1ET_EA.mq4 …… 317

MultiSystem_EA.mq5 …… 370

BBCross1ET_EA.mq5 …… 320

RIFD_EA.mq4 …… 344

BBCross1Limit_EA.mq4 …… 349

RIFD_EA.mq5 …… 345

BBCross1Limit_EA.mq5 …… 352

RIFD2_EA.mq4 …… 361

BBCross1Time_EA.mq4 …… 335

RIFD2_EA.mq5 …… 362

BBCross1Time_EA.mq5 …… 338
BBCross1Trend_EA.mq4 …… 327
BBCross1Trend_EA.mq5 …… 330
CustomSM_CI.mq4 …… 152
CustomSM_CI.mq5 …… 154
Generic1_EA.mq4 …… 226
Generic1_EA.mq5 …… 227
Generic2_EA.mq4 …… 243
Generic2_EA.mq5 …… 244
MA_CI.mq4 …… 121
MA_CI.mq5 …… 127
MA2Cross1_EA.mq4 …… 257
MA2Cross1_EA.mq5 …… 264
MA2Cross1SL_EA.mq4 …… 286
MA2Cross1SL_EA.mq5 …… 289
MA2Cross1TS_EA.mq4 …… 296
MA2Cross1TS_EA.mq5 …… 299538【著者紹介】

豊嶋久道（とよしま・ひさみち）
1965 年山口県生まれ。1988 年慶應義塾大学理工学部電気工学科卒業。1993 年慶應義塾大学大学
院博士課程修了。博士（工学）。大学生のころからＣ言語プログラミングに親しみ、実用系のフリーソフトウェア、シェアウェアを公開。2003 年より FX 取引を始め、システムトレードの道へ。
2011 年合同会社Ｔ＆Ｙ総合研究所設立。FX 自動売買システムの最適化の研究を行っている。
主な著書に『FX メタトレーダー入門』『FX メタトレーダー実践プログラミング』（パンローリング）がある。

著者 WEB：Toyolab FX―手ぶらで為替取引
http://forex.toyolab.com/