Mt4结束支持。 - 页 35

 
Реter Konow:

这个函数的变体完全没有New_bar()函数。

这是我提供的最节省资源的选择。此外,它还有另一个优点:在定时器或tick事件上执行用户代码时,新的bar事件都会被保存。

以前,你只能得到这个事件一次,而且这个标志是通过New_bar()清除的。现在,该特殊函数每分钟清除一次 "event_new_bar[][]"数组,并且只在执行自定义代码后调用。

自定义函数可以直接访问数组并检索新的酒吧事件信息,所有的代码都是在定时器或滴答事件上执行的

这就更加节省了资源。

最后一个代码也不起作用,花了7分钟才打印出来。

//+------------------------------------------------------------------+
//Пример использования событий нового бара в пользовательском функционал.
//Просто обращаемся к глобальному массиву "События_нового_бара[a1][a2]" напрямую
//и используем событие в наших торговых алгоритмах.
//+------------------------------------------------------------------+
void Моя_стратегия_торговли_на_новых_барах()
{
  for(int a1 = 0; a1 < Всех_символов; a1++)
   {
    string Этот_символ    = Символы[a1];
    //----------------------------------
    for(int a2 = 0; a2 < Всех_таймфреймов; a2++)
      {
       bool   Новый_бар      = События_нового_бара[a1][a2];
       int    Этот_таймфрейм = Таймфреймы[a2];
       //----------------------------------
       if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M5)
         {
          Print("M5");
         }
       //---------------------------------- 
       if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M1)
         {
          Print("M1");
         }
       //----------------------------------        
      }
   }
}
 
Vitaly Muzichenko:

最后一个代码也不起作用,花了7分钟才打印出来。

这个函数应该从OnTick或从一个定时器中调用。

可能有一个小问题,但我还没能找到它。自己看一下代码,看看有没有错误。这就像3戈比那么简单。而且也有评论。

如果你不明白,请问。我有其他事情要做。

 
Реter Konow:

这个函数的变体根本就没有New_bar()函数。

这是我提供的最节省资源的选择。此外,它还有另一个优点:在定时器或tick事件上执行用户代码时,新的bar事件都会被保存。

以前,你只能得到这个事件一次,而且这个标志是通过New_bar()清除的。现在,该特殊函数每分钟清除一次 "event_new_bar[][]"数组,并且只在执行自定义代码后调用。

自定义函数可以直接访问数组并检索新的酒吧事件信息,所有的代码都是在定时器或滴答事件上执行的

资源得到了更大的节省。


我不理解这种幽默。为什么 - 调试器不懂俄语?还是只有我有这样的小毛病?看到了拉丁文的变量,但没有看到西里尔文的变量。

彼得,那么你是如何使用调试器的,或者你不使用它?

 

任何有兴趣的人都可以在代码中寻找一个错误。

代码的要点。

1.声明全局数组。

  • 符号名称的一维数组 "Symbols[]"
  • 一维数组的时间框架 "Timeframes[]"
  • 一个二维数组,我们在其中写入当前的条数"Number_bars[][]"。
  • 二维数组 "新条形事件[][]",我们将在其中写入每个符号和每个时间框架的新条形事件的标志。那些在数组 "Symbols[]"和 "Timeframes[]"中的数据。这个数组将在循环中被计时器事件上的符号和时间段填充,每分钟一次。之后,它将被清除。在填充和清除之间的间隔中,这个数组将被用户功能调用,并被告知新的条形。

2.在初始化时,设置符号数组的大小,并将市场评论中的符号名称写入其中。

3.设置 "Number_bars[][]"数组的第一个维度的大小,等于符号的数量,第二个维度等于时间框架的数量。这个数组就像一个表格。它将记录每个符号和每个时间框架的当前条数。这个数字是由iBars函数返回的。

4.设置 "Events_new_bar[][]"数组的第一个维度的大小,它等于符号的数量,第二个维度等于时间段的数量。这个数组就像一个表格。它将记录每个时间框架上每个符号的新条的事件标志。

5.在计时器内,我们倒数一分钟,并对符号(在数组Symbols[]中)和时间框架(在数组Timframes[]中)做一个双(嵌套)循环。我们调用iBars函数,从数组Symbols和Timeframe中获得每个符号和每个时间框架的当前条数。首先,我们将当前的条数与已经存储在数组中的条数进行比较。如果这些值不相等,我们就在 "Event_new_bar[][]"数组中设置新酒吧事件的标志。然后,我们写出当前的条数,以代替前一个条数。


全局数组 "events_new_bar[][]"在程序的任何时候都可用,每分钟自动填充,也自动清除。在数组被填充的期间,用户功能会收到关于新条形的新鲜数据。然后,该阵列被自动清除。


就这样了。

 
Реter Konow:

这个函数应该从OnTick或从一个定时器中调用。

可能有一些小问题,但我还没能把它定位。自己看一下代码,看看有没有错误。这就像3戈比那么简单。并在此基础上进行评论。

如果你不明白,就问吧。我有其他事情要做。


专业解答

 
Nikolai Semko:

我不理解这种幽默。什么 - 调试器不懂俄语?还是只有我有这样的小毛病?它能看到拉丁文的变量,但看不到西里尔文的变量。

彼得,那么你是如何使用调试器的,还是你不使用它?

尼古拉,说来惭愧,我不知道如何使用调试器。我从来没有用过它。((
 
Galina Bobro:

专业回应

而这是专业的扯皮行为。
 
Реter Konow:

这个函数应该从OnTick或从一个定时器中调用。

可能有一些小问题,但我还没能把它定位。自己看一下代码,看看有没有错误。这就像3戈比那么简单。而且也有评论。

如果你不明白,就问吧。我有其他事情要做。

它是如此复杂和扭曲,以至于你无法理解它。

我很抱歉,但这也是完全不可读的。

 
Vitaly Muzichenko:

它是如此复杂和曲折,以至于一团糟。

我很抱歉,但这也是完全不可读的。

你知道他们说什么 "你不能...不要折磨......"?我认为这是个好主意。

 
Реter Konow:

你知道关于 "你不能...... "的说法吗?不要折磨......"?我认为这是个好主意。

没错,这就是你如何确凿地完成任务的,好吧,或者说我没能得到你的解决方案。