KimIV的有用功能 - 页 31

 
ShestkoFF писал (а)>>
好吧,我当然不会阻止它。如果是我,我会把这个错误传上去,然后决定如何处理它。

如果你在这时阻止该EA,可能会有该EA留下的未结头寸,这将是一场灾难。

你现在已经回答了你自己关于长时间停顿的问题。这样做是为了等待信号来开仓或设置一个订单。

谢谢你,瓦西里,再一次成功地把我引入了歧途。我几乎是匆匆忙忙地解决了这些代码...再次感谢你让我回到我的道路上 :-)

 
KimIV писал (а)>>

:-) 你现在已经回答了你自己关于长时间停顿的问题。这样做是为了等待开仓或设置订单的信号

谢谢你,瓦西里,再一次成功地把我引入了歧途。我几乎是匆匆忙忙地解决了这些代码...再次感谢你让我回到我的道路上 :-)

说实话,我不明白这种逻辑。
例如,我们下了一个0.000001手的订单。当然,服务员为此给了我们一巴掌。
我们没有改变地段(在函数之外),而是暂停。
由于这种中断,我们可能会失去设置订单的信号,但我们应该改变手数而不是等待。
这就是我不同意暂停的原因。我们应该简单地离开这个函数,向上传递错误代码,并在那里处理它。
如果我们按我的方式行事,我们可能不会错过一个有利可图的交易!而且我们甚至可能会有损失 :)

PS:我将带领你误入不真实的道路 :)

 
我认为应该立即调用 地段计算函数(而不是去顶层),只有在错误计数器溢出后才去顶层。
 
Prival писал (а)>>
我想,你需要一次性调用批量计算的函数(而不是去顶层),只有在错误计数器溢出后才去顶层。

是的,当然你需要立即调用这个函数,但如果真的发生了错误!!。
退出到顶部 我称一种情况,你必须退出函数SetOrder。
我认为大约是这样的


int ticket = SetOrder(.....);

如果(ticket > 0) {

// 一切正常

} else {

//纠正逻辑错误

}


int SetOrder(....) // 返回票据或错误号码,但只带负号。
{

int ticket = OrderSend(....)

如果(ticket < 0) {

// 纠正集合顺序错误

}

}


所以我认为我们需要区分逻辑错误和顺序设置错误。我希望我今天能给出一个实施的例子。
 
ShestkoFF писал (а)>>
说实话,我不明白这种逻辑。

我已经建立了手数计算功能,只有在资金不足的情况下才会给出一个错误的手数(零)。在其他情况下,该地段被规范化,并在最小和最大尺寸之间的范围内驱动。如果没有足够的钱,我们必须等待一些仓位的关闭。

ShestkoFF 写道(a)>>
如果你下了一个0.000001手的订单。我们的服务器肯定给了我们一个耳光。

我们为什么要这样做?为什么我们故意通过错误的地段尺寸?我们怎么能为这种行为辩护?

ShestkoFF 写道(a) >>。

我们应该简单地离开这个函数,向上传递错误代码,并在那里处理它。

它能给我们带来什么?我们会得到不同的地段面积吗?为什么我们没有马上得到合适的地段尺寸?请说明理由。让我们分析一下...
 

我只是认为你的函数是一个库函数,也就是通用的,因此你应该把所有的错误分成两类。

  • 应该在SetOrder函数中处理的错误(连接错误、重新报价......)。
  • 应该在SetOrder函数之外处理的错误(错误的手数、错误的止损......)。

Функцию расчёта размера лота я строю таким образом, что неверный лот (ноль) она выдаст только в случае не хватки денег. В остальных случаях лот нормализуется и загоняется в рамки между минимальным и максимальным размерами. Если денег не хватает, то надо ждать, когда закроется какая-нибудь позиция.

这是你的专家的逻辑,其他人可能有不同的逻辑。这就是为什么我会把错误的批次放在外部

错误检查块。

这就是我对这个案子的看法 :)正如我在上面写的,我希望今天能给出一个实施的例子。

 

