文章 "针对初学者以 MQL5 编写“EA 交易”的分步指南" - 页 8

 

感谢您的这篇文章。

当我开始看 MQL5 示例时,我感到很迷茫......看了您的文章后,一切都变得容易理解多了。

 

Ottima spiegazione :-) Grazie :-)

优秀文章 Tank You :-)

 

好文章、

它帮助我节省了 3 个多月的费用,谢谢您,我将阅读您的下一篇相关文章(OOP)。

希望能看到标钱专家与您分享,我期待着这样的文章、

再次感谢您、

 
我也想成为 EA 程序员!
 
谢谢。文章写得很好,也许我会参加 2013 年的冠军赛。
 

亲爱的 Sam、

我已经下载了您的 "my_first_ea",并试用了一下,感觉很不错!

因为您的 EA,我有兴趣按照我的逻辑制作 EA,它不能自己进行交易。

顺便提一下,这个 EA 在我编译时没有错误和警告,但它不能执行交易。

您能帮帮我吗?

非常感谢您的帮助

附加的文件:
 
abolk:

德高望重、经验丰富的程序员用一种神奇的 "方法 "来 "解决 "五位数的问题。现在,这种 "方法 "也在初学者中得到了推广,可以说是在教育文献中得到了推广。

作者给出的 "方法 "完全抹杀了 5 位数的全部优势。作者没有向初学者解释,引入 5 位数报价后,可以设置的止盈点数不是 10 个点,而是 10.5 个点。还要解释在使用带有 5 位数报价的智能交易系统时,有必要指定止盈不是 10 个点,而是 100 个点。程序代码中没有这些解释,而是引入了一些行,这些行在编程上无法使用 5 位数报价的优势。

"我们必须确保我们的 EA 能在所有经纪商处正常运行"。好吧,我们确定了,然后呢?如果在程序上,EA 已经 "被判定正确运行",那么我们现在又如何使用 5 位数报价的优势呢?

如果

_Digits==3

那又怎样,一切都一样吗

STP = STP*10; 

TKP = TKP*10;

我们会得到什么?这样写不是更正确吗?

STP = STP/10; 

TKP = TKP/10;

 

为什么相同的代码在OnTick 函数 中重复了两次?

//--- 条数是否足够运行
   if(Bars(_Symbol,_Period)<60) //图表上的柱形总数少于 60 个?
     {
      Alert("在少于 60 条的图表上,EA 无法运行!!");
      return;

     }

再远一点

//--- 图表上有足够的条形图可供使用吗?
   int Mybars=Bars(_Symbol,_Period);
   if(Mybars<60) // 如果条形图总数小于 60
     {
      Alert("在少于 60 条的图表上,EA 无法运行!!");
      return;
     }
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

为了优化,最好将 ArrayResize 用于动态数组: https://www.mql5.com/zh/docs/array/arrayresize

我还在文档中读到另一件有趣的事:

如果需要经常复制时间序列和指标值,例如在 Expert Advisors 中每次调用OnTick() 或在指标中每次调用OnCalculate() 时,那么在这种情况下最好使用静态分布数组,因为 动态数组的 内存分配操作需要额外的时间 ,而且会影响 Expert Advisors 的测试和优化。

https://www.mql5.com/zh/docs/series

Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
 
在 mql4 中,我无需学习就能在几天内完成几个 ea 的编程,就是这么简单。mql5 的语言不像 mql4 那么直观。我必须深吸一口气,开始学习。