完整的MQL新手手册 - 页 3

 
8284 wrote>>

哦,CB,哦,CB !

你是一个艰难的人。你真的不想牵着我的手度过这个难关。这也是我逃离的那本用希腊语、拉丁语和火星语写的书。诚然,如果不学习术语,就不可能熟练掌握一种职业,但.....。

你让我想起了我的逻辑学讲师Otakpor博士(我指的是哲学下的逻辑)。如果你不知道自己在问什么,最好不要问他问题。CB,关于数组的书对我来说是相当技术性的(这是我第一次尝试编码)。我对它的内容有一个模糊的概念,但没有完全理解。不过,我把这当作一个挑战。

我将寻找那个小小的"...a",把我的 "啊... "变成 "aha"。

我将阅读和写作,然后给你我所知道的关于数组的知识(实际上我最需要知道的是它们的应用)。

唯一的问题是,这将导致一个非常长的帖子。在一些代码中,我看到数组被使用[],但我不太明白其中的逻辑。我希望如果有人向我解释,我就不会有那么多的问题(有点像拼图中缺少的一块)。

你向我提出了挑战,我认为这对我的发展有好处,但是我请求你对我的态度再柔和一点,因为我是科学上的残疾人。我的背景是在艺术领域。当我和女士们交谈时,她们说我说话像个诗人。我只希望我不会像诗人一样写代码!!。

说真的,我今天没有睡觉,在24小时内,我将恢复我对数组的理解。我希望你能纠正我的错误,并帮助我理解数组在编程中的应用。

哦,CB,哦,CB!

顺便说一下,我的三个最好的讲师是Otakpor博士,Barr Richard Idubor,和Barr Bob Osamor!!!。

Otakpor博士(教授逻辑学和哲学)通过用自己的问题来反驳学生的问题,使他们回答自己的问题,从而激发了学生的兴趣。

这使得整个课程具有互动性。如果你被卡住了,他会轻轻地催促你,暗示你,直到你得到答案。

如果你不知道,嗯......那就另当别论了。

 

你的问题更多的是关于你为什么要使用数组而不是如何使用?

如果是这样,那么从我的角度来看,数组是一种更整齐的方式来存储同一变量的一组实例,每个实例都可以通过描述其位置来找到。

举个例子,如果你写了一个应用程序,实现了一个非常简单的密码,其中A=1,B=2,C=3等等,你可以把字母表中的字母存储在一个一维(1x26)的字符串数组中,通过替换数字来定位每个字母。如果(作为一个例子)你写了一个EA,它存储了每个新小时过去3分钟后的第一个点的卖出价和买入价,并以滚动方式存储了过去5小时的这些值,那么你可以用一个二维(2x5)的双数组来完成。


CB

 
cloudbreaker wrote>>

你的问题更多的是关于你为什么要使用数组而不是如何使用?

如果是这样,那么从我的角度来看,数组是一种更整齐的方式来存储同一变量的一组实例,每个实例都可以通过描述其位置来找到。

举个例子,如果你写了一个应用程序,实现了一个非常简单的密码,其中A=1,B=2,C=3等等,你可以把字母表中的字母存储在一个一维(1x26)的字符串数组中,通过替换数字来定位每个字母。如果(作为一个例子)你写了一个EA,它存储了每个新小时过去3分钟后的第一个点的卖出价和买入价,并以滚动方式存储了过去5小时的这些值,那么你可以用一个二维(2x5)的双数组来完成。

CB

好吧,CB,我的问题更多的是集中在如何,而不是为什么。我知道为什么;为了方便。我理解你上面写的大部分内容,但不是全部!你又对我说技术问题了。

你又开始对我说技术了,看,为了让我们前进,你需要婴儿的谈话和耐心。我们肯定会让你感到骄傲,但这需要一段时间。考虑到就在3天前,你的上述帖子对我来说毫无意义,我恭敬地问,你的 "滚动基础 "是什么意思?

我相信当你解释的时候,我就会觉得自己被打了,但现在我很困惑

总之,我明白了原因,但不明白怎么做。

我正在写一篇关于阵列的文章,将在接下来的24小时内提交给大家,如果我漏掉了什么,我希望得到纠正。如果没有,我将会询问关于阵列的方法和时间。

非常感谢。

我很感谢你的帮助!

 

好吧,CB,我准备好了我的文章。我确信我犯了一两个错误,我很高兴有人给我指出来。就其价值而言,我认为在某些方面,我听起来有点技术性(谈论初始化和声明和其他东西)。写这篇文章让我对事情有了一些不同的看法,但无论如何我也从写这篇文章中学到了东西。

我将阅读关于多维数组的资料。

我希望你(以及其他所有人)能对这篇文章提出真诚的批评。

如果有哪个新手从中受益,我也想听听你的意见。

也许我也会写一篇关于函数 的文章,因为写这些东西会让我更深入地了解它!

 

什么是数组?

给数组下定义可能会使新手失望,所以最好是对它进行描述。之后,任何人都可以查到它的技术定义!

一个数组可以被认为是一组类似的数据。
一个例子。
人口每年都在变化。

