这就没有意义了。如果我声明的数组不是同一个大小呢?基本上可以保证不是这样的。我不想从数组的末端走出来,所以我可以声明数组比我认为的要大,但是如果它曾经大过呢?如果它更小呢?如果 "数组 "的条目比货币数据多,那么剩下的条目是否会被填成0?对于双重索引的数组又会怎样呢?例如,假设我声明数组的大小为[16384][6],我想复制到[0:16383,0]的数据长度为3000。我怎么做呢?我是否需要另一个数组变量来设置为货币数据,这将是一个单索引变量(只有16384大小,而不是16384 x 6大小),然后它的前3000个条目将被写入货币数据,3000至16383条目将被写入0,然后由我将临时变量的内容移入[16384][6]大小的数组?这就是我现在遇到的难题。
我并没有要求任何人为我生产具有商业价值的东西。我没有要求别人 "为我编码我的方法",WHRoeder。我只是需要一个起点。我也许能从你放在 "搜索 "下的链接中找到一些东西,尽管我真的想得到一个赤裸裸的 "这是需要的"。我不知道这个程序实际上应该是什么样子。我不知道什么是严格意义上需要的。如果我试图在没有任何参考点的情况下自己去做,我只会得到编译器错误,因为我甚至不知道它缺少什么。
看这里
我正处于将这些碎片拼凑起来的阶段。但我还没有完全达到目的。有一些事情没有任何意义。比如说。
https://docs.mql4.com/array/ArrayCopySeries
这毫无意义。如果我声明的数组的大小不一样怎么办?基本上可以保证不是这样的。我不想从数组的末端走出来,所以我可以声明数组比我认为的要大,但是如果它曾经大过呢?如果它更小呢?如果 "数组 "的条目比货币数据多,那么剩下的条目是否会被填成0?对于双重索引的数组又会怎样呢?例如,假设我声明数组的大小为 [16384][6],而我想复制到 [0:16383,0] 的数据长度为 3000。我怎么做呢?我是否需要另一个数组变量来设置为货币数据,这将是一个单索引变量(只有16384大小,而不是16384 x 6大小),然后它的前3000个条目将被写入货币数据,3000至16383条目将被写入0,然后由我将临时变量的内容移入[16384][6]大小的数组?这就是我现在遇到的难题。
我正处于将这些碎片拼凑起来的阶段。但我还没有完全达到目的。有一些事情没有任何意义。比如说。
https://docs.mql4.com/array/ArrayCopySeries
这就没有意义了。如果我声明的数组不是同一个大小呢?基本上可以保证不是这样的。我不想从数组的末端走出来,所以我可以声明数组比我认为的要大,但是如果它曾经大过呢?如果它更小呢?如果 "数组 "的条目比货币数据多,那么剩下的条目是否会被填成0?对于双重索引的数组又会怎样呢?例如,假设我声明数组的大小为[16384][6],我想复制到[0:16383,0]的数据长度为3000。我怎么做呢?我是否需要另一个数组变量来设置为货币数据,这将是一个单索引变量(只有16384大小,而不是16384 x 6大小),然后它的前3000个条目将被写入货币数据,3000至16383条目将被写入0,然后由我将临时变量的内容移入[16384][6]大小的数组?这就是我现在遇到的难题。
我认为你应该再读一下文件。它指出,我引用"数据阵列没有真正的内存分配,没有任何东西被复制"。
它只是设置了一个引用,所以你没有在目标阵列上设置大小。你只是声明它。再看一下文档中的例子。在声明中没有大小。
datetime daytimes[];
那么,我必须用iclose一次一次地下载历史价格?https://docs.mql4.com/series/iClose 我认为这样做的问题是,当我在下载时,数据可能会更新。如果能以块的形式下载整个数据,那就非常好了。我猜想我可以用iTime下载时间,然后使用iclose,然后在同一个指数上再次使用iTime,如果它发生了变化,那么它已经开始了一个新的条形时间间隔,我必须回到一个指数。我的推理是否正确,还是有什么我不明白的地方?
我认为我们说的不是同一种语言。首先你问的是ArrayCopySeries功能,现在你想通过iClose下载所有数据。
没有必要下载所有的数据--在你需要的任何时候,它都在那里。
你想做的是什么?
如果你已经可以从第一个数组中完全访问它,为什么还要把数组中的所有数据复制到另一个数组中?
你是想把信息传递给外部DLL进行处理吗?如果是这样,你应该使用 "CopyRates "函数 -https://www.mql5.com/en/docs/series/copyrates
对于任何其他情况,你不需要下载所有的数据。它已经可以通过正常的方法访问了。
我决定重新详细阅读你的第一篇帖子,看看你想达到什么目的,并意识到你的做法是完全错误的。
你不需要像你解释的那样把所有的数据下载到RAM中。它已经由MetaTrader环境为你完成了。你所要做的就是以正常方式访问它。
我建议你看看网站上代码库 中的许多EA实例,或MQL4编程的介绍性书籍,也在这个网站上。
也可以阅读各种解释如何编写EA的文章。
这样,你就可以学习如何做,而不是试图 "重新发明车轮"。
没有人告诉我如何做任何事情,他们告诉我自己想办法,或者付钱给别人做,阅读这个主题的前几篇帖子,你就会明白。这个论坛上的人真是胆大包天。他们拒绝告诉我任何事情,然后嘲笑我不知道 "正常方法"。哦,一定要告诉我!但无论如何,这听起来并不理想。我想做的是将货币市场 数据下载到我的电脑内存中,在此基础上进行计算,然后让我的电脑再上传买入和卖出指令,在货币市场上进行交易。这就是我想做的事。如果不是我的电脑在进行计算,那么到底是什么在进行计算?一些远程计算机吗?我不可能每次想访问历史价格时都在互联网上发送和接收数据,如果我想在计算过程中访问该价格1000次,访问该价格所需的时间将使计算速度降低数千或数百万。这就是计算机架构中存在RAM的原因之一,对硬盘的读写需要更长的时间。这里的原理是一样的,我需要把数据存储在我的电脑上的一个阵列中,因为每次我想访问某个特定的信息时,在互联网上发出请求是很糟糕的。
你对交易机器人应该做什么有什么想法?
没有人告诉我如何做任何事情,他们告诉我自己想办法或付钱给别人做,阅读这个主题的前几个帖子,你会看到这一点。这个论坛上的人真是胆大包天。他们拒绝告诉我任何事情,然后嘲笑我不知道 "正常方法"。哦,一定要告诉我!但无论如何,这听起来并不理想。我想做的是将货币市场数据下载到我的电脑内存中,在此基础上进行计算,然后让我的电脑再上传买入和卖出指令,在货币市场上进行交易。这就是我想做的事。如果不是我的电脑在进行计算,那么到底是什么在进行计算?一些远程计算机吗?我不可能每次想访问历史价格时都在互联网上发送和接收数据,如果我想在计算过程中访问该价格1000次,访问该价格所需的时间将使计算速度降低数千或数百万。这就是计算机架构中存在RAM的原因之一,对硬盘的读写需要更长的时间。这里的原理是一样的,我需要把数据存储在我的电脑上的一个阵列中,因为每次我想访问某个特定的信息时,在互联网上发出请求是很糟糕的。
你有什么想法,一个交易机器人应该做什么?
MetaTrader和MQL环境不是这样工作的!正如我所说的!不要重新下载数据到RAM,因为它已经为你做了。不 要试图教我们如何在MQL4中编码。你才需要抛开你对如何编写代码的先入为主的想法,首先学习你手头的工具和环境。
如果你不希望别人嘲笑你,那就不要偷懒,阅读文档(从头到尾)。这个网站有许多文档和代码实例的链接。
当我开始的时候,在没有熟悉环境的情况下,我没有寻求任何帮助。我花时间读了书,读了文档,读了这个网站上很多很多的例子,学会了如何去做。
你不是一个婴儿,不需要用勺子喂。通过阅读这里和其他许多网站上的完全免费的文档来学习。你甚至可以出去买一些关于如何用MQL4或MQL5编写EA的书(例如,Andrew R. Young的《专家顾问编程》)。
然而,如果你正在寻找一位老师,那就不同了。你通常要为拥有一个 "私人教练 "的服务付费。你愿意付钱吗?我相信很多人都会接受这样的请求,在工作 区(https://www.mql5.com/en/job)。
另外,第一个为你评论的人是 "ubzen",他做的第一件事就是建议你从阅读 "入门书 "和 "参考文件 "开始,因为你声称你已经是其他语言的优秀程序员了。非常合理的建议!
还有一件事--如果你用你的小灰细胞,在这里的文章部分进行搜索,你会发现这篇非常古老但仍然有效的文章。
所以,不要再抱怨和偷懒了,做你的 "研究 "部分的研发。你对这一点很熟悉,不是吗?
没有人告诉我如何做任何事情,他们告诉我自己想办法,或者付钱给别人做,阅读这个主题的前几个帖子,你会看到。这个论坛上的人真是胆大包天。他们拒绝告诉我任何事情,然后嘲笑我不知道 "正常方法"。哦,一定要告诉我!但无论如何,这听起来并不理想。