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

 
TYRBO:
通过比较价格解决的问题
在测试器中?在浮动点差 账户的真实市场中,盈亏平衡价格将在一个刻度后发生变化
 
Artyom Trishkin:

在这种情况下,我的观点是这样的。

  1. 我们需要尽可能多地获得每一个刻度的周期。
  2. 我们需要有一个包含市场订单和头寸数据的恒定数组和一个包含删除/关闭订单和头寸数据的数组。
  3. 如果我们把数组放在本地的一个函数中,反复调用它就需要再次填充它。我建议在一个新的刻度线上只填充一次--所以数组是全局的,否则在退出函数时我们会失去它。
  4. 为了在其中(在数组中)找到一些东西,我们需要一个填充的数组和将返回找到的数据的函数。在函数中,我们可以声明辅助数组以进行必要的计算。

出于这个原因,最好有全局数组--用于平仓和开仓的订单和头寸。在一个新的tick上,我们将必要数量的订单/位置 传递一次,用它们填充两个数组。然后我们在同一时间从他们那里获得所有必要的数据。请注意,不仅要计算最后的平仓/开仓订单/仓位及其所有数据,而且在部分平仓的情况下,还要搜索所有仓位的所有父、子刻度。因此,在任何时候我都可以看到哪个票据来自一个或另一个位置,如果它已经被部分关闭了不止一次--所有这些都已经在一个在计时器中运行的类中工作了。我有许多其他需要的数据,总周期数不多。数组的必要历史深度是为测试者设置的。

以此类推......。

对不起。还有一个补充(不是为了抵消,而是作为一个补充),我想补充的是,带有静态 的本地数组不会丢失。也就是说,如果条件允许,你可以不在全局范围内声明它们。

 
P./S.: 当然,我是根据自己的 "既得 "利益来完成的)))。因为我可以在允许的情况下应用局部静态
 
Vitaly Muzichenko:

我现在慢慢改写为5.我的意思是,价格可能变化得非常快,水平可能低于止损水平,这将导致错误。我的意思是,价格可能会变化得非常快,水平会低于允许的止损水平,这将导致错误。

我理解这个"SymbolInfoTick"的东西是需要用来获取当前价格的?

所以,为了在mql4中获得实际的Ask和Bid,无论如何都应该调用刷新。而事实证明,与调用SymbolInfoTick() 相比,负载不太可能改变。

但这里还有一个补充:我在下面的循环中写了SymbolInfoTick()来获得准确的价格

        do
         while(!SymbolInfoTick(_Symbol, mqlTick));

如果我们从第一次得到正常的价格,这个循环就不会增加执行时间。而且,如果有一些失败,重复也比得到同样的价格而不是现在的价格要好。

 
Alexey Viktorov:

所以,要在mql4中获得实际的Ask和Bid,无论如何你都要调用refresh。而事实证明,与调用SymbolInfoTick() 相比,负载不太可能改变。

但这里还有一个补充:为了无错误地获得实际价格,我把SymbolInfoTick()放入这个循环中

        do
         while(!SymbolInfoTick(_Symbol, mqlTick));

如果我们从第一次得到正常的价格,这个循环就不会增加执行时间。而且,如果有一些失败,重复也比得到同样的价格而不是现在的价格要好。

我明白了,我们应该把它放在哪里,是放在循环里面还是之前?
 
Vitaly Muzichenko:
我明白了,但我应该把它放在哪里,是在循环里面,还是在循环之前?
那么,在我们得到目前的价格之前,这是一个独立的周期。我们已经讨论过放在哪里了。如果有一个没有实际价格的埋伏,我们应该在订单评估的循环中设置它。
 
Alexey Viktorov:

所以,要在mql4中获得实际的Ask和Bid,无论如何你都要调用refresh。而事实证明,与调用SymbolInfoTick() 相比,负载不太可能改变。

但这里还有一个补充:为了无错误地获得实际价格,我把SymbolInfoTick()放入这个循环中

        do
         while(!SymbolInfoTick(_Symbol, mqlTick));

如果我们从第一次得到正常的价格,这个循环就不会增加执行时间。而且,如果有一些失败,重复也比得到同样的价格而不是现在的价格要好。

如果你根本没有得到它们呢?你如何减缓循环?
 
Artyom Trishkin:
如果它根本就没有收到呢?你如何减缓这个周期?

是的,从逻辑上讲,它可能是,例如,终端失去了连接--有很多原因,我一天有50次失去连接。

什么是获得最新价格的最佳方式,同时不那么耗费资源,注意--对于电网的拖网。

 
Vitaly Muzichenko:

是的,从逻辑上讲,它可能是,例如,终端失去了连接--有很多原因,我一天有50次失去连接。

有什么办法可以获得最新的价格,同时资源消耗较少,请记住--对于电网的拖网。

向后看10页,那里有一个很好的计划
 
trader781:
向后看10页,那里有一个相当好的原理图。
找不到,我也不记得这里有。
原因: