Mt4结束支持。 - 页 44

 
Реter Konow:

现在告诉我--我完成任务了吗?

你们(彼得和反对者)都是从错误的方面来的!这个任务可以用两种方式完成 !

一个装配工会说,他可以更有效地做到这一点,而且对计算机资源的消耗更少!"。

但这有什么意义呢?

在我看来,我们只有在速度或内存不足的时候才应该考虑效率问题。当你拥有足够多的时候,更重要的是,它易于维护和修改系统。即使它对程序的速度和使用的内存有一些损害。

俄语名字并不困扰我,唯一困扰我的是--我习惯于使用前缀,这样你可以通过其外观立即了解变量的类型。而俄语或英语的识别器--区别不大(1C--有很多俄语)。

但最让我惊讶的是,我自愿拒绝了调试器。这只是受虐狂...我可以理解,当没有调试器的时候(曾经一度没有对历史数据的调试)--你必须扭动,发出调试信息,记录...但是,如果你有一个调试器--用它来工作会更方便、更有效率 !

 
George Merts:

你们(彼得和反对者)都是从错误的方面来的!这个任务可以用两种方式完成 !

一个装配工会说,他可以更有效地做到这一点,而且对计算机资源的消耗更少!"。

但这有什么意义呢?

在我看来,我们只有在速度或内存不足的时候才应该考虑效率问题。当你拥有足够多的时候,更重要的是,它易于维护和修改系统。即使它对程序的速度和使用的内存有一些损害。

俄语名字并不困扰我,唯一困扰我的是--我习惯于使用前缀,这样你可以通过其外观立即了解变量的类型。而俄语或英语的识别器--区别不大(1C--有很多俄语)。

但最让我惊讶的是,我自愿拒绝了调试器。这只是受虐狂...我可以理解,当没有调试器的时候(曾经一度没有对历史数据的调试)--你必须扭动,发出调试信息,记录...但是,如果你有一个调试器--用它来工作会更方便、更有效率 !

乔治,我不知道如何使用调试器。甚至不知道或想知道它是用来做什么的。所以这里没有受虐倾向。而现在已经太晚了。
 

彼得,你已经替代了任务。你的解决方案有时需要,但非常少,而且不纯粹是这种形式,而是类似的。

更多时候,不同的任务--新条目的出现应该在程序的不同地方进行跟踪。因此,将一个符号和一个时间框架传入函数并在数组中搜索它们,根本不是一个好的解决方案。由于isNewBar函数有一个静态变量,我们必须为每个时间框架符号复制一个函数。可以通过引用将最后一个时间框架的变量传入函数。

但OOP有一个理想的变体--它为每个符号创建自己的对象--时间框架。

这是,如果我们不考虑isNewBar函数根本就不需要,只是为了从无到有的定型。

 
Dmitry Fedoseev:

彼得,你已经替代了任务。你的解决方案有时需要,但非常少,而且不纯粹是这种形式,而是类似的。

更多时候,不同的任务--新条目的出现应该在程序的不同地方进行跟踪。因此,将一个符号和一个时间框架传入函数并在数组中搜索它们,根本不是一个好的解决方案。由于isNewBar函数有一个静态变量,我们必须为每个时间框架符号复制一个函数。可以通过引用将最后一个时间框架的变量传入函数。

但OOP有一个理想的变体--它为每个符号创建自己的对象--时间框架。

也就是说,如果我们不考虑isNewBar函数根本就不需要,只是为了蹭热度,从无到有。

我没有改变任何东西。我只是以不同的方式解决了这项任务。按照你的逻辑,我一定是不可避免地来到了OOP的必要性。然而,无论你如何看待它,你都可以安全地使用我的解决方案。任何函数,在任何时间,从程序的任何地方访问全局数组,以获取任何符号和任何时间框架上的新条形事件。

有多少个符号和多少个时间框架并不重要--在我的解决方案中,它们的数量不会增加系统的负荷。只要看一下数组--是否有新的酒吧事件。

如果你不从市场报告中提取,而是在Symbols[]数组中手动输入,你可以减少符号的列表。请。


已添加。

