请问谁能帮助我在 MT4 平台上使用 MT5 语言制作的 " 之 "字形颜色指标。我尝试使用上述脚本,但没有成功。
文件附在下面。
这是我的电子邮件 mgbe_nsor@yahoo.com。
感谢您的回复
我喜欢一个 MT5 指标,并使用您的脚本将其转换为 MT4 设置文件。但不确定如何在没有 MQL4/ex4 文件的情况下使用 MT4 设置文件。
如果没有 MT4/ex4 文件,我如何在 MT4 图表上加载转换后的 MT4 设置文件?
是否可以将 MQL5 文件转换为 MQL4 文件?
我以为是 daora,但我试了一下,无法进行转换。有人能转换成塔巴加拉吗?
我以为是 daora,但我试了一下,无法进行转换。有人能转换成 tabajara 吗?
这是一个英语论坛。
请仅使用英语发帖。
如有必要,请使用翻译工具。
感谢您提供的脚本。在第 94 行有一个导致数组超出范围的 错误。修正后的代码是
//+------------------------------------------------------------------+
//| SetFileConverter.mq5 |
//| Richard Gunning |
//| https://rjgunning.com |
//+------------------------------------------------------------------+
#property copyright "Richard Gunning"
#property link "https://rjgunning.com"
#property version "1.00"
#property description "Script for converting set files from MT5 format to MT4 format."
#property description "Set files must be in Files Folder or a SubDirectory."
#property script_show_inputs
#property strict
#include <Files/FileTxt.mqh>
//--- input parameters
input string File=""; // SetFile Name to Convert (Leave blank to convert all)
input string SubDirectory=""; // SubDirectory of Files Folder in which to search
input string Directory="MT4-Output-Setfiles"; //Output Directory Name (Not Blank)
//--- Create Global Variables
CFileTxt *output=new CFileTxt;
CFileTxt *file=new CFileTxt;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
long m_handle;
bool m_file_found=true;
string searchString="*.set";
string thisDirectory=Directory;
string src_path;
string dst_path;
//--- Create Output Directory
if(thisDirectory==""){thisDirectory="MT4-Output-Setfiles";}
if(!output.FolderCreate(thisDirectory))
{
Print("Error Creating Destination Folder");
delete output;
delete file;
return;
}
//--- Set Search String and Find First Matching file in Directory
if(File!=""){searchString=File;}
if(SubDirectory=="")
{
m_handle=file.FileFindFirst(searchString,src_path);
}
else
{
m_handle=file.FileFindFirst(SubDirectory+"//"+searchString,src_path);
}
//--- Loop through matching files and run conversion
while(m_handle!=INVALID_HANDLE && m_file_found)
{
StringConcatenate(dst_path,thisDirectory,"//",src_path);
StringReplace(dst_path,".set","-MT4.set");
if(output.Open(dst_path,FILE_WRITE|FILE_REWRITE)!=INVALID_HANDLE &&
file.Open(src_path,FILE_READ)!=INVALID_HANDLE)
{
Convert();
}
//--- Close SetFiles
output.Close();
file.Close();
//--- Get Next SetFile
m_file_found=file.FileFindNext(m_handle,src_path);
}
//--- Delete Global objects
delete output;
delete file;
}
//+------------------------------------------------------------------+
//| Parse MT5 Set File Line By Line and Write Output Set File |
//+------------------------------------------------------------------+
void Convert()
{
string line,str;
string values[2];
string split[];
int opt;
while(!file.IsEnding())
{
line=file.ReadString();
StringSplit(line,'=',values);
StringSplit(values[1],'|',split);
if(ArraySize(split)==0){ArrayResize(split,1);}
for(int i=0,count=0;i<ArraySize(split);i++)
{
if(split[i]==""){continue;}
if(count==0)
{
str=StringFormat("%s=%s",values[0],split[i]);
}
else if(count<4)
{
str=StringFormat("%s,%d=%s",values[0],count,split[i]);
}
else
{
opt=(split[i]=="Y")?1:0;
str=StringFormat("%s,F=%d",values[0],opt);
}
output.WriteString(str+"\r\n");
count++;
}
}
}
//+------------------------------------------------------------------+
感谢您提供的脚本。在第 94 行有一个导致数组超出范围的 错误。修正后的代码是
//+------------------------------------------------------------------+
//| SetFileConverter.mq5 |
//| Richard Gunning |
//| https://rjgunning.com |
//+------------------------------------------------------------------+
#property copyright "Richard Gunning"
#property link "https://rjgunning.com"
#property version "1.00"
#property description "Script for converting set files from MT5 format to MT4 format."
#property description "Set files must be in Files Folder or a SubDirectory."
#property script_show_inputs
#property strict
#include <Files/FileTxt.mqh>
//--- input parameters
input string File=""; // SetFile Name to Convert (Leave blank to convert all)
input string SubDirectory=""; // SubDirectory of Files Folder in which to search
input string Directory="MT4-Output-Setfiles"; //Output Directory Name (Not Blank)
//--- Create Global Variables
CFileTxt *output=new CFileTxt;
CFileTxt *file=new CFileTxt;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
long m_handle;
bool m_file_found=true;
string searchString="*.set";
string thisDirectory=Directory;
string src_path;
string dst_path;
//--- Create Output Directory
if(thisDirectory==""){thisDirectory="MT4-Output-Setfiles";}
if(!output.FolderCreate(thisDirectory))
{
Print("Error Creating Destination Folder");
delete output;
delete file;
return;
}
//--- Set Search String and Find First Matching file in Directory
if(File!=""){searchString=File;}
if(SubDirectory=="")
{
m_handle=file.FileFindFirst(searchString,src_path);
}
else
{
m_handle=file.FileFindFirst(SubDirectory+"//"+searchString,src_path);
}
//--- Loop through matching files and run conversion
while(m_handle!=INVALID_HANDLE && m_file_found)
{
StringConcatenate(dst_path,thisDirectory,"//",src_path);
StringReplace(dst_path,".set","-MT4.set");
if(output.Open(dst_path,FILE_WRITE|FILE_REWRITE)!=INVALID_HANDLE &&
file.Open(src_path,FILE_READ)!=INVALID_HANDLE)
{
Convert();
}
//--- Close SetFiles
output.Close();
file.Close();
//--- Get Next SetFile
m_file_found=file.FileFindNext(m_handle,src_path);
}
//--- Delete Global objects
delete output;
delete file;
}
//+------------------------------------------------------------------+
//| Parse MT5 Set File Line By Line and Write Output Set File |
//+------------------------------------------------------------------+
void Convert()
{
string line,str;
string values[2];
string split[];
int opt;
while(!file.IsEnding())
{
line=file.ReadString();
StringSplit(line,'=',values);
StringSplit(values[1],'|',split);
if(ArraySize(split)==0){ArrayResize(split,1);}
for(int i=0,count=0;i<ArraySize(split);i++)
{
if(split[i]==""){continue;}
if(count==0)
{
str=StringFormat("%s=%s",values[0],split[i]);
}
else if(count<4)
{
str=StringFormat("%s,%d=%s",values[0],count,split[i]);
}
else
{
opt=(split[i]=="Y")?1:0;
str=StringFormat("%s,F=%d",values[0],opt);
}
output.WriteString(str+"\r\n");
count++;
}
}
}
//+------------------------------------------------------------------+
转换 MT5 设置文件至 MT4:
作者: Richard Gunning