오류, 버그, 질문 - 페이지 2441

 
Sergey Dzyublik :

ex5 파일의 MD5일까요?
아마도 ex5 파일이 내부에 저장되어있을 것입니다. 16 진수 편집기로보십시오 ...

따라서 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 파일이 있으면 어디에서 왔는지 검색할 수 있습니다. 해시의 가능한 출처에 대한 처음 두 가지 옵션이 제가 제안했습니다.

ex5 파일의 MD5일까요?
아마도 ex5 파일이 내부에 저장되어있을 것입니다. 16 진수 편집기로보십시오 ...

 
포럼 사용자 여러분, 출판을 위해 기사를 준비하는 프리랜서 서비스가 있습니까? 나 자신은 실행의 모든 규칙과 미묘함을 잊어 버렸습니다. 그렇지 않은 경우 누가 작업 지불을 위해 "시스템 표시기"기사의 텍스트를 준비할 것입니까? 금지되지 않은 경우 "PM"의 통신.
 
Yousufkhodja Sultonov :
포럼 사용자 여러분, 출판을 위해 기사를 준비하는 프리랜서 서비스가 있습니까? 나 자신은 실행의 모든 규칙과 미묘함을 잊어 버렸습니다. 그렇지 않은 경우 누가 작업 지불을 위해 "시스템 표시기"기사의 텍스트를 준비할 것입니까? 금지되지 않은 경우 "PM"의 통신.
개인 메시지로 작업을 처분하는 것은 금지되어 있습니다. 프리랜서의 비표준 작업에는 "교육" 범주가 있습니다.
 
Vladimir Karputov :
개인 메시지로 작업을 처분하는 것은 금지되어 있습니다. 프리랜서의 비표준 작업에는 "교육" 범주가 있습니다.

알려주셔서 감사합니다. 이 카테고리를 사용하겠습니다.

 
Sergey Dzyublik :

문제를 해결하려면 먼저 문제의 본질, 즉 어떤 해시인지 파악해야 합니다.

이런 고문이 있다

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


패스하면 같은 이름의 파일이 작성됩니다. 맞습니다.


그런 다음 123 대신 숫자 456을 작성하여 다시 컴파일합니다.

그 후 각 패스는 해당 파일과 동일한 파일을 작성하지만 이름은 다릅니다 .


이것은 어떻게든 구현해야 하는 기능입니다. 저것들. EX5가 변경된 경우 생성하는 파일 이름도 변경됩니다.


추신: __DATETIME__ 매크로 사용은 적합하지 않습니다.

 
fxsaber :

이것은 어떻게든 구현해야 하는 기능입니다. 저것들. EX5가 변경된 경우 생성하는 파일 이름도 변경됩니다.

그리고 .ex5 플러그인 라이브러리에 넣고 다시 컴파일하면?

 
Igor Makanu :

그리고 .ex5 플러그인 라이브러리에 넣고 다시 컴파일하면?

무엇이 바뀔까요?