KimIV的有用功能 - 页 30

 

如果你有兴趣,可以看看我在时尚方面都做了些什么。我去花园浸泡土豆...我晚上会在那里...

ZS.我已经得出了一个数列中出现次数最多的数值。

附加的文件:
 
KimIV писал (а)>>

如果你有兴趣,可以看看我在时尚方面都做了些什么。我去花园浸泡土豆...我晚上会在那里...

ZS.我已经推断出一个数列中出现次数最多的数值。

当然,很有意思,谢谢你!我们将进行测试。

 
KimIV писал (а)>>

如果你有兴趣,可以看看我在时尚方面都做了些什么。我去花园浸泡土豆...我晚上会在那里...

SZY.我已经推断出了在数字系列中出现次数最多的数值。

我还建议你添加类似于误差范围(或命中间隔)的东西来计算真实数字的模式,你可以调整它,从而调整采样的准确性。

2 伊达尔戈

如果你正在做统计分析(这正是 目前感兴趣的),你愿意分享你对其使用的想法吗?请随意创建一个单独的主题。我很乐意支持这个话题。


 
sergeev писал (а)>>
我还建议引入计算实数模式的东西,如误差(或另一个打击间隔),它可以调整,从而调整采样的准确性。

公式、图画、如何做和做什么的解释......。:-)我希望你明白,有几种方法可以做到你所建议的。描述一下你的变体。

而且第一次有了一个参数d--数值的准确性,即小数点后的数字数。

 

是的,d 值的准确性是一个选项,但在这种情况下,我们有一个在10^(-d)的区间上验证的数字。


// переменная exact определяет процент отклонения 
// элемента массива от требуемого числа e
// например для 40% exact=1.40; для 0% exact=1.0
int ArraySearchDouble(double& m[][], double e, double exact) 
{
    for (int i=0; i<ArrayRange(m, 0); i++) 
        if (m[i][1]<=e*exact && m[i][1]>=e/exact ) return(i);
    return(-1);
}
 
sergeev писал (а)>>

是的,d 值的准确性是一个选项,但在这种情况下,我们有一个在区间10^(-d)上验证的数字。


对于浮点数,最好使用硬编码的差值。

f1 + df > f2 > f1 - df ==> f1 == f2。或者使用规范化。

你的代码在处理接近零的数字以及所有负数时肯定有问题。

修改代码。

 

是的,我有点忘了底片的事,我当时很着急。

// переменная exact определяет процент отклонения 
// элемента массива от требуемого числа e
// например для 40% exact=1.40; для 0% exact=1.0
int ArraySearchDouble(double& m[][], double e, double exact) 
{
    for (int i=0; i<ArrayRange(m, 0); i++) 
        if (MathAbs(m[i][1])<=MathAbs(e)*exact && MathAbs(m[i][1])>=MathAbs(e)/exact ) return(i);
    return(-1);
}



// переменная dExact определяет величину отклонения
// значения элемента массива от требуемого числа e
// например dExact=0.055
int ArraySearchDouble2(double& m[][], double e, double dExact) 
{
    for (int i=0; i<ArrayRange(m, 0); i++) 
        if (MathAbs(m[i][1])<=MathAbs(e)+dExact && MathAbs(m[i][1])>=MathAbs(e)-dExact) return(i);
    return(-1);
}
 
你好,伊戈尔。我很高兴能关注该支部的发展。我决定详细研究一下你的订单设置功能,或者更准确地说,它的块
错误处理:
......
      err=GetLastError();
      if (err==128 || err==142 || err==143) {
        Sleep(1000*66);
        if (ExistOrders(sy, op, mn, ot)) {
          if (UseSound) PlaySound(NameFileSound); break;
        }
        Print("Error(",err,") set order: ",ErrorDescription(err),", try ",it);
        continue;
      }
      mp=MarketInfo(sy, MODE_POINT);
      pa=MarketInfo(sy, MODE_ASK);
      pb=MarketInfo(sy, MODE_BID);
      // Неправильные стопы
      if (err==130) {
        switch (op) {
          case OP_BUYLIMIT:
            if (pp>pa-msl*mp) pp=pa-msl*mp;
            if (sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
            if (tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
            break;
          case OP_BUYSTOP:
            if (pp<pa+(msl+1)*mp) pp=pa+(msl+1)*mp;
            if (sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
            if (tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
            break;
          case OP_SELLLIMIT:
            if (pp<pb+msl*mp) pp=pb+msl*mp;
            if (sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
            if (tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
            break;
          case OP_SELLSTOP:
            if (pp>pb-msl*mp) pp=pb-msl*mp;
            if (sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
            if (tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
            break;
        }
        Print("SetOrder(): Скорректированы ценовые уровни");
      }
      Print("Error(",err,") set order: ",ErrorDescription(err),", try ",it);
      Print("Ask=",pa,"  Bid=",pb,"  sy=",sy,"  ll=",ll,"  op=",GetNameOP(op),
            "  pp=",pp,"  sl=",sl,"  tp=",tp,"  mn=",mn);
      if (pa==0 && pb==0) Message("SetOrder(): Проверьте в обзоре рынка наличие символа "+sy);
      // Блокировка работы советника
      if (err==2 || err==64 || err==65 || err==133) {
        gbDisabled=True; break;
      }
      // Длительная пауза
      if (err==4 || err==131 || err==132) {
        Sleep(1000*300); break;
      }
      // Слишком частые запросы (8) или слишком много запросов (141)
      if (err==8 || err==141) Sleep(1000*100);
      if (err==139 || err==140 || err==148) break;
      // Ожидание освобождения подсистемы торговли
      if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
      // Обнуление даты истечения
      if (err==147) {
        ex=0; continue;
      }
      if (err!=135 && err!=138) Sleep(1000*7.7);
    }
  }
}

我有这样一个问题。

为什么在处理错误131(ERR_INVALID_TRADE_VOLUME: Incorrect volume)时要停顿很久。

这是一个错误,还是我不明白的地方。

 
ShestkoFF писал (а)>>
你好,伊戈尔。我一直在关注这篇文章,非常高兴。我决定详细检查你的下单功能,或者更准确地说,它的错误块。
错误处理。

我有这样一个问题。

为什么在处理错误131(ERR_INVALID_TRADE_VOLUME: Incorrect volume)时要停顿很久。

这是一个错误还是我错过了什么?

你好,瓦西里!你说得太对了!这是我的错误,因为我心不在焉。谢谢你给我指出来。错误131的处理方式应与错误2、64、65和133相同,即EA应被禁用。

 
嗯,我当然不会阻止它。我会把这个错误送到上面去,在那里决定如何处理它。

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