月別アーカイブ: 2016年7月

メタエディターでプログラムを作成修正する

メタエディターでプログラムを作成する時の手順、プログラムを作成・修正する時に知っておくと便利な機能をご紹介します。

1.新規でプログラムを作成する手順
2.ソースを作成・修正する上で便利な機能
名前リストを表示する
パラメータ情報を表示する
関数リストを表示する
定義へ移動する
コメントを挿入する
関数ヘッダーを挿入する
ブロックコメントを挿入する
大文字にする
小文字にする
行インデントを増やす
行インデントを減らす

1.新規でプログラムを作成する手順

MQL4ウィザードを使用すると簡単にプログラムの枠組みが作成できます。
既にあるプログラムソース全体をコピーして修正するやり方もありますが、新規に作成する時は、MQL4ウィザードを使用して枠を作成して、必要な部品を既存のソースからコピーしてくるやり方を励行するようにしています。

MQL4ウィザードは、
メニュー → ファイル → 新規作成 を選択するか、ツールバーの 『新規作成』 ボタンをクリックすると表示されます。

MT4メタエディターMQL4ウィザードを開く

MQL4ウィザード

MT4メタエディターMQL4ウィザード

A.EA(エキスパートアドバイザー)を作成する

MQL4ウィザード画面でエキスパートアドバイザー(テンプレート)を選択して次へをクリックします。

MT4メタエディターMQL4ウィザードエキスパートアドバイザーの一般プロパティ

1:名前(EAの名称)、2:著作権表示、3:HomePageのアドレスを入力します。

プログラム開始時に指定するパラメータがあれば、4の追加ボタンをクリックして必要なパラメータを追加します。

5:追加したパラメータは、名前とデータタイプと初期値を指定します。

入力した内容はこの後プログラムソース上で変更することもできます。

入力が完了したら、次へをクリックします。

MT4メタエディターMQL4ウィザードエキスパートアドバイザーのイベントハンドラー

イベントハンドラーを指定する画面が表示されますが、チェックせずに次へをクリックします。
(イベントハンドラーで処理する処理内容がある時はチャックしますが)

MT4メタエディターMQL4ウィザードのエキスパートアドバイザーのテスターイベントハンドラー

テスターイベントハンドラーを指定する画面が表示されますが、チェックせずに完了をクリックします。
(テスターハンドラーで処理する処理内容がある時はチェックしますが)

MT4メタエディターMQL4ウィザードエキスパートアドバイザーの作成されたソース

指定した名前で、EAの必要最低限のソースの枠組みが作成されます。

B.カスタムインディケーターを作成する

MT4メタエディターMQL4ウィザードのインディケーターの作成

MQL4ウィザード画面でカスタムインディケーターを選択して次へをクリックします。

MT4メタエディターMQL4ウィザードのインディケーターの一般プロパティ

1:名前(インディケータの名称)、2:著作権表示、3:HomePageのアドレスを入力します。

プログラム開始時に指定するパラメータがあれば、4:追加をクリックして必要なパラメータを追加します。

5:追加したパラメータは、名前とデータタイプと初期値を指定します。

入力した内容はこの後プログラムソース上で変更することもできます。

修正が完了したら、次へをクリックします。

MT4メタエディターMQL4ウィザードのインディケーターのイベントハンドラー

イベントハンドラーを指定する画面が表示されますが、チェックせずに次へをクリックします。
(イベントハンドラーで処理する処理内容がある時はチェックしますが)

カスタムインディケータの描画プロパティを指定する画面が表示されます。

MT4メタエディターMQL4ウィザードのインディケーターの描画プロパティー

1:サブウィンドウに表示する場合サブウィンドウに表示をチェックします。
メインウィンドウ(チャート上)に表示する場合サブウィンドウに表示をチェックしません。

プロット欄に計算した結果を表示するインディケータの表示形式を指定します。2:追加をクリックして必要な表示形式を追加します。

3:ラベル名とタイプと色を指定します。

入力した内容はこの後プログラムソース上で変更することもできます

指定が完了したら、完了をクリックします。

