![新しいMetaTrader 5 とMQL5の登場](https://c.mql5.com/i/articles/overlay.png)
新しいMetaTrader 5 とMQL5の登場
簡単に紹介します。
図 1. これはPhotoshopではありません。MQL5です。
MQL5とMT5で興味深かったほとんどの事がとても高いレベルで実行されています。
MQL5の基本的な変更点はオブジェクト指向プログラミングの見え方にあります。OOPについては深く掘り下げません。 ただ単に専門的な知識のあるプログラマーには応用が増えます。MQL4が気に入っていた人でOOP開発者を知らない人は OOPなしでMQL4スタイルを使ってMQL5に書ける可能性ができました。違いは再度学ばなければならない関数にあります。
簡単な例を取りあげてみましょう。 AskとBidはもう存在しません。売値Bidを手に入れるには下の関数が呼び出されなければなりません。
SymbolInfoDouble(Symbol(),SYMBOL_BID);
もうよく使われていたLow[0] や iLow ( Symbol(), PERIOD_D1, 0 )はありませんが、簡単にもう一度作ることが可能です。ヒストリーデータを組み込んだ新しい関数によって、あるポイントから別のポイント、あるバーから別のバー、またはある時間から別の時間におけるヒストリーデータをメモリーに読み込むことが可能になりました。以前のデータシリーズでは全可視範囲の読み込みがメモリーにロードされました。それが必要か否かにかかわらず読み込まれました。そしてM1を読み込む必要がある場合、1999 (ヒストリーがあった場合) から現在の日時分まで読み込まれました。
今は必要な範囲だけが読み込まれます。これでかなりの時間とメモリが節約できます。
MqlRates rates_arrayG[]; Int Bar=30; // read only 30 bars stating from the zero one iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);
この特徴は時間とお金の両方を節約します。
このような関数の変更に脅かされることはありません。ただ単に新しいアナログ関数を学ぶ時間が必要なだけです。
私が待ち望んでいたMQLの革新的な関数はこちらになります。
- OnTimer() - タイマーイベントを処理する関数 (もうExpert Advisorにループをかけて入ってくるTickのある一定の独立した周期性と働くようにする必要がありません);
- OnTrade() - レードイベントを処理する関数 - トレードポジションオープニング、 クロージングやボリューム変更
- OnChartEvent() - マウスやキーボードによるイベント処理。
もう少し詳しく見ていきましょう。
OnTimer() 関数はタイマーがOnInit プリセット関数 (EA初期化イベントのプロセッサー)で先に初期化されている場合に呼ばれます。
例:
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { EventSetTimer(1); //each second we'll refer to OnTimer() } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit() { EventKillTimer(); // canceling of timer reference must be called at exit } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTimer() { MqlDateTime str1; TimeGMT(str1); // new function to get GMT time Comment(str1.hour ,str1.min ,str1.sec ,str1.day ,str1.mon ,str1.year ,str1.day_of_year ,OrdersTotal() ,PositionsTotal() ); }
そのため、以前のようにティック受け取り時だけでなくリアルタイムプログラムを可能にしたタイマーからもコントロールできます。この可能性によりもっと精巧なシステムを作ることができます。
私はOnTrade() 関数が好きです。この関数は次の取引イベントのいずれかがあった時に呼ばれます。オーダーの発注、ストップロスまたはテイクプロフィットの起動、 ストップロスまたはテイクプロフィットレベルの変化、指値注文の発注/削除。
これで取引オプションに関連したイベントをモニターすることがより簡単になりました。これでティックやバーにおけるオーダー状況をループでチェックする必要がなくなりました。このようなループはMQL4に使われていますが、このことによって最適化に重要なプログラムのパーフォーマンスがかなり落ちます。
OnChartEvent() 関数を見てみましょう。この関数の呼び出しはいくつかのイベントによって実行されます。すべての関数をテストすることはできませんでしたが、リストは素晴らしいものでした。:
- CHARTEVENT_KEYDOWN — キー押下イベント;
- CHARTEVENT_OBJECT_CLICK — チャートに属するグラフィカルオブジェク上のマウスクリックのイベント;
- CHARTEVENT_OBJECT_DRAG — マウスが行うグラフィカルオブジェクト移動イベント;
- CHARTEVENT_OBJECT_ENDEDIT — テキスト編集エンドのイベント;
- CHARTEVENT_CUSTOM+n — カスタマイズの識別子イベント;
- CHARTEVENT_CUSTOM_LAST — 最後のもの。
新しい機能性レベルでのトレーディングとグラフィックを管理する可能性 - これが開発者が約束した事だ。
新しいグラフィカルオブジェクト、ボタン、入力スペース登場。チャート管理が素晴らしくなりました。ファイルから画像を挿入することもできます。- スペシャルデザインを好む人には多くの可能性を与えます。これはPhotoshopではなく、MQL5とMetaTrader 5がこなした成果です。 新しい特徴として自分のボタンと追加入力スペースを作れます。すべてのオーダーをクローズするボタンやプリセットストップとtakeパラメーター付きの クイック売り、買いボタンがその例です。
図2. グラフィカルオブジェクトで情報パネルを作ることが可能
好ましくない事実が一つあります。インディケーターからオブジェクトを作ることはできません。インディケーターのパフォーマンスを速くするために意図的になされたことです。うれしいことに彼らはそれをわかっていて、おそらくいくつかのExpert Advisorを一つのチャートで開始できるようにするでしょう。こうしてトレーディングなくオブジェクト付きでEA-インディケーターを作れるようになります。このようなインディケーターは今でも作れます。それはインディケーターのように操作します。今や、トレーディング EAを一つのチャートで開始し、EAが2つ目でオブジェクトを作成し、2つの間でエクスチェンジを実行することでタスクが解決されます。
例えば私はMQL4とMQL5から数時間かけてなんとかブレイクスルー インディケーターを変換させることができました。ほとんどの時間が関数の学習とデバッグに取られました。MQL5ではコードが短くなりました。
ターミナルについてはタイムフレームの数に感心しました。私の意見では多すぎるくらいです。でも分のタイムフレームがたくさんあることはトレーダーの方によっては便利かもしれません。タイムフレームを自由に作成するステップが今は1つしかありません。今やすべてのデータが分タイムフレームとして保存されるので、異なったタイムフレームの同期にもう問題がありません。これは重要な技術的ソルーションです。
HISTORYカタログにはもう別のタイムフレームのファイルがありません。
図 3. ヒストリー全体が一つのファイルに保管されています。
もう一つの良い点は今やログをクリアできることです。
図 4. ボタンひとつでEAジャーナルをクリア、不要なメッセージを全て削除します。
これはMetaTrader5のただの簡単なレビューです。このような短時間ではシステムのすべての特徴を述べることができません。2009年9月9日に試用を開始しました。これはシンボル的な日付でラッキーナンバーになると信じています。ベータ版のMetaTrader5とMQL5を手に入れて数日が経ちました。まだ全ての特徴を使ってはいませんが、すでに関心させられました。
MetaQuoteのマジシャンは素晴らしい製品を作りました。私は25年の経験がある開発者で多くのプロジェクトの始まりを見てきましたから断言できます!
敬具
Yuriy Zaytsev
Skype: yurazyuraz
yzh@mail.ru
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/1
![新しいレールへの第一歩: MQL5内のカスタムインディケーター](https://c.mql5.com/2/0/862_14.png)
![EAのパラメータの選択における テスト(最適化) テクニックとその基準](https://c.mql5.com/2/17/884_29.gif)
![MQL5: 自分のインディケーターの作成](https://c.mql5.com/2/0/indikator__1.png)
![MQL5 - MetaTrader 5クライアントターミナルにビルトインされたトレードストラテジーの言語](https://c.mql5.com/i/registerlandings/logo-2.png)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索