2004年人口=4
2005年人口=5
2006年人口=6
2007年人口=7
2008年人口=8
2009年人口=9,以此类推。

如果我们用mql4编程,为了使用这些数据,我们可以将它们声明为变量,例如
int 2004pop = 4;
int 2005pop = 5;
int 2006pop = 6;
int 2007pop = 7; 以此类推,直到我们到达2009年或无穷大。

这可以工作,但很麻烦。这就是数组的作用。
整个人口数据是一个数组。
要使用数组,你必须首先声明它们。
它们是用这些"[ ]"来声明的
你必须做的第一件事是告诉程序数组的类型,它是一个整数,一个双数,等等,在我们的例子中它是一个整数。
然后给数组起一个描述性的名字,我们称之为yearpop(年份人口的缩写)。
在描述性名称之后是大括号[],在大括号内我们披露我们正在处理的内容。在我们的例子中,我们有6个数据,所以在括号内我们要填上6,就像这样 [6] 。
到目前为止,我们的数组声明看起来是这样的
int yearpop [6];
我们可以进一步初始化数组,显示各个年份的值,像这样

int yearpop [6] = {4,5,6,7,8,9};

现在mql4从0而不是1开始计数。这里我们有六个值,所以mql4不是从1到6进行编号,而是从0到5进行编号。为了获得第一年的值,你必须使用0,对于第二年,你必须使用1,以此类推。

再看一下这个
int yearpop [6] = {4,5,6,7,8,9} 。
数字4、5、6、7、8、9被称为元素
你获得元素值的方法是通过它们的索引(我希望我没有在这里混淆事情)。
索引从0开始到任何数字(在我们的例子中是5)。

因此,如果你想获得第一年的数值,你要使用它的索引,即0,像这样

yearpop [0] // 这将给你第一年的人口。
yearpop [1] // 第二年的人口。
通过这种方式,你可以方便地 进行很多计算(我想)。
例如
int overpopulation ;
overpopulation = yearpop[0] +yearpop [3] / yearpop [2];

这如何适用于mql4?
到目前为止我所知道的是,在mql4中,当前条形或时间框架或符号或图表总是0或NULL。
其次mql4是这样向后计数的
543210(从右到左)。
举个例子,在任何图表上(抱歉我不能做图形)
当前的条形图,尚未形成,其值为0。
紧挨着它的左边的柱子的值是1,而左边的下一个柱子的值是2,以此类推。
价值为0的条形图完成后,它的价值为1,而新形成的条形图的价值为0,所有其他的条形图也相应地发生变化。
现在,假设我们有一个条形图的最高价位数组(实际上我们有),我们可以做这样的事情
double highlevels [200];//意味着我们的数组里有200个条形的//价值的数据
实际上在mql4中有一个函数可以告诉我们所有条形的最高价和最低价。
假设你想知道第150个柱子和第一个柱子之间的差异。
如果没有数组,你将不得不声明,并可能初始化至少150条,这将是非常耗时的(CB,这就是数组的原因)。
但是,既然我们有数组,我们需要做的就是通过索引号来引用它们,然后进行计算,就像这样
双倍差值。

difference = highlevels [0] - highlevels[149] // 记住我们是从0开始计算的。
0是当前形成的柱子。如果我们想用一个已经完成的柱子进行计算,我们用高位[1]代替。

到目前为止,我只谈到了一维数组。它就像一个只有一行的表。

Mql4允许高达4维的数组,这是我还没有想好的事情。

 
有谁见过这个吗?
 

嘿,伙计们

看到在我消失之后,这个主题还有帖子,真是太美了。我在这个论坛上一个相当出色的人的指导下,进入了背景工作的策略。因此,从现实的角度讲,我恐怕在不久的将来不会对这个主题做出什么贡献,至少不会像以前那样 "深入"。)

同时,对所有的新手来说:保持对交易的热情,记住,如果你帮助了别人,当你需要帮助的时候,帮助也会找到你 :)

 
你好。

作为一个新手,我想问一下,内置的metastock函数: ref()和stochmomentum()是否由metatrader中的一些函数实现?

谢谢
 
Huckleberry:

嘿,尼科。

今天是7月4日。你从土耳其回来了吗?

问候

Huckleberry


对于那些需要通过搜索文件来寻找其中内容的人来说,这里有整个文件的PDF版本...

它是从一个编译的HTML帮助文件转换到PDF的...

 
cloudbreaker:

8284 - 好的程序员努力追求模块化--即创建可重复使用的构件,这些构件可以重复地拼接在一起,每一个新的程序都只需要编写最少的新代码。你必须明白,这种方法也适用于培训材料。有很多资源可以用来学习你提到的编程基础知识,因为它们在所有技术中都是通用的。在每一种编程语言中重复这些学习材料是没有效率的。


CB

嗨,CB。

自上述情况以来,发生了很多事情。我在代码编写方面已经比我想象的要熟练得多(虽然还有很多需要打磨的地方)。我发现你上面的这句话是如此的有见地(这是我当时没有体会到的)。

我想说,感谢你的帮助(我也从你对别人的帮助中学习),并祝贺你被任命为版主(我认为是当之无愧的)!

也祝贺Gordon和BB!