我的时尚版本。



int ModeInt(int array[])
{
   int size = ArraySize(array);
   
   if (size == 0) 
   {
      Print("Invalid parameter in function ModeInt(int array[]). It should be at least one element.");
      return(0);
   }
   
   int buffer[];
   ArrayCopy(buffer, array); 
   ArraySort(buffer);
   
   int max = 0;
   int maxValue = 0;
   
   int startIndex = 0;
   int startValue = buffer[0];
   
   for (int i = 1; i < size; i++)
   {
      if (buffer[i] > startValue)
      {
         if (max < i - startIndex)
         {
            max = i - startIndex;
            maxValue = buffer[startIndex];
         }
         
         startIndex = i;
         startValue = buffer[i];
      }
   }
   
   if (max < size - startIndex)
   {
      max = size - startIndex;
      maxValue = buffer[startIndex];
   }
   
   return (maxValue);
}
 
double ModeDouble(double array[], double interval)
{
   int size = ArraySize(array);
   
   if (size == 0) 
   {
      Print("Invalid first parameter in function ModeDouble(double array[], double interval). It should be at least one element.");
      return(0);
   }
   
   if (interval <= 0) 
   {
      Print("Invalid second parameter in function ModeDouble(double array[], double interval). It should be > 0 .");
      return(0);
   }
   
   double buffer[];
   ArrayCopy(buffer, array); 
   ArraySort(buffer);
   
   int max = 0;
   double maxValue = 0;
   
   int startIndex = 0;
   double startValue = buffer[0];
   
   double sum = startValue;
   
   for (int i = 1; i < size; i++)
   {
      if (buffer[i] >= startValue + interval)
      {
         if (max < i - startIndex)
         {
            max = i - startIndex;
            maxValue = (sum)/max;
         }
         
         startIndex = i;
         startValue = buffer[i];
         sum = 0;
      }
      sum += buffer[i];
   }
   
   if (max < size - startIndex)
   {
      max = size - startIndex;
      maxValue = (sum)/max;
   }
 
   return (maxValue);
}
 
TheXpert писал (а)>>

我的版本的MOD。


亲爱的TheXpert,你的代码看起来非常紧凑。当然,这是个很好的补充。>> 谢谢你。

 
按照承诺,我将发布我的功能版本。
附上一个使用该功能的专家顾问。我使用了AI专家顾问作为基础。
我还没有时间按时间检查功能。换句话说,我认为应该在8分钟后再次检查信号。
增加了贸易服务器的错误生成,这将允许检查功能的操作细节和检测错误。
int errTest[] = {0, 128, 0, 142, 0, 143, 0, 4, 132};
errTest - 产生的错误序列,没有错误0。这是一个随机序列,在其中找不到任何陷阱。


我在等待一些批评意见 :)

附加的文件:
 
ShestkoFF писал (а)>>
按照承诺,我将发布我的功能版本。
所附文件包含使用该函数的EA。我使用了AI专家顾问作为基础。
我还没有足够的时间去检查这个功能是如何按时间工作的。也就是说,我认为应该在8分钟后再次检查信号。
增加了交易服务器的错误生成,这将允许彻底研究功能的运行和检测错误。
errTest - 产生的错误序列,没有错误0。这是一个随机序列,在其中找不到任何陷阱。


我在等待批评 :)

我并不关心功能,我可以说一件事:),我不会像以前那样原创,说:)--太过沉重了。

因此,专家顾问已经成为一个32KB的简洁明了的代码,在这里我不喜欢乱来。


有关于代码的问题。

1.如果你禁用了专家顾问,它将不会再工作,直到重新启动。为什么不让它等待一段相对较长的时间呢?

2.神经网络 -- 首先它从不输出平坦的信号。第二,如果它没有阈值,你怎么能指望它能优化一些东西呢? 错过了阈值,你就扼杀了它已经很低的效率的80%(虽然是线性)。



SZZH: 无意冒犯,我在这个线程中兼任批评家 :) 。