顺便说一下,请注意--New_bar()函数已经不存在了。事实证明,这确实是不必要的。你是对的。

 
Реter Konow:

我的任务是:使我能够在一组时间框架上获得一组符号的新条形 事件,而不需要OOP,并且是简短而有效的代码。

现在告诉我--我完成任务了吗?

绝对是的。但是!!!恰好,我的建议被扭曲了一下,结果你就按照你的理解来理解了。在外汇中,你只对你现在需要的数据感兴趣。我需要一个符号和当前时期的信息,仅此而已--其他的信息我不感兴趣。我们需要另一个符号和某个时期的信息,那么同样的代码就应该得到它。而且没有必要用接收信息来使系统超负荷运转,因为现在不需要。

这不是你的错,它只是发生了。我试图阻止你,但我做不到。

 
Dmitry Fedoseev:

彼得,你已经替代了任务。

他没有调换它。正是因为这句话的转述方式,他才这样理解。

 
Alexey Viktorov:

绝对是的。但是!!!恰好,我的建议被扭曲了一下,结果你就按照你的理解来理解了。在外汇中,你只对你现在需要的数据感兴趣。我需要一个符号和当前时期的信息,仅此而已--其他的信息我不感兴趣。我们需要另一个符号和某个时期的信息,那么同样的代码就应该得到它。而且没有必要用接收信息来使系统超负荷运转,这在现在是没有必要的。

这不是你的错,它只是以这种方式发生。我试图阻止你,但我做不到。

没问题,你只需把需要的符号名称写进Symbols[]数组。

从OnInit()中删除记录。

   for(int a1 = 0; a1 < All_symbols; a1++)
     {
      Symbols[a1] = SymbolName(a1 + 1,true); 
      //Возможно, нумерация символов в обзора рынка идет с нуля.
      //Тогда: Symbols[a1] = SymbolName(a1,true);
     }

并在全局范围内初始化数组

Symbols[3] = {"EURUSD","AUDUSD","GBPUSD"};

并从Timeframes[]数组中删除不必要的时间框架。

int    Timeframes[3] = {PERIOD_M1,PERIOD_M5,PERIOD_M15};

改变变量。

int    All_Timeframes = 3;

并改变All_Symbols变量。

int    All_symbols = 3;

这样,你将只收到正确的符号和正确的时间框架的事件。

已添加。

同时从OnInit()中删除数组大小的设置,因为你知道符号的数量。

   //-------------------------------------------------------------   
   All_symbols = SymbolsTotal(true);
   //---------------------------------------------------------   
   ArrayResize(Symbols,All_symbols);
   //---------------------------------------------------------
   ArrayResize(All_bars_table,All_symbols);
   //---------------------------------------------------------
 
Реter Konow:

我没有替代任何东西。我只是以不同的方式解决了这个问题。按照你的逻辑,我不可避免地要走到对OOP的需求。然而,无论你如何看待它,你都可以安全地使用我的解决方案。任何函数,在任何时间,从程序的任何地方访问全局数组,以获取任何符号和任何时间框架上的新条形事件。

有多少个符号和多少个时间框架并不重要--在我的解决方案中,它们的数量不会增加系统的负荷。只要看一下数组--是否有新的酒吧事件。

如果你不从市场报告中提取,而是在Symbols[]数组中手动输入,你可以减少符号的列表。请。


已添加。

顺便说一句,注意--New_bar()函数已经消失。事实证明,这真的是不必要的。你是对的。


如果是这样,正如黑体字所强调的那样--在垃圾桶里。

 
Dmitry Fedoseev:

如果是这样,如黑体字所示,它就会被放入垃圾箱。

为什么?
 
Реter Konow:

没问题,只要在Symbols[]数组中写上你想要的符号的名字就可以了。

从OnInit()中删除条目。

并在全局范围内初始化数组

并从Timeframes[]数组中删除不必要的时间框架。

改变变量

并改变All_Symbols变量。

这样,你将只收到所需符号和所需时间段的事件。


彼得,别这样。除了我自己的函数外,我不需要任何其他函数来定义一个新的酒吧。好吧,恰好你所有的努力工作都变得没有必要了,对不起。