皆さん、こんにちは!今日はMetaTrader 4用のEA(エキスパートアドバイザー)テンプレートの改良についてお話しします。まずは、こちらのMetaEditor: テンプレートの活用法を参考にしてください。
今回の改良では、サービス配列のサイズ定義を冗長にせず、動的に変更することを避けることを目指しました。具体的には、サービス配列は最大100件の注文サイズで即座に割り当てられ、配列サイズを示すカウンターも追加されています。
int OurTicketsCounter; // "フレンドリー"な注文のカウンター、配列 Tickets[100][9] や CommentsTicket[100][2] の制限を指定します int SL_TP_Counter; // 修正するための注文カウンター: 配列 newSL_and_TP[100][5] int OrdersToCloseCounter;// クローズする注文のカウンター: 配列 ticketsToClose[100][2] と lotsToClose[100] 用 int OrdersToDeleteCounter;// 削除する注文のカウンター: 配列 ticketsToDelete[100] 用
これらは、関数 start() の起動時に、特別な関数 InitCounters() で初期化され、ゼロ値が設定されます。
//+------------------------------------------------------------------+ //| サービス配列のカウンターをリセットします | //+------------------------------------------------------------------+ void InitCounters() { //---- OurTicketsCounter = 0; SL_TP_Counter = 0; OrdersToCloseCounter = 0; OrdersToDeleteCounter = 0; //---- return; }
この改良により、テンプレートを使用して作成したEAは、特別に設計された手動で書かれたEAに対しても、わずか2回の劣位で済む結果となりました。この結果は、十分に受け入れられるものだと思います。
テンプレートは、'experts/templates' フォルダーに保存してください。