我正在使用metatrader4在Windows 10上编写专家顾问。
我的代码:
我正在遍历所有符号以获取价差。
// for(i...
string name = SymbolName(i, false)
double spread = MarketInfo(name, MODE_SPREAD);
Print("Symbol " + name + ": " + DoubleToStr(spread, 4));
测试环境:
我使用的是Strategy-Tester aka backtester,必须将其设置为特定的符号。就我而言,我将其设置为AUDUSD
。
我的意外输出(日志):
// everything else is also 0.0000
Symbol EUREUC: 0.0000
Symbol EURCHF: 0.0000
Symbol EURCAD: 0.0000
Symbol EURAUD: 0.0000
Symbol CHFJPY: 0.0000
Symbol CADJPY: 0.0000
Symbol CADCHF: 0.0000
Symbol AUDUSD: 24.0000
Symbol AUDNZD: 0.0000
Symbol AUDJPY: 0.0000
Symbol AUDCHF: 0.0000
Symbol AUDCAD: 0.0000
问题:
如您所见,我得到的唯一价差是AUDUSD
的价差,这是我设置的策略测试程序可以使用的符号。除了我将测试仪设置的符号以外,还有没有机会获得不同符号的价差?
我尝试使用不同的符号进行尝试。我总是得到所选股票的点差,但没有得到其他所有股票的点差。
非常感谢您!
答案 0 :(得分:1)
MT4:
仅允许单货币测试。允许进行多时间框架测试。 实时性没有限制(例如,您可以计算美元指数并将其显示在指标窗口中)。
MT5:
根本没有任何限制,可以同时进行单一货币和多货币测试。测试开始时,请不要忘记bool result=SymbolSelect( symbol[i], true);
以获取您需要的所有货币。如果result
为假-很可能您忘记了后缀或拼写错误。
在视觉上,您将拥有主图表(在Tester中选择的一个图表-Symbol&Tf),但其他图表在Tester的下一个图表中可用。
从MT4切换到MT5很难吗?取决于。
指标似乎更让人头疼(MT4:数组设置为序列,因此close[0]
是当前的bid
,MT5:反之亦然,所以time[0]
是最早的已知日期);在这种情况下,您需要始终将两个系列都设置为true
或false
,并在此设置一些不便之处。
另一个问题可能是,如果您使用MT4指标或库,但没有源代码。恐怕在这种情况下没人会帮助您。
如果使用DLL,请记住MT4是86x-,MT5是基于64x的体系结构。
对于专家顾问,可以从官方网站的代码库部分下载fxsaber的特殊库MT4Orders.mqh
,然后以MT4样式编写。