MT4メタエディターMQL4ウィザードのインディケーターの作成されたソース

指定した名前で、カスタムインディケーターの必要最低限のソースの枠組みが作成されます。

C.スクリプトを作成する

MT4メタエディターMQL4ウィザードのスクリプト選択

MQL4ウィザード画面でスクリプトを選択して次へをクリックします。

MT4メタエディターMQL4ウィザードのスクリプトの一般プロパティー

1.スクリプトの名前、2:著作権表示、3:HomePageのアドレスを入力します。

プログラム開始時に指定するパラメータがあれば、4:追加をクリックして必要なパラメータを追加します。

5:追加したパラメータは、名前とデータタイプと初期値を指定します。

入力した内容はこの後プログラムソース上で変更することもできます。

修正が完了したら、次へをクリックします。

MT4メタエディターMQL4ウィザードのスクリプトのソース

指定した名前で、スクリプトの必要最低限のソースの枠組みが作成されます。

2.ソースを作成・修正する上で便利な機能

名前リストを表示する

作成編集中のプログラムコードに挿入可能な関数名候補一覧を表示することができます。
関数名、定数名、型の列挙値が候補の一覧として表示されます。

先頭の一文字を入力して、メニュー → 編集 → 名前リスト を選択すると、入力した文字から始まる候補が一覧で表示されます。

MT4メタエディター名前リストの表示例1

上記の例は、dを入力して名前リストを表示した例です。

MT4メタエディター名前リストの表示例2

上記の例は、dを入力して名前リストを表示しておいて、eを入力した結果表示された例です。
MQL4ではアルファベットの大文字と小文字は区別されます。

アルファベットは大文字小文字が区別されて認識されます。
候補が表示された状態で2文字目を入力すると、入力した2つの文字に一致した候補が表示されます。
関数名や定数や列挙値をうろ覚えでも簡単に探すことができます。

ショートカットキー Ctl+Space で名前リストを表示する。

先頭数文字を入力して、Ctl+Spaceキーで名前リストを表示することもできます。
マウスを握る必要が無いので素早く簡単に名前リストを表示できます。

パラメータ情報を表示する

名前リストを使用して関数名を入力できたけれども関数のパラメータがわからない時、カーソルがある位置の関数のパラメータ情報を表示することができます。

