不务正业之二:MQL4 编程入门学习到实战(2)

不务正业之二:MQL4编程入门学习到实战(2)

六、不忘初心

最初的目的就是写出一个自己的EA。我是应该直接从编个EA开始,还是从每一个MQL语言开始?一会儿听视频课程,一会儿看那个面对零基础的教程、一会儿又想去找一个现成的EA源代码来研究。这样的学习,最终却什么都没有记录下来。

我心里还是有一个把自己的学习过程都记录下来的想法,希望在自己学过之后,自己的学习经历能让那些零基础的其他同学能够跟着我的学习经历也能学会EA编程。

最好是能有一个或者两个一起学习的同学。不过挺难找的、已经学过一段时间的其他朋友,可能不是很愿意跟我一起讨论。而更多的人,不屑于来学习EA,因为,交易的获利核心不是在会不会编程。

无论如何,我还是应该把自己的每一步的学习和练习过程都记录下来。

乱就乱,有时间在整理自己的文字。

七、看《《MQL4实用编程》读书笔记(3) -交易操作的编程:建仓和挂单》及练习:

比较简单的做法,直接复制他的代码,在编辑器里新建一个S

Crips,文件名你随意起。得到一个模板,我把自动生成的代码全部删除。把复制来的代码粘贴进去,直接编写。

自动有的代码:

粘贴代码:

编写:

看下面的信息提示,有错误。

错误的意思大意是,这个变量没有定义。

双击错误提示行,直接跳到代码行:

仔细对比之前的变量定义部分:

这里应该是三个变量,他们之间应该有一些运算符号,而程序中漏了符号,我最初的想法是随意在他们的中间加一些符号,比如减号,乘号:

再次编写时就可以通过了,然后我试着调试程序,就是点那个三角形。

结果,MT4下单的命令发给了服务器,但是无法成交,返回的错误代码是134(以下是在MT4的提示,这是程序设计时的报警设置,我跟喜欢直接看MT4终端的EA提示:)

查一下《MQL4命令手册》:

还有一个小问题:

MT4的设置应该是允许自动交易:

在点那个帽子,或者在工具-设置里的EA交易部分进行设置:

如果不设置,返回的错误是:

重新回到仔细研究那行代码:

double Lot=MathFloor(Free*Prots-One_Lot*Step)*Step;//总手数,各自的意思是:

Free:账户的保证金

Prots:允许使用保证金的百分比。

这两个相乘,就是用多少保证金来开仓。

One_Lot:开一手单需要的保证金。

Step:最小的开单手数,是通过向服务器查询返回的数据,大多数平台是0.01手。

这两个相乘,意思是按开最小的手数(0.01手),需要的保证金数量。

所以,公式应该是:

(投入开仓的保证金÷每0.01手需要的保证金=开仓手数/0.01手),这个再乘以0.01就是实际的开仓手数。

代码改为:

double Lot=MathFloor((Free*Prots)/(One_Lot*Step))*Step;//总手数

不知道为,刚刚开单返回错误130,这次竟然有能成功开单了:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171221G0I7N100?refer=cp_1026

扫码关注云+社区