メタトレ!メールマガジン

【メタトレ!】最新情報


カテゴリー: 2014年05月23日
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■メタトレ!メールマガジン                   【メタトレ!】最新情報
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

こんにちは、星野慶次です。

ビルド600からMQL4の仕様が大きく変わりました。
ビルド509以前のMT4はいずれ利用できなくなるので
新旧MQL4の変更点などを確認しておきましょう。


MQL4 ReferenceのUpdated MQL4の和訳


■MQL4の新機能

ビルド600からMQL4プログラミング言語は完全に改訂され、MQL5レベルに達しています。
今あなたは統合されたメタエディタ・ライブラリー・デバッグツールを使用してMQL4/5で売買ロボットを開発することができます。

MQL4は、学習のしやすさとメタトレーダー4ターミナルを使用している何年もの間に生成されたコードが膨大な量のため、
自動システムの開発者の間で人気があります。
しかし、言語はその主な利点から生じるいくつかの欠点を持っています - 
簡単なプログラミング言語は、複雑なシステムの開発を許可せず、また高レベル言語からデバッグライブラリの移植を妨げます。
そのため、我々はそれにMQL5言語の関数を最大限実装して完全にMQL4の機能を維持することを決定しました。
つまり、OOP(オブジェクト指向プログラミング)とネイティブコードコンパイラを含むすべての強力なMQL5機能は、
MQL4で利用できるようになります。

これを達成するために、我々はMQL4とMQL5の両方の言語を自動的にサポートする統一されたコンパイラを開発しました。
メタエディターもメタトレーダー4とメタトレーダー5プラットフォーム用の両方の統一されたアプリケーションとなります。
このように、いずれかのバージョンからMQL4とMQL5の両方をコンパイルすることが可能となります。
MQL5ストレージも利用可能になります。

MQL4アプリケーションの保護は、MQL5レベルに上昇。新しいEX4/EX5ファイルは、重大かつ完全に改訂された保護を備えています。
これは安全なEX4アプリケーションマーケットもメタトレーダー4で利用可能になることを意味しています。

また、MQL4は現在新しいグラフィカル・オブジェクトとチャートを操作するための新しい関数を備えています。
MQL5標準ライブラリはMQL4に移植され、独自のグラフィカル・インターフェースと取引のライブラリを作成する際に
新たな可能性を開発者に提供します。
今あなたはリソースを使用してメタトレーダー4で本格的なアプリケーションを作成することができます。


■MQL4言語の変更点

新しいデータ型char, short, long, uchar, ushort, uint, ulong, doubleが追加された。
これは他のC++のような言語からのコード転写を可能にします。様々な種類のデータが異なる速度で処理される。
整数データが最も速く処理される。特別なコプロセッサは、倍精度浮動小数点数型を処理するために使用される。
しかし、浮動小数点型の内部表示の複雑さにより整数よりも遅く処理される。型キャストも実装されている。

文字列は、以前はANSI形式(シングルバイト)であったが、現在、Unicode形式で表示されます。
プログラムがDLLを使用し、それらに文字列変数を渡した場合、それは考慮されるべきである。

定義済みのボリュームの変数はlong型になりました。ボリュームにアクセスするための時系列もlong型の配列で構成されています。
オーバーフローエラーを回避するために、古いMQL4プログラムではターゲットの型に
このタイプを持っているデータという明示的なキャストを使用することをお勧めします。

構造体、クラス、オブジェクトポインタ、void型、オブジェクトが自分自身への参照ができるthisキーワードが追加されました。
次のようにすべてのオブジェクト指向プログラミングの標準がサポートされています。

・カプセル化およびタイプの拡張性
・継承(インヘリタンス)
・多相性(ポリモーフィズム)
・多重定義(オーバーロード)
・仮想関数
http://docs.mql4.com/basis/oop

OOPではクラスを使用してプログラムを開発することができます。
これは、デバッグや大規模なアプリケーションの開発を容易にするだけでなく、
継承(インヘリタンス)によって以前に生成されたコードを何度も再利用する機能を提供します。
しかし、それは以前のように手続き指向のスタイルではMQL4コードが生成できないことを意味するものではありません。
新しい機能を必要としない場合は、あなたが過去に行ったようにプログラムを開発することができます。

定義済みの関数init(), deinit(), start()は互換性のため残っていますが、
現在 OnInit(), OnDeinit(), OnStart(), OnCalculate(), OnTick()が代わりに使用できます。
また、新しい定義済みのハンドラ関数 OnTimer(), OnChartEvent(), OnTester()が実装されています。
以前のMQL4では、定義済みの関数は任意のパラメータと任意の戻り値の型を持つことができ、
シグネチャではなく名前で呼び出すことができた。
新しいMQL4では、すべての定義済みの関数が厳密に呼び出し形式に対応する必要があります。
言い換えれば、正確にパラメータや戻り値の型のセットを定義している必要があります。