関数名の後に続く ( の位置にカーソルを合わせて
メニュー → 編集 → パラメータ情報 を選択すると、関数のパラメータ情報が表示されます。

MT4メタエディターパラメータリストの表示例1

上記の例は、iMA() と入力して括弧の間にカーソルを置いてパラメータ情報を表示した例です。

MT4メタエディターパラメータリストの表示例2

左から順番に入力しますが、1番目のパラメータを入力し , を入力すると2番目のパラメータがハイライトされます。

ショートカットキー Ctl+Shift+Space でパラメータ情報を表示する。
関数名の後に続く ( の位置にカーソルを合わせて Ctl+Shift+Spaceキーでパラメータ情報を表示することもできます。
マウスを握る必要が無いので素早く簡単にパラメータ情報を表示できます。

関数リストを表示する

現在編集しているプログラムソースの全てのの宣言関数のリストを表示できます。

リストを表示するには、 メニュー → 編集 → 関数リスト を選択します。
関数リストが表示されます。

MT4メタエディター関数リストを表示する

表示された関数を選択すると、関数が定義されている行へジャンプします。

MT4メタエディター関数リストを表示する2

ツールバーの 『ファイル中の関数とメソッドのリスト』 ボタンをクリックしても関数リストを表示することができます。

ショートカットキー「Alt+M」を使用しても関数リストを表示することができます。

定義へ移動する

この機能は、関数や変数の定義あるいは宣言文の行へジャンプすることができます。

定義や宣言文を確認したい関数や変数にカーソルを置き、
メニュー → 編集 → 定義へ移動 を選択または
ツールバーの 『関数の定義へ移動する』 ボタンをクリックします。

MT4メタエディター定義へ移動

この例は『ExtCCIBuffer』にカーソルを置いて、移動します。

MT4メタエディター定義へ移動後の表示

定義あるいは宣言文が別のファイルにある場合は、そのファイルを開いてマウスカーソルを対応する位置に移動します。インクルードファイル(#include)への移動も行います。

ショートカットキー「Alt+G」を使用しても定義へジャンプすることができます。

また、マウスの右クリックで表示される、右クリックメニューの先頭からも定義へジャンプすることができます。

コメントを挿入する

コメント行にする

選択した各行の頭に”//”を挿入します。複数の行を選択して一気にコメント行にできます。

コメントにしたい行を選択してから、

MT4メタエディターコメント挿入1

メニュー → 編集 → 拡張 → コメント行にする を選択します。

MT4メタエディターコメント挿入2

下記の処理結果となり、コメント行となりました。

MT4メタエディターコメント挿入3

ショートカットキーは、マニュアルに記載がありますが日本語キーボードでは機能しないようです(2016年7月7日現在)

コメント行の解除

各選択行の頭から”//”を削除します。複数のコメント行を選択して一気にコメント解除できます。

コメント解除したい行を解除してから、

MT4メタエディターコメント解除1

メニュー → 編集 → 拡張 → コメント行の解除 を選択します。

MT4メタエディターコメント解除2

下記の処理結果となり、コメント行が解除されました。

MT4メタエディターコメント解除3

ショートカットキーは、マニュアルに記載がありますが日本語キーボードでは機能しないようです(2016年7月7日現在)

関数ヘッダーを挿入する

関数のヘッダコメントテンプレートを挿入します。
以下のような3行のコメントテンプレートが挿入されます。

//+——————————————————————+
//|                      |
//+——————————————————————+

関数ヘッダーを挿入したい位置にカーソルを置いて、

MT4メタエディター関数ヘッダー挿入1

メニュー → 編集 → 拡張 → 関数ヘッダー を選択します。

MT4メタエディター関数ヘッダー挿入2

関数ヘッダーブロックが挿入されました。

MT4メタエディター関数ヘッダー挿入3

ショートカットキー「Ctl+.」を使用しても関数ヘッダーを挿入することができます。

ブロックコメントを挿入する

1行ラインコメントを挿入します。

//—

1行ラインコメントを挿入したい位置にカーソルを置いて、
メニュー → 編集 → 拡張 → ブロックコメント を選択します。

MT4メタエディターブロックコメント挿入

ショートカットキー「Ctl+/」を使用しても1行ラインコメントを挿入することができます。

大文字にする

選択した文字列を大文字に変換できます。

MQL4ではアルファベットの大文字と小文字は区別されます。ソースを記述していくうちに定義の大文字小文字が混ざって混乱してしまった時に修正するのに便利だと思います。

大文字に変換したい文字列を選択して、
メニュー → 編集 → 拡張 → 大文字にする を選択します。

MT4メタエディター大文字にする

ショートカットキー「Ctrl+Shift+U」を使用しても大文字に変換できます。

小文字にする

選択した文字列を小文字に変換できます。

MQL4ではアルファベットの大文字と小文字は区別されます。ソースを記述していくうちに定義の大文字小文字が混ざって混乱してしまった時に修正するのに便利だと思います。

小文字に変換したい文字列を選択して、
メニュー → 編集 → 拡張 → 小文字にする を選択します。

MT4メタエディター小文字にする

ショートカットキー「Ctrl+U」を使用しても小文字に変換できます。

行インデントを増やす

プログラムのソースコードを人が読んでわかりやすいように段落を揃えます、その時に便利なのが行インデントです。

選択した行の頭に3つの空白文字(またはひとつのタブ文字)を挿入することができます。

行の先頭に空白を挿入したい行を選択するか、その行の頭にカーソルを置き、

MT4メタエディター行インデントを増やす1

メニュー → 編集 → 拡張 → 行インデントを増やす を選択します。

MT4メタエディター行インデントを増やす2

選択した行の先頭に3つの空白が挿入されました。

MT4メタエディター行インデントを増やす3

複数の行に空白を挿入する場合はそれらの行を選択してください。

行インデントを減らす

プログラムのソースコードを人が読んでわかりやすいように段落を揃えます、その時に便利なのが行インデントです。

選択した行の頭の3つの空白文字(またはひとつのタブ文字)を削除することができます。

行の先頭の空白を減らしたい行の先頭にカーソルを置き、

MT4メタエディター行インデントを減らす1

メニュー → 編集 → 拡張 → 行インデントを減らす を選択します。

MT4メタエディター行インデントを減らす2

選択した行の先頭に3つの空白が削除されました。

MT4メタエディター行インデントを減らす3

ショートカットキー「Tab+Shift」を使用しても3つの空白文字を削除できます。

メタエディターの起動 初期画面と初期設定

メタエディター(Meta Editor)はMQL4でプログラムを開発する開発環境を提供しています。ここでは、初めてメタエディターを開くときの注意点を紹介します。
MT4では、プログラミング言語MQL4を使ってエキスパートアドバイザー、カスタムインディケーター、スクリプト等のプログラムを作成することができます。これらのプログラムは自動トレードを実行したり、新しいアイディアのインディケータを実行したりすることができます。

1.メタエディターの起動方法
2.日本語表示にしましょう
3.ヘルプを開いて、英語のままの時は
4.データフォルダーについて(EA、インディケーター、スクリプトの保存場所)
5.ナビゲーターウィンドウを表示する

1.メタエディターの起動方法

・ツールバーから起動する

MT4ツールバーのメタエディターの起動ボタンをクリックします。

MT4メタエディターをツールバーから起動する

・メニューバーから起動する

MT4メニューバーのツール→メタエディターを選択します。

MT4メタエディターをメニューから起動するから

・F4キーで起動する

MT4のウィンドウでF4キーを押します。

2.日本語表示にしましょう

メタエディターを初めて開くと英語バージョンで開きます

メタエディターのメニューバー → View → Languages → Japanese を選択します。

MT4メタエディター初期画面英語版

言語の変更を適用するにはメタエディターの再起動が必要なので、restart ボタンをクリックしてメタエディターを再起動します。

MT4メタエディター再起動

メタエディターが日本語で表示されて起動しました。

MT4メタエディター初期画面日本語版

ヘルプを開いて、英語のままの時の対応

メニューバーのヘルプ→ヘルプトピックスを開いて、ヘルプの言語が英語のままの時は、以下の手順を試してみてください。

1.メニューバーのツール→オプションを選択して、オプションウィンドウを表示する。

MT4メタエディターオプション設定をメニューから表示する

2.オプションウィンドウのヘルプをクリックする。

MT4メタエディターオプションウィンドウ

3.メタエディターユーザーガイドが日本語で表示されます。

MT4メタエディターユーザーガイド日本語

3.データフォルダーについて(EA、インディケーター、スクリプトの保存場所)

MT4で実行するEA、インディケーター、スクリプトは必ずMT4のデータフォルダーの中のそれぞれのフォルダーの中に保存しなければなりません。

データフォルダーの開き方とPC上の場所について
メニューバー → ファイル → データフォルダーを開くを選択します。

MT4データフォルダーを開く

以下のようなフォルダーウィンドウが開きます。

MT4メタエディターデータフォルダーの構成

上部がMT4のデータフォルダーの最上位下位層となります。
下部がプログラム関連のMQL4フォルダーの構成となります。

データフォルダーのPC上の場所
Windows7の場合
C:\Users\UserName\AppData\Roaming\MetaQuotes\Terminal\71808ACDDF4589A555C107AF1E5AEBA0

1つのPCに複数のMT4がインストールされている場合、32桁の「71808ACDDF4589A555C107AF1E5AEBA0」で識別します。
証券会社が同じでも、MT4が二つインストールされていれば、32桁のフォルダーの識別IDは異なります。

EA、インディケーター、スクリプトの保管場所はそれぞれ以下の通りです。

EAエキスパートアドバイザー:\MQL4\Experts

インディケーター:\MQL4\Indicators

スクリプト:\MQL4\Scripts

4.ナビゲーターウィンドウを表示する

MT4で稼働するプログラム類を保管したMQL4フォルダーをナビゲートするウィンドウをメタエディターの左側に表示することができます。

メタエディターのメニューから開く メニュー → 表示 → ナビゲーター

MT4メタエディターのナビゲーターをメニューから開く

ツールバーから開く ツールバーの「MQLライブラリーを開く」ボタンをクリックする

MT4メタエディターナビゲーターをツールバーから開く

ナビゲータウィンドウへは、MT4のプログラム類が保存されている、\MQL4\以下のフォルダーが表示されます。

MT4メタエディターナビゲーター右クリックで処理

ナビゲータウィンドウから、修正するプログラムを選択して右クリックで、ソースを開いたり、コンパイルすることができます。

MT4 Build 985, 988リリースについて

MetaQuotes社から、MT4のVersion4.00 Build 985がリリースされました。
前回の970がリリースされてからわずか1ヶ月で新しいバグフィックス版?ですか・・・と思いながら確認してみます。

アナウンスのタイトルは、
『MetaTrader 4プラットフォームの新バージョン build 985:内蔵MQL5.communityチャット』
となっています。
ん?、コミュニティーチャットですか・・・

mql5Communityのアカウントを持てば、チャットが可能となるそうです・・・

MetaQuotes社の正式アナウンス
MetaTrader 4プラットフォームの新バージョン build 985:内蔵MQL5.communityチャット

以下正式アナウンスを参照しながら、コメントさせていただきます。

1.MT4のターミナルでmql5.Communityのメンバーとチャットができる

2.ターミナル:ターミナル起動時に内部メールのデータベースの読み込みが最適化されました。

以下の4つはMQL4言語の機能拡張とバグ修正が含まれるようですね

3.任意のチャート上の価格およびタイムラインの表示/非表示の機能が追加されました。以前はMQL4プログラムは、実行されているチャートのCHART_SHOW_PRICE_SCALEとCHART_SHOW_DATE_SCALEのみ変更することができました。

プログラムを実行しているチャート以外の開いているチャートの縦軸と横軸を表示非表示できるそうですが・・・どんな時に使うのでしょう?
きっと私の知らないところでこういう機能が必要なんでしょう。

4.MQL4:MarketInfo関数の為のMODE_CLOSEBY_ALLOWEDプロパティが追加されました。TRUE値は指定された商品にClose By(反対ポジションの決済)の操作が許可されていることを意味しています。

MarketInfo関数は、商品(通貨ペア)に関する様々な設定データを取得する関数です。
推測ですが、両建てポジションを持っている時に両建て解除を許す設定値を得られるのだと思われます。

5.MQL4:誤ったパラメータ値に繋がっていた、文字列パラメータのエントリーポイントOnChartEventへの引き渡しが修正されました。OnChartEventは、チャートイベントの追跡をすることができます(キーボードのキーを押す、マウスの移動など)。

OnChartEventは今のところ使っていないので、ふ~んバグがあったんだという感じですね。

6.MQL4:ObjectsDeleteAll関数を使ったグラフィックオブジェクトの大量削除が高速化されました。

これはありがたいですね、ラインオブジェクトを削除するケースはあって、意外とレスポンスが悪いなと感じていました。

7.シグナル:RUBとRURを含む通貨ペアの自動比較が改善されました。

EAによるシグナル配信に関する改善ですね。

8.テスター:テスト中のグラフィックオブジェクトの作成時間が修正されました。以前はテスト時間の代わりにターミナルの現在時刻になっていました。

バグ修正ですね。

9.メタエディター:置換えダイアログを開く際の、置換えテキストフィールドのフォーカス設定が修正されました。

細かいことですが、バグ修正ですね

10.メタエディター:現在の位置から上に検索をする場合のテキストの複数の置換が修正されました。

現在位置から上への置き換えはなぜか使わなかったので、知りませんでした・・・バグあったんですね。

11.クラッシュログで報告された不具合を修正しました。

これもバグ修正ですね。

この内容であれば、単なるバグフィックスと機能拡張のようなのであんまり問題はなさそうなので、LiveUpdateしておこうと思います。
最も使い始めて、何か影響があるかもしれませんね・・・

Live口座のMT4は最後にLiveUpdateすることにしましょう。

チャネルライン

チャネルには、経路、水路、溝、道筋、等の意味があります。また、価格は往々にして2本の平行線の中で動くことがあります。FXのテクニカルでいうチャネルは2本の平行なラインで囲まれた範囲を経路のように価格が動くことをチャネルの中での値動きと言います。
価格がチャネルの中で動くのか、チャネルを超えて大きく動くのか、チャネルラインを引いてトレードのエントリーとエグジットに活かします。

1.チャネルラインの引き方
2.チャネル内の値動き
3.チャネルを逸脱

1.チャネルラインの引き方

値動きを観察する2本の平行線(チャネルライン)の引き方は大きく2通りあります。

MT4でのチャネルラインの引き方はこちらを参照して下さい。

トレンドラインをベースとしたチャネルライン

チャネルライン(トレンドラインベース)の例

トレンドラインをベースとしたチャネルラインはトレンドラインをベースとしたチャネルラインです。
チャネルのペアラインは、上昇トレンドであれば、トレンドラインと平行に安値と安値の間の高値を通るラインです、下降トレンドであれば、トレンドラインと平行に高値と高値の間の安値を通るラインです。

アングル変化のチャネルライン

チャネルライン (アングル変化)の例

アングル変化のチャネルラインは、上昇トレンドであれば、高値と高値を結んだラインをベースラインとし、チャネルのペアラインは高値と高値の間の安値を通るラインです。
下降トレンドであれば、安値と安値を結んだラインをベースラインとして、チャネルのペアラインは安値と安値の間の高値を通るラインです。

2.チャネル内の値動き

トレンドラインをベースとしたチャネルライン

チャネル内の値動き (トレンドラインベース)の例

チャネルラインの中で価格が動くことを確認できれた時に、保守的にトレードするのであればチャネルのペアライン付近をロングポジションの利確のターゲットとして利用するトレード方法があります。
積極的にリスクを取るトレードをするのであれば、ペアライン付近でショートのポジションを取るトレード方法があります。

アングル変化のチャネルライン

チャネルライン内の値動き (アングル変化)の例

アングル変化のチャネルラインも基本的にはトレンドラインをベースにしたチャネルラインと判断は同じです。
一つ言えるのは、アングル変化のチャネルラインが引けるということは、トレンドの勢いが弱まってきている可能性があるということです。
アングル変化のチャネルラインの傾きが非常に緩やかである時、積極的にリスクを取るトレードをするのであれば、アングル変化のベースライン付近でショートのポジションを取るトレード方法があります。

保守的にトレードするのであればチャネルのペアライン付近をロングポジションの利確のターゲットとして利用するトレード方法を選択すべきでしょう。

3.チャネルの逸脱

トレンドラインをベースとしたチャネルラインの場合

チャネルの逸脱 (トレンドラインベース)の例

上昇のチャネルにおいてチャネルペアラインを超えて、チャネルの情報へ突き抜けてしまう場合は、現在のトレンドが強く加速されている状態と判断し、ポジションを積み増す(ピラミッディング)ポイントと判断するトレーダーもいます。

アングル変化のチャネルラインの場合

チャネルの逸脱 (アングル変化)の例

上昇トレンドの途中で、引くことができるアングル変化のチャネルラインはトレンドの勢いが弱まっていることを示唆する場合があります。
この状態で、チャネルペアラインをブレイクする時はトレンドが反転する可能性が非常に高まっています。

添付の図、チャネルの逸脱(アングル変化のチャネル)を参照して下さい。
どこかで見たチャートパターンでは無いでしょうか、そうですヘッドアンドショルダーですね。
この例の場合少しずれていますが、チャネルペアラインがヘッドアンドショルダーのネックラインとなっています。

アングル変化のチャネルラインを引くことにより、他のパターンを見逃しても結果としてエントリーポイントを発見する確率は高くなります。