AutoGraf 系列 4 - MQL 功能。 - 页 34

 

如果你通过include包含文件,你可以声明外部变量,不需要任何参数传递。为了避免变量和函数名称的混淆,有必要在每个策略的名称中使用不同的前缀。

很抱歉打断你,但这么简单的问题却让你痛苦了这么久,不由得让人心疼:)

 
Integer >> :

如果你通过include包含文件,你可以声明外部变量,不需要任何参数传递。为了避免变量和函数名称的混淆,有必要在每个策略的名称中使用不同的前缀。

对不起,但对这样一个简单的问题,如此长时间的痛苦并不能让你无动于衷:)

>> 谢谢你。>> 我们会试一试。

 
Integer писал(а)>>

如果你通过include包含文件,你可以声明外部变量,不需要任何参数传递。为了避免变量和函数名称的混淆,有必要在每个策略的名称中使用不同的前缀。

对不起,打扰了,但对这样一个简单的问题,如此长时间的痛苦,不会让你无动于衷的:)

我们谈论的是将函数导入已编译的EA(ex4)中。
 
SK. писал(а)>>
我们谈论的是将函数导入已编译的EA(ex4)中。

对不起,像往常一样,我不是在谈论... 编译过的库中导入如何?

-

如果主模块被编译了,那么使用策略的inculcator就没有问题了,一切都会被编译的。如果主模块是开源的,但策略是编译的,那么你可以以开源inculdnik的形式做一个适配器。

 

亲爱的先生们!

我正在考虑以下连接链图。



函数AG_AT是一个开关,用于选择要加入的策略。

 

女士们,先生们!

请回答一个问题。

如果AT函数不是一个开关,而是包含策略代码,那么(尽管按照我的理解,这没有什么区别),应用程序如何区分AT函数向它发出指令(例如,指向终端),而不是交易本身?

从描述到应用。

Исполнение функции АТ связано с двумя основными возможностями.

首先是AT功能可以自行交易--生成交易指令并将其发送到服务器。同时,该函数不能处理从应用程序收到的任何数据(或处理这些数据的一部分),但它可以使用MQL4 的所有功能进行自己的计算,包括调用终端处理订单,获得当前报价,计算交易标准,管理图形对象等。

第二个特点是与AutoGraf 4应用程序直接相连。这个功能可以指示AutoGraf 4应用程序在特定的订单或价格图表上安装任何必要的预设工具,改变应用程序的一般设置,删除工具,向用户显示信息等(输出参数)。(输出参数)。

如果AT函数已经产生了一个交易订单,并且在应用程序中没有一行代码需要说明,那么它就会自己交易。在这种情况下,应用程序只是将订单广播给终端,而没有任何核算或处理。

如果有,那么订单就会在通过链接传递的AT函数参数中通过应用。

我的理解是否正确?

 
Integer писал(а)>>

我很抱歉,像往常一样,我并不是说... 编译过的库中导入如何?

-

如果主模块被编译了,那么使用策略的inculcator就没有问题了,一切都会被编译的。如果主模块是开源的,但策略是编译的,那么你可以以开源灌输者的形式做一个适配器。

没有什么可道歉的,讨论是有意义的。

--

一点术语。有两个镜像概念--出口和进口。它们被用于与我们自己的领土有关的地方。

出口是来自我们的边界之外。例如,从俄罗斯向欧洲出口天然气。

进口是指从国外进入我国边境。例如,将沙子从非洲进口到西伯利亚。

在这种情况下,我们谈论的是进口。我们这里的领土是专家AG_exp.ex4。这是AutoGraf 4应用程序的基础,作为一个编译文件提供给用户。专家顾问的源代码是不提供的(当然,因为该应用程序是以商业方式发布的,尽管它是免费的),因此,不能通过inclide(由用户-程序员)向专家顾问添加模块。

--

任务是使用户能够在AutoGraf 4应用程序中附加他/她自己用MQL4编写的交易算法,并作为策略的.ex4文件执行。为了解决这个问题,专家顾问AG_exp.ex4包含了将自动交易功能AG_AT导入专家顾问的代码,该功能以.ex4和mq4文件形式提供。此外,用户可以自行决定如何安排这些代码。两个选项中的一个是最方便的。

1.要在AG_AT()函数中直接编写自己的代码,并编译同名的AG_AT.mq4文件,得到AG_AT.eq4。

Пример:http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm, примеры 1-15:http://autograf.dp.ua/Pages/2/26/267/2679/2679_1.htm

2.在一个单独的策略文件中为新函数编写你自己的代码,例如,在文件My_Strategy.mq4中编写My_Strategy()。在AG_AT()中写入从My_Strategy.eq4文件(现代版)导入的My_Strategy()函数。Примерыhttp://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm, http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm

.

在这些变体中,都不可能写入外部变量,以便让用户可以使用。指定外部变量的唯一可能性是在设计阶段将其写入AG_exp.ex4中,这一点已经完成。变量的值通过AG_AT()传递给仪器阵列中的用户My_Strategy()。这是最新发布的AutoGraf 4所采用的技术,而且运行良好。

--

这一切对用户意味着什么?这意味着任何用户都可以编写自己的策略并在AutoGraf 4环境下运行。同时,他自己的策略将发挥作用,AutoGraf 4的所有功能都可以为用户所用。特别是,任何AutoGraf 4(!)的工具,如拉升、翻转、声音等都可以从策略中控制。

对于专业的程序员,该技术提供了将可定制的密码变量传入策略文件的能力。这意味着程序员可以为AutoGraf 4编写策略,并在商业基础上分发这些策略(例如,只针对特定账户)。

 
LeonidSB писал(а)>>

亲爱的先生们!

我正在考虑以下连接链图。

AG_AT函数是一个开关,用于选择要加入的策略。

是的,正确。

 
LeonidSB писал(а)>>

女士们,先生们!

请回答一个问题。

如果AT函数不是一个开关,而是包含一个策略代码,那么(尽管我理解这没有什么区别),应用程序如何区分AT函数是在向它发出指令(例如,参考终端),而不是交易本身?

该策略可以传递给应用程序。

- 常见的可调参数(SL、TP、Lots等)的值

- 要安装或删除的仪器的参数

该策略不向应用程序传输开仓和平仓的订单(这是在AG 5中基于MQL 5功能的计划),目前(在AG 4中)并没有严格要求。该策略可以而且应该使用用户自己的算法开仓/平仓订单。

如果AT函数产生了一个交易订单,并且在应用程序中没有要注册的代码行,那么该策略将自行交易。在这种情况下,应用程序只是将订单广播给终端,而没有任何核算或处理。

如果有,订单就会在通过链接传递的AT函数参数中通过应用。

我的理解是否正确?

你所说的 "要在应用程序中核算的一行代码 "并不十分清楚。

每当收到控制权返回时,应用程序就会对订单进行核算。在大循环的每次迭代中,重新计算的订单数组被传递给AG_AT,然后传递给策略。根据订单数量,该策略可以计算出适当的控制行动。策略应用应该更频繁地更新,以便策略总是有一个新鲜的订单簿记阵列。

从程序的任何部分(应用程序或AG_AT或策略)发出的交易指令直接进入MT4终端并直接进入服务器。在服务器上执行订单后,控件以同样的方式返回到交易订单发送点。当订单在服务器上被处理时,所有的人都沉默不语,等待回复--什么都没有发生(如果我没有弄错,在MT5中这种技术将被改变--我们不会等待,我们将工作:)。

 
谢谢你!