【问题标题】:Market info (spread) returns 0 when executed for different symbol市场信息(点差)在针对不同交易品种执行时返回 0
【发布时间】:2019-11-23 10:53:22
【问题描述】:

我正在使用 metatrader4 在 Windows 10 上编写专家顾问程序。

我的代码
我正在遍历所有符号以获取它们的价差。

// for(i...
string name = SymbolName(i, false)
double spread = MarketInfo(name, MODE_SPREAD);

Print("Symbol " + name + ": " + DoubleToStr(spread, 4));

测试环境:
我正在使用必须设置为特定符号的策略测试器又名回测器。就我而言,我已将其设置为 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 的点差,这是我设置策略测试器工作的符号。是否有机会获得与我设置测试仪不同的符号的点差?

我尝试过使用不同的符号。我总是得到所选的点差,但没有其他所有点的点差。

非常感谢!

【问题讨论】:

  • AFAIK,不。MT4 不支持多符号测试。您甚至看不到与所选符号不同的任何符号的价格或最后报价时间。 MT5可以解决您的问题
  • 哦,有趣。有理由切换到 mt5/mql5。我认为您应该将此作为答案发布。

标签: mql4 metatrader4


【解决方案1】:

MT4:

只允许进行单一货币测试。允许进行多时间框架测试。 实时没有限制(例如,您可以计算美元指数并将其显示在指标窗口中)。

MT5:

完全没有限制,允许单币种和多币种测试,实时相同。不要忘记bool result=SymbolSelect( symbol[i], true); 在测试开始时您需要的所有货币。如果result 为假 - 很可能您忘记了后缀或有错字。 从视觉上看,您将拥有主图表(在 Tester - Symbol & Tf 中选择的那个),但其他图表在 tester 的下一个图表中可用。

从 MT4 切换到 MT5 难不难?这取决于。
指标似乎更令人头疼(MT4:数组设置为系列,所以close[0] 是当前bid,MT5:反之亦然,所以time[0] 是最早的已知日期);在这种情况下,您需要始终将两个系列都设置为truefalse,还有一些不便之处。
另一个问题可能是如果您使用 MT4 指标或库而您没有它的源代码。在这种情况下,恐怕没有人可以帮助您。
如果使用 DLL,请记住 MT4 是 86x,MT5 是基于 64x 的架构。
对于专家顾问,可以在官方网站的代码库部分下载 fxsaber 的特殊库 MT4Orders.mqh,然后以 MT4 风格编写。

【讨论】:

  • 非常感谢您提供的详细信息!我不认为切换会那么难。 Mql 一点也不好玩,所以它只是再次学习一门新语言。无论如何,细节会对我有很大帮助。 :)
猜你喜欢
  • 2014-08-05
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多