新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1010

 
Maxim Kuznetsov:

当打开一个订单时,在注释中写上对它的规则/变量的编号。

然后,当你做历史检查时,你拉出这个数字,在它上面加1,得到一个新的规则号码。

谢谢你!这是个好办法。我将尝试

 
Igor Makanu:

用这段代码做实验,也许这就是你需要的东西

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.7 --> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.6 --> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.5 ---> 0.6

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.4 --> 0.5

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.3 ---> 0.4

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.2 --> 0.3

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.1 ---> 0.2

在我的函数GetNextLot()中,你输入最后一个平仓订单的数量,它将返回Lot_XX设置的下一个值。

这段代码的唯一限制是,你必须以升序配置批次 - 我认为这段代码简单明了,你可以根据自己的需要修改它。

谢谢!!!。

 
Corvin85:

谢谢你!!!。

如果你的批次计算是任意的,你可以尝试用我的例子中的switch-case来代替if

 
我想打开两个MT4终端,并从它们连接到一个EA,即一个程序将安装在一个终端上,另一个也能找到EA,编译程序非常困难,每次都要把文件扔到那里,那里。有可能做到这一点吗?
 

编写算法的最佳方式是什么?


任务。

一个专家顾问在不同的图表上运行。

我需要有一个单独的文件,其中有关于账户、余额、权益等的每分钟信息


现在发现,所有的Expert Advisors都在一个文件中写入所有信息。因此,我们有很多不必要的条目。


对于只有一个机器人在档案中做记录,会有什么巧妙的解决方案?(而如果例如它被删除,记录开始制作另一个机器人,等等)

 
Seric29:
我想打开2个MT4终端,并从它们连接到一个EA,即一个程序将被安装在一个终端,第二个也能找到EA,非常难以编译一个程序,每次都把文件扔在那里。有可能做到这一点吗?

你不能这样做。

寻找一个能够同步 文件夹中数据 的Windows程序。并对其进行设置,使EA自动复制到新终端上

 
Sergey Likho:

编写算法的最佳方式是什么?


任务。

一个专家顾问在不同的图表上运行。

我需要有一个单独的文件,其中有关于账户、余额、权益等的每分钟信息


现在发现,所有的Expert Advisors都在一个文件中写入所有信息。因此,我们有很多不必要的条目。


可能的原始解决方案是什么,以便只有一个机器人写到文件(而且,例如,如果它被删除,另一个机器人开始做记录,等等)。

你可以尝试通过GV组织沟通。

比如说。开始了第一个,它没有找到GV,而是用一个特定的名字创建了它。图表的ID可以作为数值使用。你开始下一个专家顾问,GV在那里,它不写。你删除了第一个,它检查值,如果值等于图表的ID,它就删除GV。下一个看到GV不存在,就用自己的值创建它。

因此,GV只能由创造它的人或掌管它的人删除,从字面上看。用手删除它。

 

大家好。我有一个愚蠢的问题,我只是不想做一点实验。我有一个指标,我不需要从它那里输出任何东西,但我的专家顾问必须从它那里获取数据。什么是初始化数组 的正确方法?

INDICATOR_DATA还是INDICATOR_CALCULATIONS?

好吧,一般来说,我想知道,我是否可以从iCustom函数中的缓冲区编号中获得数据--使用定义为SetIndexBuffer(N, BufferName, INDICATOR_CALCULATIONS)的缓冲区。

 
Никита Парамонов:

大家好。我有一个愚蠢的问题,我只是不想做一点实验。我有一个指标,我不需要从它那里输出任何东西,但我的专家顾问必须从它那里获取数据。什么是初始化数组 的正确方法?

INDICATOR_DATA还是INDICATOR_CALCULATIONS?

好吧,一般来说,我想知道,我是否可以从iCustom函数中的缓冲区编号中获得数据--使用定义为SetIndexBuffer(N, BufferName, INDICATOR_CALCULATIONS)的缓冲区。

采取标准的MA,改变缓冲区数据类型,编译并在终端数据窗口检查(Ctrl+D)。

 

ChartID()被写入终端的全局变量,并出现错误。这是什么乱七八糟的东西?


试试这个代码。


   string GlobalVar1 = "GVAR";
   long ChID = ChartID();
   
   if(GlobalVariableSet(GlobalVar1,ChID) == 0)
      Print("Error GV", GetLastError());

   Print(GlobalVar1," id:",ChID, " GV_id:", (long)GlobalVariableGet(GlobalVar1));


//мой ответ 2019.11.29 13:30:39.292     test EURUSD,M5: GVAR id:132194970392300419 GV_id:132194970392300416

разница в конце в одну цифру
原因: