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

 
m-r LSV:

我没看错吧?

if(rates_total - prev_calculated == 1)
 Print("Новый бар");
 
Taras Slobodyanik:

谢谢你,我现在有了这个

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
   Print("Новый бар");


return(rates_total);

	          
 

你能告诉我在开盘时最后收盘的蜡烛的方向吗?

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {
   fin=iTime(Symbol(), PERIOD_M1 ,0);
   if(last==fin) return(rates_total);
   last=fin;
   
   if(rates_total - prev_calculated == 1)
   //Print("Новый бар");
   
   if(open[1] > close[1])
   {
      Print("Dn");
   }
   else if(open[1] < close[1])
   {
      Print("Up");
   }

return(rates_total);

这段代码总是显示相同的信息,无论关闭的是什么蜡烛。
我的理解是,我需要通过一个循环重新计算蜡烛图?
请提供建议,人们!

 
Taras Slobodyanik:

你为什么要这样嘲笑一个没有经验的程序员呢?

如果加载了一个遗漏的故事,而且差异大于1,怎么办?我们并不关心,让我们跳过一个酒吧......让我们考虑一下,多一个,少一个。如果没有解释,我们为什么要给出代码?看看你最后得到了什么?

 
Alexey Viktorov:

你为什么要这样嘲笑一个没有经验的程序员呢?

如果加载了一个遗漏的故事,而且差异大于1,怎么办?我们并不关心,让我们跳过一个酒吧......让我们考虑一下,多一个,少一个。如果没有解释,我们为什么要给出代码?看看你最后得到了什么?

阿列克谢,告诉我正确的方法。请。
 
Alexey Viktorov:

你为什么要这样嘲笑一个没有经验的程序员呢?

如果加载了一个遗漏的故事,而且差异大于1,怎么办?我们并不关心,让我们跳过一个酒吧......让我们考虑一下,多一个,少一个。如果没有解释,我们为什么要给出代码?看看你最后得到了什么?

这很明显)。

如果加载了,就会超过1,而且又不是 新条,为什么要记下来,问题中没有这个东西。

 
m-r LSV:

你能告诉我在开盘时最后收盘的蜡烛的方向吗?

这段代码总是产生相同的信息,无论关闭的是什么蜡烛。
我的理解是,我需要通过一个循环重新计算蜡烛图?
请提供建议,人们!

因为没有括号。

if(rates_total - prev_calculated == 1)
   {
   //Print("Новый бар");
   if(open[1] > close[1])
        {
        Print("Dn");
        }
   else if(open[1] < close[1])
        {
        Print("Up");
        }
   }
 
m-r LSV:

我没看错吧?

这就对了。

m-r LSV:

蜡烛的打开时间被推迟了9-12秒。
你能告诉我这是第一次打勾吗?

对我来说,在新蜡烛的第一个刻度上进行计算和执行任何行动是极其重要的。


一个新的蜡烛 是在第一个刻度上形成的。

为了检查,你可以问一下蜱虫的情况

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
 {
  MqlTick tick[];
  if(prev_calculated > 0 && rates_total > prev_calculated)
   {
    if(CopyTicks(_Symbol, tick, COPY_TICKS_ALL, 0, 2) <= 0)
      Print("ERR ", GetLastError());
    else
      ArrayPrint(tick);
   }

  return(rates_total);
 }

并看到最后一个刻度线属于当前蜡烛,而前一个刻度线则分别属于前一个蜡烛。

2021.06.02 17:50:59.311 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:50:59.311 00 (EURUSD,M1)  [0] 2021.06.02 17:50:58 1.22005 1.22007 0.0000        0 1622656258958       4       0.00000
2021.06.02 17:50:59.311 00 (EURUSD,M1)  [1] 2021.06.02 17:51:00 1.22004 1.22010 0.0000        0 1622656260655       6       0.00000
2021.06.02 17:51:58.741 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:51:58.741 00 (EURUSD,M1)  [0] 2021.06.02 17:51:59 1.22021 1.22026 0.0000        0 1622656319887       6       0.00000
2021.06.02 17:51:58.741 00 (EURUSD,M1)  [1] 2021.06.02 17:52:00 1.22020 1.22025 0.0000        0 1622656320080       6       0.00000

例如,在我的演示中,它打开时没有任何延迟。

但在流动性较差的一对上,会有1秒的延迟

2021.06.02 17:55:59.742 00 (CADJPY,M1)                   [time]  [bid]  [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06.02 17:55:59.742 00 (CADJPY,M1)  [0] 2021.06.02 17:55:59 90.881 90.885  0.000        0 1622656559379       2         0.000
2021.06.02 17:55:59.742 00 (CADJPY,M1)  [1] 2021.06.02 17:56:01 90.882 90.887  0.000        0 1622656561076       6         0.000
 
Taras Slobodyanik:

这很明显)

如果加载了,就会超过1,又不是 新栏,为什么要记下来,任务中没有这个东西。

哪里写的是随着新栏的出现,不能有历史的分载?
 
Taras Slobodyanik:

因为没有括号

没有任何帮助 :(

2021.06.02 17:54:09.465 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:55:09.439 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:56:09.686 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:57:09.471 Test (Volatility 10 Index,M1)      Up
2021.06.02 17:58:09.586 Test (Volatility 10 Index,M1)      Up
原因: