Ошибки, баги, вопросы - страница 2440

 

Такой результат

достигается следующим образом.

Отключаются все Агенты, кроме одного. И запускается полный перебор на 5750 вариантов. После чего включаются все остальные локальные Агенты.

Видимо, что распределились задания неравномерно. И общее время оптимизации будет выше, чем могло бы.

 

Билд 2025

Согласно справке тип возвращаемого значения у функции GlobalVariableDel() - bool

Но при нажатии Ctrl+Shift+Space:

И при сборке выдается предупреждение:


 
Не нахожу кнопку "Отправить на проверку" черновика статьи. Подскажите, пожалуйста.
 
fxsaber:

ЗЫ Без этого не знаю, как выкрутиться в подобных ситуациях

Может MD5 от ex5 файла?
Может внутри ex5 файла хранится, поищите с помощью hex редактора...

 
Yousufkhodja Sultonov:
Не нахожу кнопку "Отправить на проверку" черновика статьи. Подскажите, пожалуйста.
 
Artyom Trishkin:

Спасибо, Артем.

 
Sergey Dzyublik:

Может MD5 от ex5 файла?
Может внутри ex5 файла хранится, поищите с помощью hex редактора...

Так нужно через MQL5 получить какую-нибудь хэш-сумму самого себя.

 
 SSASultonov.mqh |
//|                                            Copyright 2018, IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict

double FactorialsTable[21]=
  {
   1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,87178291200,1307674368000,
   20922789888000,355687428096000,6402373705728000,121645100408832000,2432902008176640000
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CSSASultonov
  {
private:
   int               mcountSLAE;
   int               mdigits;
   double            Cx[],Cx2[],V1x[],C2xy[],C2xx[],V2xx[],C3xxy[],C3xxx[],V3xxx[];
   int               mSumN;
   double            calcV(int index);
   double            calcxx(int index1,int index2,int shift);
   double            Factorial(const int n);
public:
                     CSSASultonov(int countSLAE,int digits);
                    ~CSSASultonov();
   void              SSA(int shift);
   double            a[5];
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CSSASultonov::CSSASultonov(int countSLAE,int digits)
  {
   mcountSLAE=countSLAE;
   mdigits=digits;
   ArrayResize(Cx,mcountSLAE);
   ArrayResize(Cx2,mcountSLAE);
   ArrayResize(V1x,mcountSLAE);
   ArrayResize(C2xy,mcountSLAE);
   ArrayResize(V2xx,mcountSLAE-2);
   ArrayResize(C3xxy,mcountSLAE-2);
   ArrayResize(C3xxx,mcountSLAE-2);
   ArrayResize(V3xxx,mcountSLAE-3);
   mSumN=0;
   for(int i=1; i<=mcountSLAE; i++) mSumN+=i;
   int n=mcountSLAE-1;
   int size_cxx=(int)(Factorial(n)/((Factorial(n-2))*2));
   ArrayResize(C2xx,size_cxx);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CSSASultonov::~CSSASultonov()
  {
  }
//+------------------------------------------------------------------+
double CSSASultonov::calcxx(int index1,int index2,int shift)
  {
   double result=0.0;
   for(int i=0;i<mcountSLAE; i++)
     {
      result+=NormalizeDouble(Open[index1+i+shift],mdigits)*NormalizeDouble(Open[i+shift+index2],mdigits);
     }
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CSSASultonov::calcV(int index)
  {
   return(NormalizeDouble((-0.5+sqrt(0.25+2.0 *mSumN))*Cx2[index]-Cx[index]*Cx[index],8));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CSSASultonov::SSA(int shift)
  {
   int i,j;
   double open;
   ZeroMemory(a);
   ZeroMemory(Cx);
   ZeroMemory(Cx2);
   ZeroMemory(V1x);
   ZeroMemory(C2xy);
   ZeroMemory(C2xx);
   ZeroMemory(V2xx);
   ZeroMemory(C3xxy);
   ZeroMemory(C3xxx);
   ZeroMemory(V3xxx);
// формулы   27 - 35 суммы столбцов:
// AI = Cx[0]  AJ = Cx[1] AK = Cx[2] AL = Cx[3] AM = Cx[4]
   for(i=0;i<mcountSLAE; i++)
     {
      for(j=0;j<mcountSLAE; j++)
        {
         open=NormalizeDouble(Open[j+i+shift],mdigits);
         Cx[i]+=open;
         Cx2[i]+=open*open;
        }
      //AB - AE        
      //V(x1)   V(x2)   V(x3)   V(x4)
      V1x[i]=calcV(i);
     }
// формулы   17 - 26
   int countcxx=0;
   for(i=0;i<mcountSLAE; i++)
     {
// AF- AI
//C(x1y)        C(x2y)  C(x3y)  C(x4y)    
      C2xy[i]=NormalizeDouble((-0.5+sqrt(0.25+2.0 *mSumN))*calcxx(i,mcountSLAE-1,shift)-Cx[i]*Cx[mcountSLAE-1],8);
      for(j=i;j<mcountSLAE-2; j++)
        {
// AJ - AO       
//C(x1X2)       C(x1x3) C(x1x4) C(x2x3)=20      C(x2x4)=21      C(x3x4)=22         
         C2xx[countcxx]=NormalizeDouble((-0.5+sqrt(0.25+2.0 *mSumN))*calcxx(i,j+1,shift)-Cx[i]*Cx[j+1],8);
         countcxx++; // 0 = x1x2 (17) , 1 = x1x3 (18) , 2 = x1x4 (19) , 3= x2x3 (20) , 4 = x2x4 (21) , 5 = x3x4 (22)
        }
     }
// формулы   14,15,16
// AV - AX
// V(x1x2)=V2=14        V(x1x3)=15      V(x1x4)=16
   for(i=0;i<ArraySize(V2xx); i++) V2xx[i]=V1x[0]*V1x[i+1]-C2xx[i]*C2xx[i];
// формулы   11,12,13
// AS - AU
//C(x1x2y)=13   C(x1x3y)=12     C(x1x4y)=11
   for(i=0;i<ArraySize(C3xxy); i++) C3xxy[ArraySize(C3xxy)-i-1]=V1x[0]*C2xy[i+1]-C2xx[i]*C2xy[0];
// формулы   6,7,8
// AP - AR
// C(x1x2x3)=8  C(x1x2x4)=7     C(x1x3x4)=6
   C3xxx[0] = V1x[0]*C2xx[5] - C2xx[1]*C2xx[2];
   C3xxx[1] = V1x[0]*C2xx[4] - C2xx[0]*C2xx[2];
   C3xxx[2] = V1x[0]*C2xx[3] - C2xx[0]*C2xx[1];
// формулы   9,10
// AY - AZ
//V(x1x2x3)=V3=10       V(x1x2x4)=9
   V3xxx[0] = V2xx[0]*V2xx[2] - C3xxx[1]*C3xxx[1];
   V3xxx[1] = V2xx[0]*V2xx[1] - C3xxx[2]*C3xxx[2];
// формулы   3,4,5

// BC
// C(x1x2x4y)=3
   double Cx1x2x4y   = V2xx[0]*C3xxy[0] - C3xxy[2]*C3xxx[1];
// BA
// C(x1x2x3x4)=4
   double Cx1x2x3x4  = V2xx[0]*C3xxx[0] - C3xxx[2]*C3xxx[1];
// BB
// C(x1x2x3y)=C3=5
   double Cx1x2x3y   = V2xx[0]*C3xxy[1] - C3xxy[2]*C3xxx[2];
// формулы   1,2
// BE
// V(x1x2x3x4)=V4=2
   double Vx1x2x3x4 = V3xxx[1]*V3xxx[0] - Cx1x2x3x4 * Cx1x2x3x4;
// BD
// C(x1x2x3x4y)=C4=1
   double Cx1x2x3x4y= V3xxx[1]*Cx1x2x4y - Cx1x2x3x4 * Cx1x2x3y;
// расчет а   
   a[4] = Vx1x2x3x4!=0.0 ? Cx1x2x3x4y / Vx1x2x3x4 : 0.0;
   a[3] = V3xxx[1]!=0.0  ? (Cx1x2x3y - a[4]*Cx1x2x3x4) / V3xxx[1] : 0.0;
  
   a[2] = V2xx[0]!=0.0   ? (C3xxy[2] - a[3]*C3xxx[2] - a[4]*C3xxx[1])/V2xx[0] : 0.0;
   a[1] = V1x[0]!=0.0    ? (C2xy[0] - a[2]*C2xx[0] - a[3]*C2xx[1] - a[4]*C2xx[2])/V1x[0] : 0.0;
   a[0] = (Cx[4] - a[1]*Cx[0] - a[2]*Cx[1] - a[3]*Cx[2] - a[4]*Cx[3])/mcountSLAE;
/*
   Print("a[4] = ",a[4]);
   Print("a[3] = ",a[3]);
   Print("a[2] = ",a[2]);
   Print("a[1] = ",a[1]);
   Print("a[0] = ",a[0]);
*/
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CSSASultonov::Factorial(const int n)
  {
   if(n<0) return(0);
   if(n<=20) return(FactorialsTable[n]);
   else
     {
      double val=FactorialsTable[20];
      for(int i=21; i<=n; i++) val*=i;
      return(val);
     }
  }
//+------------------------------------------------------------------+

Как добавить код индикатора в статью? Так подойдет?
 
Помогите, пожалуйста, как грамотно и правильно вставить код индикатора в статью, который приведен в аттаче.
Файлы:
MQL4.zip  122 kb
 
fxsaber:

Так нужно через MQL5 получить какую-нибудь хэш-сумму самого себя.

Что бы решить задачу, вначале нужно понимать суть задачи, то есть найти, что это за хеш.
Для этого нужно иметь opt файл от конкретного ex5, затем распарсить opt файл согласно приведенным структурам.
Проверив адекватность полей после поля хешей наконец-то можно получить хеш.

Имея хеш и имея ex5 файл можно искать откуда он взялся, первых два варианта возможного происхождения хеша мной и были предложены:

Может MD5 от ex5 файла?
Может внутри ex5 файла хранится, поищите с помощью hex редактора...