文章 "优秀程序员(第 01 部分):您必须停止做这 5 件事才能成为一名成功的 MQL5 程序员" - 页 2

 

好文章。什么该做,什么不该做,这个概念解释得很清楚。

在这种情况下,具体例子中的错误并不会降低文章的价值,因为它的任务是帮助人们优化工作方式。文章出色地完成了这一任务,一切都写得尽可能简单明了。

谢谢你,欧米茄!

 
fxsaber #:

  • 循环中变量的第一个值是错误的。
  • 不是一个 if,而是两个。
  • 字符串比较(字符)必须放在最后。
  • bool 表达式未加括号。
  • 输入函数中缺少魔法变量。
  • 没有创建位置对象。
我第一次看到这个错误是在发布之后,因为我没有在元编辑器中编码,而是在编写时才发现的,但这并不是什么大问题,因为顺便说一下,所有使用的编码示例都只应该指定
 

有趣的...

fxsaber #:

  • 循环中的第一个变量值不正确。
  • 不是一个 if,而是两个 if。
  • 字符串比较(符号)应放在最后。
  • bool-expression 没有用括号标记。
  • 输入函数中缺少一个魔法变量。
  • 未创建位置对象。

成为优秀的程序员(第 1 部分):摆脱五个习惯,成为更好的 MQL5 程序员

 
Aliaksandr Hryshyn #:

Interesting....


:)
 
Aliaksandr Hryshyn #:

有趣的...

成为优秀的程序员(第 1 部分):摆脱五个习惯,成为更好的 MQL5 程序员

这是自由职业,客户往往完全不理解代码,差评不是因为代码的质量。我写的,程序不给利润,所以评论在这里。

 

人人必读(文章作者更是如此):每个程序员应知道的 97 件事

GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitioners.
  • github.com
Pearls of wisdom for programmers collected from leading practitioners. - GitHub - 97-things/97-things-every-programmer-should-know: Pearls of wisdom for programmers collected from leading practitio...
 
资料来源
int CountPosByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal(); i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Magic()==MagicNumber && m_position.Symbol()==Symbol() && m_position.PositionType()==type)
            { 
                counter++; 
            }
   return counter;
  }

在我看来,变体的工作速度更快,也更清晰:

int PositionsByType(ENUM_POSITION_TYPE type)
  {
   int counter = 0;
   for(int i=PositionsTotal()-1; i>=0; i--)
   {
      if(!m_position.SelectByIndex(i))
         return (INVALID_HANDLE);

      if(m_position.PositionType()!=type ||
         m_position.Magic()!=MagicNumber ||
         m_position.Symbol()!=Symbol())
         continue;

      counter++; 
   }
   return counter;
  }

1. 循环初始化中的错误在于,当我们进行回溯时,必须从数量中减去 1。

2.2. 如果无法通过库函数中的索引获得头寸,则需要带着错误退出循环,然后再处理或重 复函数,否则有可能获得不可靠的数量,而且您仍在进行财务工作,有时头寸中的数量很大, 这样的小事可能会导致损失。

3.首先应检查 bool 变量,然后检查ENUM 枚举,之后再检查 int、double、string,如果检查失败,则立即进入下一个循环元素。

如果通过 && 进行比较操作,程序必然会检查每个条件。

4.函数的名称也很重要,看起来更好的是 PositionsByType,这似乎是个小问题,但当您要使用这个函数时,您不需要去查函数库和它的目录,只需开始键入标准名称 Positions,您就会有多个调用 PositionsTotal、PositionsByType 的选项.....。

5.您需要尊重代码的宽度,不要使用水平滚动,因为这会大大降低可读性和开发速度。


 
你错了:
"如果使用 && 进行比较操作,程序必然会检查每个条件。
比较是按顺序进行的,直至第一个假条件。
顺便说一句,在这种情况下,您还可以考虑条件不满足的概率。

 
Aliaksandr Hryshyn #:
你错了:
"如果您通过 && 进行比较操作,程序必然会检查每个条件"。
比较是按顺序进行的,直到第一个假为止。
顺便说一句,在这种情况下,您还可以考虑条件不满足的概率。

是的,您纠正了我的错误,检查将一直进行到第一个 false,主要问题是小数据类型应该排在前面。

如果条件是由函数组成的,那么从消耗资源的角度来看,应该先处理最小的函数,然后再处理最大的函数,但不能破坏程序逻辑......

我在所有项目中都使用了这种技术,对于处于优化模式的测试人员来说,速度提升是显而易见的。

[删除]  
Vitaly Muzichenko #:

这是自由职业,客户往往根本不理解代码,差评不是针对代码质量的。代码是你写的,程序没有给你带来利润,这就是差评。

你会提前告诉客户吗,还是钱更重要?