Реализация торговых алгоритмов часто требует анализа информации из различных внешних источников, в частности из Internet. MQL5 предоставляет функцию WebRequest для отправки HTTP-запросов во "внешний мир", но она, к сожалению, обладает одним заметным недостатком. Эта функция является синхронной, а потому блокирует работу эксперта на все время...
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
我远不是专家,所以我提前表示歉意。
我正在写一个EA。
该任务。
1) 要使用几个指标。一个相同的指标可以使用不同的设置(周期)--如何使它们并行工作,以减少获得信号的时间?
2)在接收指标信号的同时,进行不断的检查,关闭盈利或亏损的头寸。此外,我们有很多空缺职位,所以这个过程应该分部分平行进行。例如,我们可以在3或4个线程中检查1000个订单。
3)与上述过程平行,利用第1点中指标收到的信号进行买入或卖出。
最有趣的是如何将所有这些任务并行化,以便测试人员可以使用,并且可以在测试人员中进行优化。
指明方向,最好有例子。提前感谢。
我远不是专家,所以我提前表示歉意。
任务。
1) 要使用几个指标。一个相同的指标可以使用不同的设置(周期)--如何使它们并行工作,以减少接收信号的时间。
2)在接收指标信号的同时,不断检查和关闭盈利或亏损的头寸。此外,我们有很多空缺职位,所以这个过程应该分部分平行进行。例如,我们可以在3或4个线程中检查1000个订单。
3)与上述过程平行,利用第1点中指标收到的信号进行买入或卖出。
而最有趣的是=如何将所有这些任务并行化,以便测试器可以使用,并且测试器中的优化是可能的?
指明方向,最好有例子。预先感谢你。
你有没有打开过终端?一般来说,测试器和优化器总是与账户上的交易同步进行。
我想知道,如果有一个平行的必要性问题,需要多长时间才能收到来自指标的信号。
你甚至打开过一次终端吗?测试器和优化器总是与账户上的交易同步进行。
我想知道接收指标的信号需要多长时间,如果有任何关于需要并行化的问题?
1)使用几个指标。一个相同的指标可以使用不同的设置(周期)--如何使它们并行工作,以减少获得信号的时间?
2)在接收指标信号的同时,进行不断的检查,关闭盈利或亏损的头寸。此外,我们有很多空缺职位,所以这个过程应该分部分平行进行。例如,我们可以在3或4个线程中检查1000个订单。
3)与上述过程平行,利用第1点中指标收到的信号进行买入或卖出。
在一个符号上启动的指标在一个流程中工作。但如果他们写得好,就不会有延迟(将以毫秒计算)。
但所有的交易操作都可以使用额外的专家顾问/脚本进行并行化。必要时从主EA调用它们,或者让它们一直运行。在这篇文章 中可以找到一个实施的例子。或者使用异步的OrderSend,但在这种情况下,会有点难以控制。
而最有趣的是=如何将所有这些任务并行化,以便测试器和测试器中的优化可以使用?
对于测试器来说,你不需要这些,它是同步工作的,不会漏掉点滴。做2个变体--针对测试者和在线(如果(IsTesting())。
在同一个工具上运行的指标都在同一个线程中运行。但如果你写得正确,就不会有延迟(将以毫秒计算)。
但所有的交易操作都可以使用额外的专家顾问/脚本进行并行化。必要时从主EA调用它们,或者让它们一直运行。在这篇文章 中可以找到一个实施的例子。或者,你可以使用异步的OrderSend,但在这种情况下,控制会更困难一些。
对于测试人员来说,这都是不必要的,它是同步工作的,不会跳过刻度。制作2个变体--用于测试者和在线(如果(IsTesting())。
在一个工具上启动的指标都在一个线程中工作。但如果你写得好,就不会有延迟(将以毫秒计算)。
---我不明白。我不打算写我自己的指标。我正在使用OEM指标。关键是我想把它们并联起来使用,以减少响应时间......
对于测试器来说,你不需要这些,它是同步工作的,不会跳过ticks。制作2个变体--用于测试者和在线(如果(IsTesting())。
----,我完全不明白。谁不需要它?它是同步工作的 --- 但对我来说,它需要反过来,以考虑到我的异步性。两个变体是什么鬼?我的EA有一个变体,我想在测试器中运行它,但我想将我的进程并行化并在测试器中显示出来。
因为所有的东西都是按顺序运行的,所以我开始有缩水。
---我不明白。我不打算写我自己的指标。我正在使用标准的。关键是我想把它们并联起来使用,以减少响应时间......
你有没有测量过响应时间?你会在并联上损失更多。
----,我完全不明白这一点。谁不需要它?它是同步工作的---但我需要它把我的异步性考虑进去......。这两个变种是什么鬼?我的EA有一个变体,我想在测试器中运行它,但我想将我的进程并行化并在测试器中显示出来。
一个EA。
为什么要在策略测试器中测试并行化?
由于所有的东西都是按顺序执行的,我开始有缩水了,而且我的缩水幅度非常大。
分散发送交易订单 或使用OrderSendAsync
如果你需要关闭一堆交易,你可以打开一个大柜台,锁定利润,然后平静地将OrderCloseBy一个个关闭。分散发送交易订单或使用OrderSendAsync
因此,这不仅仅是关于订单的发送,还有一堆其他的检查正在进行。但它们都被排队,直到一个函数完成,另一个函数不被执行....。
我已经在问题陈述中描述过了。而这是一项复杂的任务。DLL或聊天或其他什么--我感兴趣的是,我可以把这些任务并行起来,从而在测试器中执行它们,以了解什么是什么。
因此,不仅仅是发送搜查令,还有一堆其他的检查正在进行。但所有这些都是排队的,直到一个函数完成,另一个不执行....。
我已经用问题的术语描述了它。而这是一项复杂的任务。我感兴趣的是,我可以将这些任务并行化,并在测试器中持续运行,看看有什么问题。
以及你失去了多少宝贵的时间,后果是什么?而如果没有 "损失",又会有什么利润呢?
而你失去了多少宝贵的时间,后果是什么?而如果没有 "损失",又会有什么利润呢?
我花了5天时间在测试器中运行这个策略,有24个核心供我使用。而且只有一个核心在工作。更不用说这段时间的日志,一个愚蠢的没有人需要的日志可能会膨胀到一两兆字节。而这一切都没有经过优化。而且这个愚蠢的日志不能以任何方式被禁用......
你怎么看,如果我加快进程,所以说--4个时间表,每个时间表的核心--在这一点上增加4倍。再加上一个单独的关闭1000个交易的过程,比如说,或者把这个过程分解成5个或10个线程--增加10倍。再加上通过信号开仓 的独立流程......
我认为多个和次...
但每一毫秒+到经纪人的滞后+从经纪人到交易所的滞后(如果不是厨房)都是巨大的损失。奇怪的是,这一点在西伯利亚并不被理解......。