Mac运行MT4 - MT4回测系统助你筛选交易方法_编写第一个自定义函数并保存为库文件

打开策略测试器并设定基础参数
要开始测试,你得先找到策略测试器。在MT4的顶部菜单栏,点击“视图”,然后选择“策略测试器”,或者直接按快捷键Ctrl+R。界面会出现在下方,看起来有点复杂,但其实就几个核心设置。第一步是选择你的交易方法对应的EA程序,也就是专家顾问。如果你用的是自己写的指标或者手动交易策略,可以选一个包含入场和离场逻辑的EA。如果没有现成的EA,那只能通过模拟手动交易来近似测试,但效率会低很多。
接下来是设置交易品种和时间周期。比如你想测试欧元兑美元在1小时图上的表现,那就选EURUSD和H1。这里有个小技巧:测试周期最好和你实际交易用的周期一致,否则结果会有偏差。然后是模型类型,我一般推荐选“每个点基于真实报价”,这能更精确地模拟市场波动。如果选“控制点”或者“开盘价”,虽然跑得快,但细节会丢失,尤其是对止损和止盈影响很大。最后,设定好测试的日期范围,比如从2023年1月到2024年1月,时间跨度至少半年以上才有参考价值。
参数设定后,别急着点“开始”。
先检查一下“初始存款”和“杠杆”。存款金额设成你实际打算用的资金量,比如10000美元,杠杆设成1:100或者1:500。这些数字会影响回测结果,尤其是资金管理和风险控制部分。如果你设的杠杆太高,回测里可能看起来很漂亮,但实盘时容易爆仓。所以,参数要尽量贴近真实交易环境,别为了好看而乱调。
编写第一个自定义函数并保存为库文件
现在,咱们动手写一个实用的函数。假设你经常需要计算两个价格之间的百分比变化,比如计算当前收盘价相对于前一根K线收盘价的涨幅。你可以在“MyLib.mqh”文件里定义一个函数,叫“PercentageChange”。这个函数接收两个参数:前值previousPrice和当前值currentPrice,返回一个double类型的百分比值。代码很简单:return ((currentPrice - previousPrice) / previousPrice) * 100.0。记得加上注释,不然几个月后你自己都看不懂。
写完函数后,别忘了在文件开头加上“#property library”指令。这个指令告诉编译器,这个文件是一个库文件。虽然对于自定义函数库来说,不加也能用,但加上更规范。然后,你可以编译一下,确保没有语法错误。在MetaEditor里,按F7就能编译。如果出现错误,检查一下参数类型是否匹配,或者是否漏了分号。我刚开始写的时候,经常忘记在函数结尾加分号,搞得编译报错,气得想砸电脑。
保存完文件后,你可以在Include文件夹里看到“MyLib.mqh”文件。这时候,这个库就算建好了。但注意,库文件本身不产生任何效果,你必须把它引用到其他程序里才能用。比如,你可以在一个EA的开头用“#include ”指令引入这个库。然后,在EA的“OnTick”函数里直接调用“PercentageChange”函数,就像调用系统内置函数一样。说实话,这种模块化的写法,让代码变得清爽多了。
我建议你在库文件里写多个函数,形成一个系列。比如,除了百分比变化函数,你还可以写一个计算移动平均线的函数,或者一个判断趋势方向的函数。这样,你每次写新EA时,只需要引入这个库,就能用上所有工具。不过,要注意函数名不要和系统函数冲突,比如别写个“iClose”函数,那会覆盖系统的。最好在函数名前加个前缀,比如“My_”或者“Lib_”,避免冲突。
两者在保证金计算中的不同角色
在MT4平台的交易终端里,你会看到“余额”、“净值”、“已用保证金”、“可用保证金”这几个关键数字。自有资金直接体现在余额和净值里,而信用保证金只影响可用保证金。举个例子,余额1000美元,信用保证金500美元,净值1000美元(假设无浮动盈亏),已用保证金0,可用保证金就是1500美元。
当你开仓时,系统会先使用自有资金作为保证金。如果自有资金不够,才会自动调用信用保证金。比如你开一个需要1200美元保证金的单子,自有资金1000美元不够,系统就会从信用保证金里扣200美元。这时候你的已用保证金变成1200美元,可用保证金变成300美元(500-200)。
但问题来了,如果行情不利导致亏损,亏损会从净值里扣。当净值低于已用保证金时,就会触发强制平仓。信用保证金在这个过程中完全不起作用,因为它只是用来开仓的额度,MT4不能弥补亏损。也就是说,信用保证金帮你开了更大的单子,但风险敞口也更大。
我建议所有交易者都把信用保证金视为一种临时工具,而不是额外资金。在计算自己实际能承受的亏损时,永远只基于自有资金。比如你自有资金1000美元,信用保证金500美元,那你的最大亏损就应该是1000美元,而不是1500美元。否则一旦信用保证金被收回,你可能会面临巨大的资金缺口。
利用自定义品种功能添加特殊产品
除了经纪商提供的标准品种外,MT4还支持用户自定义品种。这个功能比较高级,主要是给那些需要交易自定义指数或者合成资产的交易者用的。在“交易品种列表”窗口里,点击“自定义品种”或者“添加自定义品种”按钮,就能进入创建页面。
创建自定义品种时,你需要输入品种名称、小数位数、交易时间、点差等参数。最关键的是“计算公式”部分,这里可以设置这个品种的价格如何由其他品种计算得出。比如你想创建一个“EURUSD+GBPUSD”的合成品种,就可以在这里设置公式。
不过说实话,自定义品种功能对普通交易者来说用处不大。因为大多数经纪商都不支持用户交易自定义品种,你只能用它来查看价格走势,无法实际开仓。我试过创建几个自定义指数,最后发现也就是在图表上看看,没法真正交易,所以后来就不怎么用了。
如果你是做量化交易的,可能会用到这个功能来做回测或者策略测试。但如果你只是普通的手动交易者,建议还是把精力放在经纪商提供的标准品种上。毕竟自定义品种的数据源需要你自己维护,一旦数据中断,图表就会出现断点,影响分析准确性。