[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 404

 
hoz:
1.那么,如果新的数据到来,这就是我们需要的,不是吗?
2.嗯,是的,我们需要从第0条开始的数据,当然了。MarketInfo()从零条上提取数据,仅此而已。那么为什么要把它与其他东西进行比较呢?

3.即使历史上有漏洞,也不会影响目前的计算。在洞口存在的时候,它就会产生影响。也就是说,如果我们获得了当前的Ask,我们并不真正关心几个柱子前的价格(我的意思不是正式的,而是关于某个市场变量的当前时刻,因为函数RefreshRates()将对第0个柱子上的当前时刻进行处理!)。

当然,我挖得很深,但我想了解如何做得更好。

4.你,瓦迪姆,告诉我,我在上面写的函数是不正确的。

double fGet_TradePrice(int fi_price,       // Цена: 0 - Bid; 1 - Ask
                       string fs_symbol)   // валютная пара
{
 double ld_price = 0.0;
   
switch (fi_price)
 {
  case 0:
   {
    if (fs_symbol == Symbol())
     {
      RefreshRates(); // Зачем этот тормоз без обработки возвращаемого значения?
      ld_price = Bid;
     }
    else ld_price = MarketInfo(fs_symbol, MODE_BID); // <-- Этого достаточно.
   } 
  case 1:
   {
    if (fs_symbol == Symbol())
     {
      RefreshRates(); // Зачем этот тормоз без обработки возвращаемого значения?
      ld_price = Ask;
     }
    else ld_price = MarketInfo(fs_symbol, MODE_ASK); // <-- Этого достаточно.
   }
 }
if (ld_price != 0) return(ld_price); // Некорректно! Что функция будет возвращать, если цена равна нулю?
}

在你看来,它有什么问题?

1.如果没有数据,但我们对它一无所知?它返回FALSE。应该如何评价?没有数据或出现错误,还是还有数据?
2.你必须调和以解决第一项的问题。
3.你不考虑这个过程的动态。打开电脑,终端。所有的数据似乎都已经进来了。所有的东西都汇聚到了零条上。信号被发现。交易已经完成。结果发现不是所有的数据都进来了。5分钟后,我们得到了数字为1,2,3,4,5的缺失条。信号消失了。该怎么做?

4.我把它标成了红色。目前还没有处理切换中可能出现的选择错误标识符的问题。我在上面写了应该如何做。

在不等待结果的情况下调用RefreshRates()是没有用的。它可能会在很长一段时间内失效。

 
大家好。我有这样一个问题。我在几个账户上进行交易(两个在一个经纪公司,一个在另一个),所以我使用Best复印机,它非常方便。它被安装在一个账户(出口器)的任何图表上,并被复制到其他账户(进口器),该EA也被安装在同一图表上(如果你把它,在进口器中,放在几个图表上,它将打开尽可能多的订单)。有一次,当我想用它在一家经纪公司检查工作,并设置了一个模拟账户),在一个美妙的时刻,它被自发地设置在几个图表上,当然它打开了许多订单。后来我也没太注意,以为是这个经纪公司终端的故障。然后我在上面提到的账户上交易了很长时间,没有发生类似情况。但昨天就在新闻发布 期间,这种情况再次发生在一个账户上(为另一家经纪公司,不是安装了出口商的账户)。 在6个图表上,顾问被自动放置,最有趣的是,在一个符号上有16个订单被打开。为什么会发生这种情况,原因是什么?这是专家顾问本身的缺点还是其他原因?有什么办法可以解决这个问题吗?提前感谢。
 
// Зачем этот тормоз без обработки возвращаемого значения?

谁会问这样的问题?
 
hoz:

在你看来,它有什么问题呢?


这不是错的,它只是泥沙俱下。

结束了。

 if (ld_price != 0)
return (ld_price); 

如果ld_price = 0,该函数将自行返回0。因此,不需要检查。

这个是一个故障。

 if (fs_symbol == Symbol())
         {
             RefreshRates();
             ld_price = Bid;
         }
         else
             ld_price = MarketInfo(fs_symbol, MODE_BID);

也没有必要。你可以在所有情况下使用MraketInfo()。

最后,该函数变成了一个纯粹的MarketInfo()函数(如果你删除所有不必要的东西)。

 

原则上,理论上,这些都是正确的地方。

RefreshRates();
ld_price = Bid;
RefreshRates();
ld_price = Ask;

我们不关心RefreshRates()返回什么,重要的是Ask和Bid变量有终端已知的最新值。

 

你好!

同样的EA,测试者的结果不同,原因何在?

测试的周期、货币对和时间框架都是一样的,但今天获得的结果与之前的非常不同,EA已经停止开立多头。

