错误、漏洞、问题 - 页 308

 
aharata:
试着阅读帮助中的BarsCalculated,顺便说一下,它给出了正确的例子。

让我们试着用这个来做。谢谢你!
 
Im_hungry:

也就是说,只要CopyBuffer>0,我们就计算它,而新的参数(Close())

当位置关闭时出现。换句话说,我们需要通过While进行循环。结果是这样的。

我会这样说:"当CopyBuffer<0 时,我们重复调用这个函数"。

While (vhandle>0)一行似乎没有任何特殊的负载,因为在第一个CopyBuffer<0的情况下,它将返回(0);

我将朝这个方向工作。

if(!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
  {
   for(uchar u=0;u<100;u++)  //запускаем цикл с ограниченным количеством шагов
    {
     if(CopyBuffer(vhandle,0,0,50,Sp1Buffer) && CopyBuffer(vhandle,1,0,50,Sp2Buffer))
      {
       return(true);  //дождались копирования буферов - выходим
      }
     else
      {
       if(u==99) //т.е. выявляем последний шаг нашего цикла for, который не принёс ожидаемых результатов
         {
          Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
          return(0);
         }
       Sleep(50);  //засыпаем ненадолго (хотя я сам не сторонник использования Sleep в теле OnTick)
      }
    }
  }

一般来说,沿着这些路线的东西,由作者决定。正如正确指出的那样,一份参考指南不会有什么问题。

 
aharata:
试着读一下关于BarsCalculated的帮助,顺便说一下,那里给出了正确的例子。

谢谢你的介绍 - 有效,似乎没有问题(测试了1个月)。

以下是我的第一对工作代码

void OnTick()
{ 
   if (isNewBar()==true && proverkaHANDLA()==true)
     {
      if (!PositionSelect(Symbol1))
         {
          BSOpen();
         }
     }    
}
//+==================================================================+
bool proverkaHANDLA()
{
  ArraySetAsSeries(Sp1Buffer,true);
  ArraySetAsSeries(Sp2Buffer,true);
  vhandle=iCustom(NULL,0,"МТ5",Symbol1,100,Lots,1,Close());
  ResetLastError();
  int copied0=CopyBuffer(vhandle,0,0,50,Sp1Buffer);
  int copied1=CopyBuffer(vhandle,1,0,50,Sp2Buffer);
  if(copied0<=0 || copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(vhandle)>0)
         break;
         Sleep(50);
        }
      copied0=CopyBuffer(vhandle,0,0,50,Sp1Buffer);
      copied1=CopyBuffer(vhandle,1,0,50,Sp2Buffer);
      if(copied0<=0 || copied1<=0)
        {
         Print("Не удалось скопировать Буфера индюков :-)",GetLastError(),
         "copied0",copied0,"copied1=",copied1);
         return (false); 
        }
       Print("Удалось скопировать Буфера :-)copied0",copied0,"copied1=",copied1);
       return (true);
     }
   Print("Удалось скопировать Буфера. Sp1Buffer=",ArraySize(Sp1Buffer),
         "Sp2Buffer=",ArraySize(Sp2Buffer));
   return (true);
}
 
Yedelkin:

我会说:"只要CopyBuffer<0,就重复调用这个函数"。

While (vhandle>0)这一行似乎没有什么负载,因为在第一个CopyBuffer<0的情况下,它将返回(0)。

我将朝着这个方向努力。

基本上,类似这样的事情,由作者决定。正如正确地指出的那样,一本参考书也无妨。

这就更简单了,让我们看看这2种方法哪个更好、更快--这就是我们要采取的方法。

谢谢大家!让我们去测试。

 
开发人员,请注意应用程序#33601(有一个关于不同操作系统的杠杆作用的 "伟大功能")...
 
Interesting:
开发人员,请注意第33601号 请求(有一个关于不同操作系统的杠杆作用的 "伟大功能")...

也许你使用的是最初 从不同经纪公司安装的 终端?请在您的申请中添加详细信息。
 
Rosh:
也许你们使用的是最初 从不同经纪商那里安装的 终端?请在您的申请中添加详细信息。
澄清了终端和我最终需要得到什么。
 

给开发者的问题。

关于点差的一切都很清楚,它们被存储在条形图中,测试人员可以运行整个历史,考虑到变化的点差(如果历史是正常加载的),但掉期呢?

也就是说,如果经纪人/交易商改变掉期或佣金的费率会怎样?

我明白这种情况有点荒唐,但仍然。

如果我没有理解错的话,现在MT4中的测试器将接受掉期和佣金,最后....。

PS

再次澄清,现在有屏幕截图....

 
Interesting:

给开发者的问题。

关于点差的一切都很清楚,它们被存储在条形图中,测试人员可以运行整个历史,考虑到变化的点差(如果历史是正常加载的),但掉期呢?

也就是说,如果经纪人/交易商改变掉期或佣金的规模会发生什么?

掉期和佣金的历史不被存储,这些设置取自最后一次连接。
 
Rosh:
交换和佣金历史不被存储,这些设置取自最后一次连接。
我明白了,这和我想的差不多。让我们希望他们不要经常/根本不改变。