脚本: 转换 MT5 设置文件至 MT4 - 页 2

 
遗憾的是,某些 ENUM(特别是 ENUM_TIMEFRAMES 和 ENUM_APPLIED_PRICE)的不同数字表示方法并未考虑在内。
 

@Richard Gunning,感谢您的脚本!

遗憾的是,它不能用于某些 ENUM(TIMEFRAME、APPLIED_PRICE),因为 MT4 和 MT5 的数值不同。

您会解决这个问题吗?

再次感谢。

 
你好,你们的转换器不能在 MT5 上使用吗? 因为我想将我的指标转换到 MT4,但你们的转换器不能用,除非我不知道如何使用它,你们能帮帮我吗?
 
binaire72 # :

我喜欢 MT5 指示器,并借助您的脚本将其转换为 MT4 游戏文件。但您不知道如何在没有 MQL4/ex4 文件的情况下使用 MT4 文件。

如何在没有 MT4/ex4 文件的情况下在 MT4 图形上转换 MT4 工具?

Est-il possible de convertir le fichier MQL5 en fichier MQL4 ?.

您好,您是如何使用此脚本进行转换的,因为我做不到,您能帮帮我吗?
 

ENUM_TIMEFRAMES 和 ENUM_APPLIED_PRICE 不能考虑在内:设置文件没有保存有关类型的信息--从变量名猜测类型不是一个明智的想法。

这是一个相当常见的问题,可以通过引入另一种类型来规避,这种类型可以在代码中可预测地转换为适合平台的值。

例如,存储分钟的整数值,在 MT4 代码中通过简单的转换来解释,而在 MT5 代码中通过稍微复杂的转换来解释。

还有一个问题是时间框架不兼容,这是另一个问题。


我研究了脚本代码,发现它不能正确处理某些情况。

例如,如果一个值包含 "等号 "符号。

或者如果值为空(在 MT4 网络中我们得到"(null)")。

已修复

附加的文件:
 
完全不起作用
 

脚本,谢谢。

为了使用它,我修改了以下几点。


修复:源代码样式被 ClangFormat 转换为 Google 样式。(抱歉。个人偏好)。

修正:跳过注释行。

修正:在提取参数/值时不要使用 Split(),以免删除值中的"="。

新增:将某些参数更改为其他值。参数/值对从 "SetFileConveter.ini "文件的 [ChangeKeyValue] 部分读取。

新增: 将 ENUM_TIMEFRAMES 类型参数的值改为 MT4 的值。要转换的ENUM_TIMEFRAMES 类型参数 从 'SetFileConveter.ini' 文件的 [TimeframeKey] 部分读取。

附加: 将 ENUM_APPLIED_PRICE 类型参数的值改为 MT4 的值。要转换的ENUM_APPLIED_PRICE 类型参数 从 "SetFileConveter.ini "文件的[PriceKey]部分读取。

SetFileConveter.ini "文件位于 "MQL5/Files "中。其内容描述如下。

[ChangeKeyValue]
MaxSpreadPips=1.0
NormalSpreadPips=0.5
SummerTimeType=2

[TimeframeKey]
WaitForNextEntry_TF
EXIT_BY_BB_TF_

[PriceKey]
ENTRY_BY_BB_Price
EXIT_BY_BB_Price

修改后的源代码附在下面。
附加的文件:
 
SetFileConverter.ini "文件的部分现在可以按文件逐个指定。
在部分名称后添加"| 文件名 "即可指定。下面是一个说明示例。
[ChangeKeyValue]
MaxSpreadPips=1.0
NormalSpreadPips=0.5
SummerTimeType=2

[TimeframeKey]
WaitForNextEntry_TF
EXIT_BY_BB_TF_

[TimeframeKey | CheckTheTrend.set]
CheckTF1_GMMA
CheckTF2_GMMA
CheckTF3_GMMA
CheckTF4_GMMA
CheckTF5_GMMA
CheckTF6_GMMA

[PriceKey]
ENTRY_BY_BB_Price
EXIT_BY_BB_Price

修改后的源代码附后。

附加的文件: