错误、漏洞、问题 - 页 2441

 
Sergey Dzyublik:

也许MD5来自ex5文件?
也许在ex5文件中存储,用十六进制编辑器搜索...

所以需要通过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得到自己的某种哈希和。

要解决这个问题,首先你需要了解这个问题,即找到它是什么样的哈希。
要做到这一点,我们需要有一个来自某个ex5的opt文件,然后根据给定的结构解压opt文件。
在检查了哈希字段之后的字段是否充分之后,你终于可以得到一个哈希值。

有了哈希值和ex5文件,就可以搜索它的来源,哈希值可能来源的前两种变体已经被我提出。

也许MD5是来自ex5文件?
也许储存在ex5文件中,用十六进制编辑器搜索...

 
尊敬的论坛成员,是否有准备发表文章的自由职业者服务?我自己已经忘记了所有的规则和执行的微妙之处。如果没有,谁将承诺有偿编写 "系统指标 "一文的文本。如果不禁止的话,也要私下通信。
 
Yousufkhodja Sultonov:
尊敬的论坛成员,是否有准备发表文章的自由职业者服务?我自己已经忘记了所有的规则和执行的微妙之处。如果没有,谁将承诺有偿编写 "系统指标 "一文的文本。如果不禁止的话,也要私下通信。
严禁将任何工作带到私人信息中。对于自由职业者的各种零星工作,有一个类别叫做 "培训"。
 
Vladimir Karputov:
严禁将任何工作带入私人信息。自由职业者有一个培训类别,用于各种零星工作

谢谢你的提醒,我将使用这个类别。

 
Sergey Dzyublik:

要解决这个问题,你首先需要了解这个问题,即找出它是什么样的哈希。

有一个这样的EA

void OnDeinit( const int )
{
  int Array[] = {123};
  
  FileSave((string)MQLInfoInteger(MQL_PROGRAM_HASH), Array);
}


当我进行传递时,它写下了一个同名的文件。这是正确的。


然后我重新编译,写下数字456而不是123。

之后,每一次传递都会写入相应的一个和相同的文件,但名称不同


这就是我们需要以某种方式实现的功能。也就是说,如果EX5被改变,它所创建的文件名也会改变。


使用__DATETIME__宏是不合适的。

 
fxsaber:

这是一种需要以某种方式实现的功能。也就是说,如果EX5被改变,它所创建的文件名也会改变。

如果你把它放在.ex5库中并重新编译呢?

 
Igor Makanu:

如果你把.ex5库放在一个插件库中并重新编译,会怎么样?

那会有什么不同呢?

原因: