20 12月 2017
20 12月 2017
旧バージョンのデスクトップおよびモバイル端末のサポートは、新しいプラットフォームバージョンのリリースによって終了します。
サポートされていない端末のビルドは、新しいサーバーバージョンに接続することはできません。事前に端末を更新することを強くお勧めします。
新しい共有プロジェクトをサポートするため、MQL5ストレージの運用プロトコルを更新しました。したがって、プラットフォームの更新後にはストレージからすべてのデータのチェックアウトを実行してください。更新中にMQL5ストレージに保存されたデータが失われたり影響を受けたりすることはありません。
プラットフォームを新しいバージョンに更新する前に、Commit操作を実行してすべてのローカル変更をMQL5ストレージに送信することをお勧めします。
仕組み
例えば ドルインデックス(USDX)を示す製品の作成が可能です。それには下記の数式が使われます。
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
注:元のドルインデックス式でUSDEURとUSDGBPのペアが使用されます。プラットフォームでは逆ペアのみが使用可能であるため、合成銘柄式は負のパワーと、ビッドの代わりにアスクが使用されます。
プラットフォームは、ブローカーによって提供された他の6銘柄のクオーツに基づいて、新しい製品の価格を実時間で計算します。価格の変更は[気配値表示]ウィンドウとチャートで視覚化されます。
int CustomTicksAdd( const string symbol, // Symbol name const MqlTick& ticks[] // カスタム銘柄に適用する必要があるティックデータを持つ配列 );CustomTicksAdd関数は、これらのクオーツがブローカーサーバから受信されたかのように提供することができます。データはティックデータベースに直接書き込まれるのではなく、[気配値表示]ウィンドウに送られます。ターミナルは次に、ティックを[気配値表示]からデータベースに保存します。1つの呼び出しで大量のデータが渡されると、リソースを節約するために関数の動作が変わります。256ティック以上送信された場合、データは2つの部分に分割されます。大きな部分はチックデータベースに直接記録されます(CustomTicksReplace同様)。最後の128ティックからなる第2の部分は[気配値表示]に送られ、そこからデータベースに保存されます。
MetaEditorでフル機能のプロジェクトを利用できるようになりました。プログラム開発プロセスがより便利になりました。
現在、メインMQ5プログラムファイルはプロジェクトとして表示されません。このプロジェクトは、プログラム設定、コンパイルパラメータ、および使用されているすべてのファイルに関する情報を格納する別個の
"MQPROJ"ファイルです。メインプロジェクト設定は別のダイアログボックスからアクセスできるため、ソースコードで#propertyで指定する必要はありません。
プロジェクト内の作業で便利なように、[ナビゲータ]で別のタブが用意されています。インクルード、リソース、ヘッダー、その他のファイルなどのすべてのファイルが、カテゴリに整理されています。すべてのファイルが自動的にプロジェクトナビゲータに追加されます。たとえば、新しくインクルードしたMQHファイルは、ナビゲータの[Dependencies](依存ファイル)セクションに自動的に表示されます。.
新規プロジェクトのサポートは、更新されたMQL5ストレージオンラインリポジトリにも実装されています。MQL5.comコミュニティの他のメンバーとのコラボレーションを通じた大規模なプロジェクトの開発がはるかに便利になりました。
グループプロジェクトには新しい共有プロジェクトセクションが用意されています。このセクションで作成されたプロジェクトはすぐにストレージに送信されるため、他のユーザーに権限を与えればすぐにコラボレーションを開始できます。
共有プロジェクトでプロジェクトをコンパイルすると、実行可能なEX5ファイルは、プログラムの種類に応じて自動的にローカルのエキスパート、指標またはスクリプトディレクトリにコピーされます。このため、手動でファイルをコピーすることなく、簡単にチャート上でプログラムを起動できます。
MQL5ストレージ操作の新機能
新しい共有プロジェクトのサポートを実装するために、MQL5ストレージ操作プロトコルを変更しました。したがって、プラットフォームの更新後にはストレージからすべてのデータのチェックアウトを実行してください。更新中にMQL5ストレージに保存されたデータが失われたり影響を受けたりすることはありません。
[Checkout from Storage](ストレージからチェックアウト)コマンドは使用できません。代わりに、[Activate MQL5 Storage](MQL5ストレージをアクティブ化)と [Update from Storage](ストレージからファイルを更新)コマンドを使用してデータを受け取ります。
新規プロジェクト:作成および操作の詳細の例
MetaEditorに新規プロジェクトエンティティが追加されました。プロジェクトとは、一般的なプログラムのプロパティと、使用されているすべてのファイルに関する情報を格納するmqprojファイルのことです。ソースコードで#propertyディレクティブを使用して手動で変更するのではなく、別のMetaEditorダイアログから便利にプログラムプロパティを管理できるようになりました。
利用可能なコードがあれば、 [ソースから新規プロジェクトを作成]コマンドを使って簡単に新しいプロジェクトをテストすることができます。
選択したファイルがあるディレクトリに、同じ名前とmqproj拡張子を持つ新しいプロジェクトファイルが作成されます。#propertyを介してソースコードで指定されたメインプログラムの名前、著作権、バージョン、開発者のサイトへのリンク、プログラムの説明などのプロパティは、プロジェクトに自動的に追加されます。
MQL5プログラムをコンパイルするための新しいオプションが2つ追加されました。
プロジェクトを操作するには、ナビゲータウィンドウで[プロジェクト]タブを使用します。このタブでは、プロジェクトで使用されるすべてのファイルが便利な形式で表示されます。プロジェクトがソースファイルから生成されると、使用されているすべてのインクルードファイル(メインのMQ5ファイルとインクルードファイルの#includeディレクトリを使用して指定)が自動的に[Dependencies](依存関係)セクションに追加されます。
ソースコードに追加された新しいインクルードファイルは、プロジェクトナビゲータにも表示されます。使用されたヘッダーファイルはヘッダーセクションに追加されます。 プロジェクトでリソースとして使用される画像、音声、および他のMQL5プログラムは[リソース]セクションに追加されます。ソースコードを含むMQ5ファイルは[ソース]セクションに表示されます。[設定とファイル]セクションでは、テスト用のファイルとチャートテンプレートなど、他のファイルを追加できます。
プロジェクトに既存のファイルを追加したり、そこからファイルを削除するには、コンテキストメニューコマンドを使用します。プロジェクトからファイルを削除する(バインディングを削除する)ことと、ハードディスクからファイルを完全に削除することが両方できるので、ファイルを削除するときは注意してください。
新規プロジェクトの作成は、通常のMQL5プログラムの作成と同じくらい簡単です。[新しいプロジェクト]をクリックし、新しいプログラムのタイプを選択し、MQL5ウィザードでプロパティ(名前、イベントハンドラなど)を指定します。
実行可能なEX5ファイルを作成するには、プロジェクトを開いてF7(コンパイルコマンド)を押すか、プログラムのメインMQ5ファイルを開いてコンパイルします。
MQL5ストレージでの共有プロジェクト:操作の詳細
共有プロジェクトは別の[共有プロジェクト]セクションから管理されます。まだストレージを接続していない場合は、目的のフォルダのコンテキストメニューから[Activate MQL5 Storage](MQL5ストレージをアクティブ化)コマンドを実行してください。MetaEditorは、ストレージに保存されたデータが含まれているかどうか、そして共有プロジェクトがあるかどうかを確認します。利用可能なすべてのデータがストレージから取得され、コンピュータにアップロードされます(チェックアウト操作)。 使用可能なグループプロジェクトが[共有プロジェクト]セクションに表示されます。プロジェクトを取得するには、コンテキストメニューの[Checkout from Storage](ストレージからチェックアウト)を実行します。
新しいグループプロジェクトを作成するには、[共有プロジェクト]フォルダを選択して[新しいプロジェクト]をクリックします。
次に、標準的なMQL5のステップを完了します。目的のプログラムのタイプ、名前、プロパティを設定します。グループプロジェクトの場合、他の参加者が簡単に見つけられるように、わかりやすくわかりやすい名前を使用する必要があります。 プロジェクト名にはスペースのないラテン文字のみ使用できます。
作成されたオブジェクトはすぐにMQL5ストレージに追加されます。プロジェクトで使用されている標準ライブラリファイルはストレージに追加されないので、手動で追加することができます。
他の参加者がプロジェクトで作業できるようにするには、そのプロパティを開きます。ここから、MQL5.communityログインを指定し、グループ作業の共通パラメータを設定することによって、選択したユーザに権限を与えることができます。
グループプロジェクトをコンパイルすると、実行可能なEX5ファイルは、プログラムの種類に応じて自動的にローカルのエキスパート、指標またはスクリプトディレクトリにコピーされるため、適切なディレクトリに手動でそれをコピーすることなく、すぐにターミナルでプログラムを実行することができます。
MQL5ストレージのパブリックプロジェクト:開発への参加
上記のように、MQL5ストレージの各グループプロジェクトには共有設定があり、プロジェクトはプライベートにすることも、他のユーザーに公開することもできます。これで、自由に参加できるすべてのプロジェクトが別の[パブリックプロジェクト]タブに表示されます。
誰もがエキサイティングなプロジェクトを見つけ、その開発に参加することができます。[Join](参加)をクリックし、ストレージからプロジェクトを受信するだけです。
//+------------------------------------------------------------------+ //| スクリプトプログラム開始関数 | //+------------------------------------------------------------------+ void OnStart() { //--- バイナリ配列としてのテンプレートファイル unsigned char my_template[]= { 0xFF,0xFE,0x3C, ... ,0x00 // この例のデータ配列は短くされている }; //--- 保存及びテンプレートの適用 if(FileSave("my_template.tpl",my_template)) { Print("Custom template saved in \\MQL5\\Files"); if(ChartApplyTemplate(0,"\\Files\\my_template.tpl")) Print("Custom template applied to the current chart"); else Print("Failed to apply custom template"); } else Print("Failed to save custom template"); }
関数 | アクション |
---|---|
CustomSymbolCreate | 指定されたグループに指定された名前を持つカスタム銘柄を作成する |
CustomSymbolDelete | 指定された名前を持つカスタム銘柄を削除する |
CustomSymbolSetInteger | カスタム銘柄の整数型プロパティ値を設定する |
CustomSymbolSetDouble | カスタム銘柄のreal型プロパティ値を設定する |
CustomSymbolSetString | カスタム銘柄の文字列型プロパティ値を設定する |
CustomSymbolSetMarginRate | 注文の種類と方向に応じてカスタム銘柄の証拠金率を設定する |
CustomSymbolSetSessionQuote | 指定した銘柄と曜日の指定されたクオーツセッションの開始時刻と終了時刻を設定する |
CustomSymbolSetSessionTrade | 指定した銘柄と曜日の指定された取引セッションの開始時刻と終了時刻を設定する |
CustomRatesDelete | 指定された時間間隔でカスタムシンボルの価格履歴からすべてのバーを削除する |
CustomRatesReplace | 指定された時間間隔内のカスタム銘柄の価格履歴を、MqlRates型配列のデータで完全に置き換える |
CustomRatesUpdate | カスタム銘柄履歴に不足しているバーを追加し、既存のデータをMqlRates型配列のものに置き換える |
CustomTicksAdd | MqlTick型の配列からカスタム銘柄の価格履歴にデータを追加する(カスタム銘柄は[気配値表示]ウィンドウで選択) |
CustomTicksDelete | 指定された時間間隔でカスタムシンボルの価格履歴からすべてのティックを削除する |
CustomTicksReplace | 指定された時間間隔内のカスタム銘柄の価格履歴を、MqlTick 型配列のデータで完全に置き換える |
ライブラリは、ターミナル作業ディレクトリのInclude\Genericフォルダにあります。
bool ArraySwap( void& array1[], // 1番目の配列 void& array2[] // 2番目の配列 );この関数は、同じ型および同じ次元の動的配列を受け入れます。多次元配列の場合、最初の次元を除くすべての次元の要素の数は一致する必要があります。