市场信息(价差)returns 0 当针对不同的交易品种执行时
Market info (spread) returns 0 when executed for different symbol
我正在使用 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
的价差,我已将策略测试器设置为使用该品种。是否有机会获得与我为测试器设置的不同交易品种的点差?
我试过用不同的符号。我总是得到所选一个的点差,但所有其他点差都没有。
非常感谢!
MT4:
只允许 single-currency 测试。允许进行多时间框架测试。
实时没有限制(例如,您可以计算美元指数并将其显示在指标 window 中)。
MT5:
完全没有限制,单一货币和multi-currency测试都可以,实时相同。不要忘记在测试开始时为您需要的所有货币选择 bool result=SymbolSelect( symbol[i], true);
。如果 result
为假 - 很可能您忘记了后缀或打字错误。
在视觉上,您将拥有主图表(在测试器中选择的那个 - 符号和 Tf),但其他图表在测试器的下一个图表中可用。
从MT4切换到MT5难吗?这取决于。
指标似乎更令人头疼(MT4:数组设置为系列,因此 close[0]
是当前的 bid
,MT5:反之亦然,因此 time[0]
是最早的已知日期);在这种情况下,您需要始终将两个系列设置为 true
或 false
,这会带来更多不便。
另一个问题可能是如果您使用 MT4 指标或库并且您没有它的源代码。恐怕这种情况没人帮你。
如果使用 DLL,请记住 MT4 是 86x-,MT5 是基于 64x 的架构。
对于专家顾问,fxsaber 的特殊库 MT4Orders.mqh
可以在官方网站的代码库部分下载,然后以 MT4 样式编写。
我正在使用 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
的价差,我已将策略测试器设置为使用该品种。是否有机会获得与我为测试器设置的不同交易品种的点差?
我试过用不同的符号。我总是得到所选一个的点差,但所有其他点差都没有。
非常感谢!
MT4:
只允许 single-currency 测试。允许进行多时间框架测试。 实时没有限制(例如,您可以计算美元指数并将其显示在指标 window 中)。
MT5:
完全没有限制,单一货币和multi-currency测试都可以,实时相同。不要忘记在测试开始时为您需要的所有货币选择 bool result=SymbolSelect( symbol[i], true);
。如果 result
为假 - 很可能您忘记了后缀或打字错误。
在视觉上,您将拥有主图表(在测试器中选择的那个 - 符号和 Tf),但其他图表在测试器的下一个图表中可用。
从MT4切换到MT5难吗?这取决于。
指标似乎更令人头疼(MT4:数组设置为系列,因此 close[0]
是当前的 bid
,MT5:反之亦然,因此 time[0]
是最早的已知日期);在这种情况下,您需要始终将两个系列设置为 true
或 false
,这会带来更多不便。
另一个问题可能是如果您使用 MT4 指标或库并且您没有它的源代码。恐怕这种情况没人帮你。
如果使用 DLL,请记住 MT4 是 86x-,MT5 是基于 64x 的架构。
对于专家顾问,fxsaber 的特殊库 MT4Orders.mqh
可以在官方网站的代码库部分下载,然后以 MT4 样式编写。