無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
スクリプトを気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ビュー:
39
評価:
(2)
パブリッシュ済み:
\MQL5\Scripts\
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

テクニカル概要

ProjectTemplateGen.mq5は、標準化されたExpert Advisorプロジェクト構造の作成を自動化するMetaTrader 5スクリプトユーティリティです。スケーラブルなトレーディングシステム開発のための一貫した基盤を確立しながら、MQL5のセキュリティ制約内でプログラムによるファイルシステム操作を実装します。


コア機能

  • プログラムによるファイル操作ディレクトリを作成し、構造化されたコンテンツを書き込むためのMQL5のファイル操作APIを実証します。
  • テンプレートベースの生成:適切なイベントハンドラースケルトンを含む、すぐにコンパイル可能なMQL5ソースファイルを生成します。
  • 設定可能な出力:ソースコードを変更することなく、入力パラメーターを通じてランタイムのカスタマイズが可能
  • サンドボックス準拠:MetaTrader 5の安全な実行環境内で動作します。

実装の詳細

ファイル操作アーキテクチャ

このスクリプトは、プロジェクト生成のさまざまな側面を処理する個別の関数によって、ファイル生成へのモジュール式アプローチを実装しています:

// OnStart()のプライマリ・オーケストレーション
string projectPath = "Files\\" + ProjectName + "\\";
if(!FolderCreate(projectPath)) { /* エラー処理 */ }
if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return;
if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh");
CreateManifest(projectPath + "README.txt");

生成されたプロジェクト構造

MQL5/Files/[ProjectName]/
├── [ProjectName].mq5      #  Main Expert Advisor source file
├── [ProjectName].mqh      #  Optional header/class definition file  
└── README.txt            #  Project documentation and instructions


主要技術コンポーネント

1.動的パスの構築

string projectPath = "Files\\" + ProjectName + "\\";

  • MQL5サンドボックスの制限に準拠した相対パスを使用。
  • 動的ファイルシステムナビゲーションのための文字列連結のデモンストレーション

2.エラー処理による堅牢なファイル作成

int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
if(h == INVALID_HANDLE)
{
    Print("ERROR: Cannot create main EA file. Error: ", GetLastError());
    return false;
}

  • ファイル操作の包括的なエラー・チェックの実装
  • システムエラーコードによる意味のあるエラーメッセージの提供
  • FileClose() 呼び出しによる適切なリソースのクリーンアップの保証

3.構造化コンテンツ生成

FileWrite(h,"//+------------------------------------------------------------------+");
FileWrite(h,"//| " + ProjectName + ".mq5");
FileWrite(h,"//| Author: " + AuthorName);
FileWrite(h,"#property strict");
FileWrite(h,"int OnInit()");
FileWrite(h,"{");
FileWrite(h,"   return INIT_SUCCEEDED;");
FileWrite(h,"}");

  • 構文的に有効なMQL5コードの生成
  • 一貫したフォーマットとコーディング標準の維持
  • コンパイル可能なボイラープレート・コードを作成

使用方法

基本操作

  • コンパイル:MetaEditor(F7)でProjectTemplateGen.mq5を コンパイルする。
  • 実行ナビゲータから任意のチャートにスクリプトをドラッグ
  • 設定:入力ダイアログでパラメータを設定
  • ProjectName:保存先フォルダとファイル名
  • 著者名:著作権とドキュメントの帰属
  • CreateIncludeFile: ヘッダーファイルの生成を切り替える
  • 出力:Expertsタブで生成状況とパス情報を確認する

生成後のワークフロー

MQL5スクリプトのセキュリティ制限のため、スクリプトはMQL5Files\[ProjectName] \にプロジェクトを作成します。

以下の方法でセットアップを完了します:

  1. 手動でフォルダをMQL5Files[ProjectName]㎤に移動する。
  2. MetaEditorでメイン.mq5ファイルを開く
  3. 提供された関数スケルトンに取引ロジックを実装する

高度なワークフローのための拡張機会

スケーラビリティの強化

  1. マルチファイルテンプレート:インジケータスクリプト、ライブラリファイル、またはリソースマニフェストを生成するための拡張
  2. 設定ファイル:パラメータ管理のためのJSON/XML設定ファイル生成の追加
  3. ビルドスクリプト:バッチコンパイルまたは依存関係管理ファイルの組み込み



コード