現在、変数名は特殊文字とポイントを含めることはできず、新しいMQL4言語のキーワードは、名前として使用することはできません。
古いMQL4プログラムは、コンパイラのメッセージを従いうことで簡単にすべてのそのようなエラーを補正するために
新しいコンパイラで再コンパイルすることができます。

優先順位のルールは現在のC言語の標準と一致します。
よくわからない場合は、明らかに信頼性を高めるために優先順位を示すため古いMQL4アプリに括弧を挿入することができます。

現在、すべての式が計算され、チェックが実行される古いMQL4のバージョンとは違って、
短縮された条件チェックが論理演算に使用されている。下記のような論理「AND」を使用した2つの条件のチェックがあるとします。

  if(condition1 && condition2)
    {
     // some block of statements
    }

もし、式condition1がfalseの場合、「false && true」は依然として「false」に等しいので、式condition2の計算は行われません。

ArrayCopyRates()は動作が変更されました。double[][6]配列への仮想コピーの代わりに、
現在はMqlRates[]配列への仮想コピーを実行します。
double[][6]配列へのコピーは互換性のためそのまま残っていますが、そのコピーは実際であって仮想ではありません。

ファイル操作では、同時に開くことのできるファイル数は現在64に達しています。
古いMQL4では32でした。最近まで、ファイルは常にFILE_SHARE_READまたはFILE_SHARE_WRITEモードで開かれていました。
現在、必要なオープンモードが明示的に指定されている必要があります。

関数の働き、変数の有効範囲、ローカル配列のメモリ開放についても変更されました。
変更数が大きいので、以前のアプローチでのMQL4プログラム開発との互換性を最大限提供するため、
新しく「#property strict」プロパティーが導入されました。
MQLウィザードを使用して新しいMQL4アプリケーションを作成する場合、このプロパティは常にテンプレートに追加されます。

下記のように、DateTime型の文字列表現は、コンパイルモードによって異なります。

  datetime date=D'2014.03.05 15:46:58';
  string str="mydate="+date;
//--- str="mydate=1394034418" - 旧コンパイラ/新コンパイラ #property strictなし
//--- str="mydate=2014.03.05 15:46:58" - 新コンパイラ #property strictあり

下記の表は、旧MQL4・新MQL4(strict指定なし)・新MQL4(strict指定あり)の違いを含んでいます。

※strict指定の仕方
#property strict

コンパイラーによる違いの表

1.は、旧MQL4について
2.は、新MQL4(strict指定なし)について
3.は、新MQL4(strict指定あり)について

1.は、旧MQL4について
2.は、新MQL4(strict指定なし)について
3.は、新MQL4(strict指定あり)について

1.init(), start(), deinit()のエントリポイントは任意のパラメータと任意の戻り値の型を持ってもよい
2.init(), start(), deinit()は、互換性の為そのまま残っているが、新たなOnInit(), OnStart(), OnCalculate(), 
OnTick(), OnTimer(), OnChartEvent(), OnTester(), OnDeinit()は厳密に呼び出し形式に対応している必要がある
3.同上

1.事実上(予約語を除く)任意の変数名には、特殊文字やポイントなどが可能である
2.変数名は特殊文字や点を持つことはできません。予約語のリストが拡張されました。
そのため、short, long, constなどのような広範囲にわたる単語が名前として使用することができません
3.同上

1.変数の有効範囲は(ネストされたブロック内でも)宣言からその関数の終わりまで
2.同上
3.変数の有効範囲は宣言からその変数を宣言したブロックの終わりまで

1.(グローバルでもローカルでも)全ての変数が0に暗黙的に初期化される
2.同上
3.グローバル変数のみ初期化されます。ローカル変数では、文字列のみ暗黙的に初期化される

1.ローカル配列はその関数を終えても開放されません
2.ローカル配列はその関数を終えると開放されます
3.ローカル配列は{}のブロックを終えると開放されます

1.範囲外配列の参照はクリティカルエラーを起こしません
2.同上、構造体とクラスについては重要なエラーなので除きます
3.範囲外配列の参照はプログラム停止のクリティカルエラーを起こします

1.構造体とクラスはありません
2.構造体とクラスが存在する。追加のデータ型が実装されている
3.同上

1.文字列はシングルバイトです。datetime型は32ビットの整数です。定義済みのボリュームの変数はdouble型です
2.文字列はUnicodeです。datetime型は64ビットの整数です。定義済みのボリュームの変数はlong型です
3.同上

