新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1040

 
Artyom Trishkin:

指标数字(5)

谢谢你!
 

让我再问一个问题。基于同一指标。让我们假设,我们将指标附加到图表 上。我们得到Bid1的第一个值。然后我们得到Bid2的第二个值。而我们需要比较这两个值。从第二个数字中,我们减去第一个数字,得到我们加到第一个Bid1的数字。

Bid1=1.11133

Bid2=1.11135

竞价2-竞价1=0.00002

竞价1+0.00002=1.11135

我的理解是,其结果与原始指标相同。

我只是想看看实现情况,了解代码的逻辑。

 
Alexey Viktorov:

你必须在文件属性中解锁它。

谢谢你!:)
 
jaffer wilson :

两个声明。

打印:22.33

И

打印:2.00000

为什么会有不同的产出?在C / C ++中,上述语句工作正常。

有人对这个问题有什么想法吗?

 

帮助我理解mt5中的价格数组。这在指标中并不清楚。我输出价格,这是在OnCalculate中。

  for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

我得到了奇怪的价格。

2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[10] = 1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[9] = -523642413
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[8] = 1691873517
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[7] = 590987500
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[6] = 1583296744
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[5] = 115448721
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[4] = 360090058
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[3] = -1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[2] = -856244680
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[1] = 366962006
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[0] = -1209462791

我反其道而行之,创建一个数组并复制它(我通过尝试寻找,我不清楚)。

double Open[];//глобальная
CopyOpen(NULL,0,0,Bars_To_Process*2,Open); //OnCalculate
 for(int i=10; i>=0; i--)
         PrintFormat("Open[%d] = %d",i,Open[i]);//OnCalculate

我也得到了类似的结果。

2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[10] = 1356522471
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[9] = -1708366192
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[8] = -729800843
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[7] = 1499458982
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[6] = 167675523
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[5] = -90709709
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[4] = -321607151
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[3] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[2] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[1] = 1663011337
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[0] = -1408749273

有了日期,就更有意思了。我打印的是OnCalculate中的日期。

for(int i=10; i>=0; i--)
         PrintFormat("s- time[%d] = %s",i,TimeToString(time[i]));

我明白这一点。

2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[10] = 2015.12.02 10:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[9] = 2015.12.02 09:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[8] = 2015.12.02 08:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[7] = 2015.12.02 07:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[6] = 2015.12.02 06:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[5] = 2015.12.02 05:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[4] = 2015.12.02 04:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[3] = 2015.12.02 03:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[2] = 2015.12.02 02:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[1] = 2015.12.02 01:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[0] = 2015.12.02 00:00

而当我复制它的时候。

datetime Time[];
CopyTime(NULL,0,0,Bars_To_Process*2,Time);
for(int i=10; i>=0; i--)
         PrintFormat("Time[%d] = %s",i,TimeToString(Time[i]));

它打印出来很好。

2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[10] = 2020.01.15 10:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[9] = 2020.01.15 11:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[8] = 2020.01.15 12:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[7] = 2020.01.15 13:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[6] = 2020.01.15 14:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[5] = 2020.01.15 15:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[4] = 2020.01.15 16:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[3] = 2020.01.15 17:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[2] = 2020.01.15 18:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[1] = 2020.01.15 19:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[0] = 2020.01.15 20:00

但光靠约会是走不远的。帮助我理解。我怎样才能获得正确的开盘价收盘价

 
Yevhenii Levchenko:

帮助我理解mt5中的价格数组。这在指标中并不清楚。我输出的是OnCalculate中的价格。

for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

要像这样做。

for(int i=10; i>=0; i--)
{
   Print("s- open[",i,"] = ",open[i]);
}

你在格式化输出 中使用了错误的类型规范

 
Igor Makanu:

这样做。

你在格式化输出 中使用了错误的类型规范

Aaaaahhhh,该死!非常感谢你,伊戈尔!

我应该把%f...我弄错了......我还需要把ArraySetAsSeries放在所有地方。这有点奇怪...

 
Igor Makanu:

如果你从头开始写指标代码,我不建议使用ArraySetAsSeries()(如果你从MQL4移植它--另一回事)。

使用rate_total作为最右边的条数-1,你会更快地习惯于MQL5中的指标逻辑。

谢谢你!

不是从头开始写...我正在将一个指标从mt4转移到mt5上
 
Oleg Bondarev:

让我再问一个问题。基于同一指标。让我们假设,我们将指标附加到图表 上。我们得到Bid1的第一个值。然后我们得到Bid2的第二个值。而我们需要比较这两个值。从第二个数字中,我们减去第一个数字,得到我们加到第一个Bid1的数字。

Bid1=1.11133

Bid2=1.11135

竞价2-竞价1=0.00002

竞价1+0.00002=1.11135

我的理解是,其结果与原始指标相同。

我只是想看看实现情况,了解代码的逻辑。

帮助我。这不是我自己的工作。我做了两个缓冲区x[ ]来比较Bid值,y[ ]来绘制。而且什么都没有。

 
Oleg Bondarev:

我需要你的帮助。我自己不能让任何东西工作。我做了两个缓冲区x[ ]来比较Bid值,y[ ]来绘制。而且什么都没有。

试着用不同的方式提问,你的问题可能不清楚