//+------------------------------------------------------------------+
//|ProjectTemplateGen.mq5
//|著作権 2025, クレマンス・ベンジャミン||Clemence Benjamin|クレマンス・ベンジャミン
//|https://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Clemence Benjamin"
#property link      "https://www.mql5.com"
#property strict
#property description "Generates EA project template in MQL5//Files"
#property script_show_inputs
#property version "2.01"

//--- 入力
input string ProjectName       = "Type your project name";//プロジェクト名
input string AuthorName        = "Type your name eg. Clemence Benjamin"; // 著者名
input bool   CreateIncludeFile = true;// ヘッダーファイルの生成

//+------------------------------------------------------------------+
//| スクリプト・エントリー|
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("=== MQL5 Project Template Generator Started ===");
   Print("Project Name: ", ProjectName);
   Print("Author: ", AuthorName);

//--- 許可されたサンドボックス・パス
   string projectPath = "Files\\" + ProjectName + "\\";

   Print("Target path (sandbox-safe): ", projectPath);

//--- プロジェクトフォルダの作成
   if(!FolderCreate(projectPath))
     {
      Print("ERROR: Cannot create project folder. Error: ", GetLastError());
      return;
     }

//--- EAファイルを作成する
   if(!CreateMainEA(projectPath + ProjectName + ".mq5"))
      return;

//--- インクルードファイルの作成
   if(CreateIncludeFile)
      CreateInclude(projectPath + ProjectName + ".mqh");

//--- マニフェストの作成
   CreateManifest(projectPath + "README.txt");

   Print("SUCCESS: Project created in MQL5\\Files\\", ProjectName);
   Print("ACTION REQUIRED: Move folder to MQL5\\Experts\\ manually");
   Print("Folder path: ", TerminalInfoString(TERMINAL_DATA_PATH) + "\\" + projectPath);
  }

//+------------------------------------------------------------------+
//| メインEAの作成|
//+------------------------------------------------------------------+
bool CreateMainEA(const string filePath)
  {
   int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(h == INVALID_HANDLE)
     {
      Print("ERROR: Cannot create main EA file. Error: ", GetLastError());
      return false;
     }

   FileWrite(h,"//+------------------------------------------------------------------+");
   FileWrite(h,"//| " + ProjectName + ".mq5");
   FileWrite(h,"//| Author: " + AuthorName);
   FileWrite(h,"//+------------------------------------------------------------------+");
   FileWrite(h,"#property strict");
   FileWrite(h,"");
   FileWrite(h,"int OnInit()");
   FileWrite(h,"{");
   FileWrite(h,"   return INIT_SUCCEEDED;");
   FileWrite(h,"}");
   FileWrite(h,"");
   FileWrite(h,"void OnTick()");
   FileWrite(h,"{");
   FileWrite(h,"}");
   FileClose(h);
   return true;
  }

//+------------------------------------------------------------------+
//| インクルードファイルの作成|
//+------------------------------------------------------------------+
void CreateInclude(const string filePath)
  {
   int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(h == INVALID_HANDLE)
      return;

   FileWrite(h,"#ifndef __" + ProjectName + "_MQH__");
   FileWrite(h,"#define __" + ProjectName + "_MQH__");
   FileWrite(h,"class C" + ProjectName + " {};");
   FileWrite(h,"#endif");
   FileClose(h);
  }

//+------------------------------------------------------------------+
//| マニフェストの作成|
//+------------------------------------------------------------------+
void CreateManifest(const string filePath)
  {
   int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(h == INVALID_HANDLE)
      return;

   FileWrite(h,"PROJECT TEMPLATE");
   FileWrite(h,"Name: " + ProjectName);
   FileWrite(h,"Author: " + AuthorName);
   FileWrite(h,"");
   FileWrite(h,"NOTE:");
   FileWrite(h,"Move this folder to MQL5\\Experts\\ to compile.");
   FileClose(h);
  }
//+------------------------------------------------------------------+

MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/68598

VR Breakdown level - 過去の高値または安値のブレイクアウトを利用したトレーディング戦略 VR Breakdown level - 過去の高値または安値のブレイクアウトを利用したトレーディング戦略

過去の高値または安値の単純なブレイクアウトによるトレーディング戦略

Sideways Martingale Sideways Martingale

マーチンゲール・トレンド検出器 onnx AIを使用

EA Duplicate Detector EA Duplicate Detector

EAが条件に基づいてチャート上に重複したEAがあるかどうかを判断できるようにする。

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。