文章 "在 MetaTrader 5 中实施多货币模式" - 页 2

 
Lizar:

但奇怪的是,测试仪中的专家无法加载间谍程序。它在演示版中能工作吗?

他得到的错误信息是

Err_indicator_cannot_create

4802

无法创建指标

查看无法创建指标的原因。
 
Yedelkin:
他得到的错误信息是

Er_indicator_cannot_create

4802

无法创建指标

查看无法创建指标的原因。

我还没弄明白。在演示版上可以运行,但在测试版上无法加载(无法创建)。甚至连这个都试过了:

#property tester_indicator "iSpy.ex5"
也无济于事。
 
Lizar:

我还找不到线索。在演示版上可以运行,但在测试版上却无法加载(无法创建)。甚至连这个都试过了:

也无济于事。

通过科学的方法,它在测试仪中起了作用:

   if(iCustom("GBPUSD",PERIOD_M1,"iSpy.ex5",ChartID(),0)==INVALID_HANDLE) 

现在的问题是 - 为什么会这样

 
Yedelkin:

按照科学方法,测试仪就是这样工作的:

现在的问题是--为什么要这样做

哇,"科学窥探 "在我们的业务中是一件伟大的事情。在我看来,为什么会这样是开发人员的问题。

谢谢你帮我弄明白了。

 
Lizar:

在间谍控制面板 MCM 的OnCalculate() 函数 中有一行:

默认情况下,price[rate_total-1] 等于最后一个未完成条形图的收盘价,而最后一个未完成条形图的收盘价又等于最后一个买入价。

如果您想强行获取卖出价,请替换这一行,例如,....。

谢谢,但有点不对,即您可以获得买入价或卖出价。但我需要同时获得卖出价和买入价,以便分析类似情况。

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
3 ticks,出价没有变化,因此(可能)要价发生了变化。我想获得更完整的信息。

 
Trolls:

谢谢,但有一点不对,即您可以获得买入价或卖出价。但要同时获得买入价和卖出价,就需要分析这样的情况。

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
三个刻度,买入价没有变化,因此(可能)卖出价发生了变化。希望收到更完整的信息。

有可能吗?

有可能,有几种方法:

1. 在同一符号上有两个不同 ID 的间谍。一个发送出价,另一个发送要价。

2. 在同一符号上设置一个间谍,但让它以不同的 ID 依次发送出价和要价两个事件。

3.还有更多选项,但这些选项都需要对 OnChartEvent传递参数的 方案进行重大修改,我不建议采用。

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
使用间谍作为 "新刻度到达的信号",并在 Expert Advisor 中使用SymbolInfoTick 获取刻度的全部信息。
 
Kos:
使用间谍作为 "新刻度到达的信号",在智能交易系统中使用 SymbolInfoTick 获取刻度的全部信息。

很好的解决方案。
 

如果不介意的话,给我一点提示。这篇文章包含一个枚举示例

enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_INIT      =0,          // 事件 "初始化"
   CHARTEVENT_NO        =0,          // 事件断线

   CHARTEVENT_NEWBAR_M1 =0x00000001, // 1 分钟图表上的 "新条形图 "事件
   CHARTEVENT_NEWBAR_M2 =0x00000002, // 在 2 分钟图表上显示 "新条形图 "事件
   CHARTEVENT_NEWBAR_M3 =0x00000004, // 3 分钟图表上的 "新条形图 "事件
   CHARTEVENT_NEWBAR_M4 =0x00000008, // 在 4 分钟图表上显示 "新条形图 "事件
   
   ...
   
   CHARTEVENT_ALL       =0xFFFFFFFF, // 启用所有事件
  };

和使用该枚举值的示例:

if((flag_event & CHARTEVENT_NEWBAR_M1)!=0) EventCustom(CHARTEVENT_NEWBAR_M1,price_current

标准库中 也有类似的结构。据我所知,我们谈论的是十六进制数和位运算,但在互联网上找到的几篇普通文章并不能帮助我们明确它们在 MQL5 中的含义和使用目的。您能告诉我在哪里可以清楚明白地熟悉 MQL5 中使用的十六进制逻辑的特殊性吗?

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Yedelkin:

如果不介意的话,给我一点提示。这篇文章包含一个枚举示例

和使用该枚举值的示例:

标准库中 也有类似的结构。据我所知,我们谈论的是十六进制数和位运算,但在互联网上找到的几篇普通文章并不能帮助我们明确它们在 MQL5 中的含义和使用目的。您能告诉我在哪里可以清楚明白地读到 MQL5 中使用的十六进制逻辑的特殊性吗?

十六进制逻辑在任何地方都是一样的。您可以在这里 了解数字系统。您可以在这里阅读有关位置数字系统的信息,并查看 16 进制和二进制的参考信息。那里还有系统间转换的例子。

所有位操作都是针对二进制系统的。关于 MQL5 中的位操作,请点击此处