到底是终端报价的问题还是周末的问题,我不知道。也许有见识的人可以让我开开眼界,看看这明显的原因?

 
skyjet:

你好!

同样的EA,测试者的结果不同,原因何在?

测试的周期、货币对和时间框架都是一样的,但今天获得的结果与之前的非常不同,EA已经停止开立多头。

到底是终端报价的问题还是周末的问题,我不知道。也许有见识的人可以让我开开眼界,看看这明显的原因?


即使是连续做了两次测试,也会有不同的结果,而且非常明显。经纪人改变点差,用不同的点差进行测试。一个点的变化就足够了。

如果很久以前有过一次测试,也许设置已经松动了。

 
Zhunko:

1.如果没有数据,同时又有这些数据,但我们对其一无所知?它返回FALSE。这应该如何解释呢?是没有数据或有错误,还是有数据?

我不理解你。让我们按顺序进行...我们调用RefreshRates(),没有数据进来...。但有数据。我们这里的情况是一个混乱的局面。如果数据没有来,就不会有数据,或者数据没有被更新,因为市场变量没有变化......。只有两个选择。

如果它在调用RefreshRates() 后返回TRU,那么数据已经被更新。如果它返回FELS,那么要么他们没有更新,因为有一个错误,要么他们没有更新,因为数据是新鲜的,不需要更新。

因此,我的理解是,这可以看作是:RefreshRates() 检查数据,如果数据不是新的,它就不更新那些不是新的,即没有变化的数据,如果是新的,它就更新。所以你只能依靠RefreshRates() 返回的标志。你有什么其他选择吗?

竺可桢

2.你需要通过对账来解决第一项的问题。

你说。

我从服务器(MarketInfo())上调和了零条的数据。等待他们的是同样的结果。

MarketInfo()正在从零条拉出,因为它是...你说的上述内容是什么意思?

竺可桢

3.你不考虑这个过程的动态。开启了电脑,终端。所有的数据似乎都已经进来了。一切都汇聚到了零点吧。信号被发现。交易已经完成。结果发现不是所有的数据都进来了。五分钟后,我们得到了数字为1,2,3,4,5的缺失条。信号消失了。该怎么做?

我决定再次更新它。但如果我们调用RefreshRates(),它的数据更新速度很慢怎么办?也就是说,有些计算将用一些市场数据进行,有些用其他数据进行......然后呢?

竺可桢

4.红色标记。另外,也没有处理开关中选择错误标识符的可能错误。我在上面写了应该如何处理。

在不等待结果的情况下调用RefreshRates()是没有用的。它可能会在很长一段时间内失效。

嗯,如果我们等待它,报价可能会改变...这里有一条双向的路吗?

RefreshRates(); // 为什么这个刹车没有返回值处理?

你提了好几次,但还是没有具体内容。我的意思是,就像我看到这个函数通常被使用一样,它只是在使用市场数据变量的代码之前,仅此而已。他们并没有真正考虑过这个问题。但我想了想,决定想办法把它做好。要确定这样那样的方法确实是正确的,在所有正常条件下都能发挥作用。

那么,瓦迪姆,你的这种表达是什么意思。

"

为什么不处理返回值就这样刹车?"

如何处理它们?我在上面写了我的逻辑,但没有得到答案。我对它的描述相当准确,没有任何变种。

 
Integer:


这不是错的,它只是泥沙俱下。

结束了。

if (ld_price != 0)
    return (ld_price); 

如果ld_price = 0,该函数将自行返回0。因此,不需要检查。

我为什么要这样做?你只需要添加else,这样函数就会返回一些其他的值,这意味着 "没有价格"。似乎符合逻辑。当我抛出这个函数时,我更多考虑的是之前的逻辑,然后我没有注意到它的结局。而且我不明白为什么0函数本身会返回0...
整数


这就是细目。

if (fs_symbol == Symbol())
{
    RefreshRates();
    ld_price = Bid;
}
else
    ld_price = MarketInfo(fs_symbol, MODE_BID);

这也是没有必要的。你可以在所有情况下使用MraketInfo()。

最后,该函数变成了一个纯粹的MarketInfo()函数(如果你删除所有不必要的东西)。


如果我们总是可以使用MarketInfo(fs_symbol, MODE_ASK),那么为什么还要问呢(如果我们具体讨论的是购买价格)?毕竟,如果你这样看,通过参考《阿斯》,你就不能确定它在这一时刻的准确性?
 
Integer:

RefreshRates()函数返回什么并不重要,重要的是Ask和Bid变量具有终端已知的最新值。


实际上,就我的理解,我们需要别的东西。我们需要最后的Ask和Bid服务器,而不是本地终端的。对吗?

这就是为什么我在这里开始讨论,一劳永逸地了解如何更有逻辑地、正确地组织它。因为在理论上这是正确的,但在实践中...