1.ArrayCopyRates()は、double[][6]配列への仮想コピーが行われる
2.ArrayCopyRates()はMqlRates[]配列への仮想コピーが行われる。double[][6]配列へのコピーは互換性のため
そのまま残っていますが、そのコピーは実際であって仮想ではありません
3.同上

1.関数は型を持っていても値を返さなくてもよい。こうするため、
return(0)が自動的に関数の最後にコンパイラによって挿入されている
2.同上
3.任意の型の関数は値を返す必要があります

1.同時オープンファイル数は32
2.同時オープンファイル数は64
3.同上

1.ファイルは常にFILE_SHARE_READまたはFILE_SHARE_WRITEモードで開かれる
2.FILE_SHARE_READおよび/またはFILE_SHARE_WRITEを明示的に指定する必要があります
3.同上

※範囲外配列のエラーに特別な注意を払ってください - 多くの古いカスタムインジケータはチャート上で起動した際、
新コンパイラのstrictモードではこのエラーが表示されます。原因を見つけて、それを排除することをお勧めします。
※※新しいMQL4とMQL5では、FILE_SHARE_READとFILE_SHARE_WRITEフラグがファイル共有使用モードを担当しています。

■ファイル構造の変更点

メタトレーダー4クライアントターミナルのビルド509以前のビルドでは、下記のように全てのMQL4アプリケーションが
<ターミナルインストールフォルダ>\experts\ルートディレクトリのサブディレクトリに格納されていました。

・\experts - エキパートアドバイザー (取引ロボット)
・\experts\indicators - カスタムインジケータ
・\experts\scripts - スクリプト (チャート上で1回実行されるMQL4アプリケーション)
・\include - 他のプログラムに実装する MQH と MQ4 ファイルのソースコード
・\libraries - MQ4形式のソースコードと、それらからコンパイルされたEX4形式の実行可能ファイルのライブラリ。
これらは他のMQL4プログラムによってそこに含まれる関数の動的呼び出しのために使用される
・\files - 特別な「ファイルのサンドボックス」。MQL4アプリケーションでは、
このディレクトリ内のみファイル操作を実行することが許可されています。

新しいMQL4バージョンでは、ソースコードを格納するためのファイル構造が変更されました。
現在、すべてのMQL4のアプリケーションは<data_folder>\ MQL4\ディレクトリの適切なフォルダに配置する必要があります。

・\Experts - エキパートアドバイザー (取引ロボット)
・\Indicators - カスタムインジケータ
・\Scripts - スクリプト (チャート上で1回実行されるMQL4アプリケーション)
・\Include - 他のプログラムに実装する MQH と MQ4 ファイルのソースコード
・\Libraries - MQ4形式のソースコードと、それらからコンパイルされたEX4形式の実行可能ファイルのライブラリ。
これらは他のMQL4プログラムによってそこに含まれる関数の動的呼び出しのために使用される
・\Images - リソースに使用するための画像ファイル
・\Files - 特別な「ファイルのサンドボックス」。MQL4アプリケーションでは、
このディレクトリ内のみファイル操作を実行することが許可されています。

ビルド509からさらに新しいバージョンにメタトレーダー4ターミナルを更新する際に、
以前のバージョンの標準のルートディレクトリにある全てのMQ4, MQH, EX4ファイルは自動的にコピーされ、
適切なフォルダに再配置されます。ユーザーによって追加されたサブフォルダ及びそこに含まれるファイルは(コピー)処理されません。
必要に応じてそれらを手動で新しい場所に再配置する必要があります。

どのファイルやフォルダも、更新時に削除されません!使用されているファイルのパスを含むすべてのファイルコピー操作は、
更新中はターミナルの実行記録で固定されている。

古いEX4ファイルの新しいバージョンへの自動再コンパイルは更新中には実行されません。
ユーザーは、どのソースコードを新しいEX4バージョンにコンパイルされるべきかを自由に決定できます。
すべての古いEX4は、新たなメタトレーダー4ターミナルで動作します。
新しいコンパイラでコンパイルEX4ライブラリはまた、新しいバージョンで
コンパイルされているEX4プログラムから呼び出すことができます。
新しいコンパイラでコンパイルされたEX4ライブラリは、
新しいバージョンでコンパイルされているEX4プログラムからのみ呼び出すことができます。

いくつかのケースでは、ソースファイルで(相対パスが変更されている場合)
#includeでインクルードされているファイルのパスを編集する必要があるかもしれません。
メタエディタのルートディレクトリは現在<data_folder>\MQL4\であることに注意してください。
すべてのプログラムは、正しいサブディレクトリに配置する必要があります。

お使いのコンピュータ上でメタトレーダー4ターミナルの各コピー用のデータフォルダ(<data_folder>)は、
ターミナルまたはMetaEditorの「ファイル」→「データフォルダを開く」で見つけることができます。



※このメールマガジンは、投資勧誘を目的として提供するものではありません。
投資方針の最終決定はご自身で判断されますようお願い致します。
このメールマガジンにより利用者の皆様に生じたいかなる損害について、一切の
責任を負いかねますことをご了承願います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
メタトレ!メールマガジン

 発行責任者: 星野慶次
   HP : http://www.dr-ea.com/meta-blog/
  問合せ : free☆dr-ea.com(☆を@に置き換えてください)
 登録・解除: http://www.mag2.com/m/0000255713.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※当メールマガジンの無断転載を禁止します。

このメルマガは現在休刊中です

ついでに読みたい

メタトレ!メールマガジン

RSSを登録する
発行周期 不定期
最新号 2014/05/23
部数 57部

このメルマガは
現在休刊中です

ついでに読みたい

今週のおすすめ!メルマガ3選

水戸市のサラリーマン大家さん
総発行部数15万部。購読者日本一の不動産メルマガ。 2017年1月現在8400人以上の投資家さんとお会いしてきました。 年間取引額300億円以上、累計取引額900億以上の不動産会社社長が、不動産投資について真剣に書いています。 今ならメルマガ内で10万円相当の「不動産投資大百科」を無料配布中。 テリー伊藤のまる金ライダー8に毎週、代表の峯島がコメンテーターでレギュラー出演中。 メルマガ登録で非公開の物件情報も入ってきます。 不動産仲介業 宅地建物取引業免許 国土交通大臣(1)第8944号
  • メールアドレスを入力

  • 規約に同意して

ダメおやじの全財産をかけた崖っぷちFX通信
アフィリエイトとインフォビジネスで、年商1~2億円規模の会社を経営する中松のまぐまぐ殿堂入りメルマガです。アマゾンランキング1位獲得「レバレッジでさらに増える!副収入が月16万円入ってくるしくみ」の著者。中松に興味がある人しか読まないマニアックなメルマガなのであしからず。(旧メルマガ名:月100万稼ぐ脱サラアフィリエイターの本音)
  • メールアドレスを入力

  • 規約に同意して

相馬一進の、1億稼ぐビジネスの本質|マーケティングと心理学
・天職で1億稼いだ相馬一進が、お金、自己啓発、仕事について、 心理学とマーケティングの側面から語る本格派メールマガジン。 ・著者の相馬一進は、ダライ・ラマ14世や、『7つの習慣』の スティーブン・コヴィーや、リチャード・ブランソンなどの、 海外セミナーへの日本人ツアーを企画、集客した実績を持つ。 ・最先端の起業・副業のノウハウや、マーケティングの原理原則、 生活の中からストレスを減らす方法、モチベーションの心理学、 複数の収入源を持つ方法、働く時間を減らす秘密などを配信中。
  • メールアドレスを入力

  • 規約に同意して

今週のおすすめ!メルマガ3選

川島和正の日刊インターネットビジネスニュース
■読者数32万部超、日本一の個人メルマガ(まぐまぐ総合ランキング調べ) ■9年連続で年収1億円以上になり、70か国以上を旅行して、 190平方メートルの豪邸に住んで、スーパーカーに乗れるようになり、 さらに、著書は、日本を代表する超有名人2人に帯を書いてもらい、 累計50万部のベストセラーとなった、現在香港在住の川島和正が、 最新のビジネスノウハウ、自己啓発ノウハウ、健康ノウハウ、恋愛ノウハウ さらに「今チェックしておくべき情報リスト」などを配信中!
  • メールアドレスを入力

  • 規約に同意して

へなちょこ社長中松のだるだる日記
アフィリエイトとインフォビジネスで、年商1~2億円規模の会社を経営する中松のまぐまぐ殿堂入りメルマガです。アマゾンランキング1位獲得「レバレッジでさらに増える!副収入が月16万円入ってくるしくみ」の著者。中松に興味がある人しか読まないマニアックなメルマガなのであしからず。(旧メルマガ名:月100万稼ぐ脱サラアフィリエイターの本音)
  • メールアドレスを入力

  • 規約に同意して

幸せを引き寄せるメール
毎朝7時に配信します。ゴールデンセレブヒーリング創始者本藤弘美があなたの人生をより豊かに幸せにするハッピーナビゲーション情報をお届けします。夢を叶えたい人、幸せになりたい人、心身共に健康になりたい人、人間関係を良くしたい人、豊かになりたい人に。読んでいると波動が上がります。GoldenCelebとは黄金の祝福。あなたの成功を祝福します。あなたにすべての安らぎと愛と豊かさと幸せがやってきます。♥
  • メールアドレスを入力

  • 規約に同意して

他のメルマガを読む

ウィークリーランキング