/*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ Äëÿ îïåðàöèé òðàíñïîíèðîâàíèÿ, óìíîæåíèÿ,óäàëåíèÿ ñòðîêè èëè ñòîëáöà ìàòðèöû ìîãóò áûòü ïðÿìîóãîëüíûìè, ïîýòîìó èñïîëüçóåòñÿ äâà ïàðàìåòðà, äëèííà ñòðîêè è âûñîòà ñòîëáöà. Îñòàëüíûå ôóíêöèè ðàáîòàþò ñ êâàäðàòíûìè ìàòðèöàìè, è èñïîëüçóþò îäèí ïàðàìåòð äëèííà ñòðîêè. void transpose() -îïåðàöèÿ ÒÐÀÍÑÏÎÍÈÐÎÂÀÍÈß void multiplying() -îïåðàöèÿ ÓÌÍÎÆÅÍÈß void inverse() -îïåðàöèÿ ÎÁÐÀÙÅÍÈß void pull_line() -çàäàííóþ h ÓÄÀËßÅÌ ÑÒÐÎÊÓ void pull_column() -çàäàííûé v ÓÄÀËßÅÌ ÑÒÎËÁÅÖ double minor_AD() -âû÷èñëåíèå ÌÈÍÎÐÀ(Àëãåáðàè÷åñêîå Äîïîëíåíèå) double det() -âû÷èñëåíèå ÎÏÐÅÄÅËÈÒÅËß double ox() -âû÷èñëåíèå 1/X /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ //+------------------------------------------------------------------+ //| Matrix_Solve_lib.mq4 | //| Urain | //+------------------------------------------------------------------+ #property copyright "Urain" #property link "" #property library //===================================================================================================== //ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ //===================================================================================================== //VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_VOID_ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void transpose -îïåðàöèÿ ÒÐÀÍÑÏÎÍÈÐÎÂÀÍÈß a - ìàòðèöà n - äëèííà ñòðîêè m - äëèííà ïòîëáöà ðåçóëüòàò â òîìæå ìàññèâå /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void transpose( double& a[], int n, int m) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int i,j,s=0; int nm=n*m; double b[];ArrayResize(b,nm); for(j=0;j<n;j++)//i-ñòîëáöè j-ñòðîêè {for(i=0;i<m;i++) {b[s]=a[i*n+j]; s++; } } for(i=0;i<s;i++)a[i]=b[i]; return; }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void multiplying -îïåðàöèÿ ÓÌÍÎÆÅÍÈß a - ìàòðèöà q q n n b - ìàòðèöà m m q q q - äëèííà ñòðîêè a[qxn] è ñòîëáöà b[mxq] n - äëèííà ñòîëáöà a[] m - äëèííà ñòðîêè b[] ðåçóëüòàò â ìàññèâå a[] /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void multiplying( double& a[], double& b[], int n, int q, int m) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int i,j,k,s=0; int qn=q*n, mq=m*q, nm=n*m; double c[];ArrayResize(c,nm); transpose( b, m, q); for(j=0;j<n;j++) {for(k=0;k<m;k++) {double temp=0.0; for(i=0;i<q;i++)temp+=a[j*q+i]*b[k*q+i]; c[s]=temp;s++; } } ArrayResize(a,nm); for(i=0;i<nm;i++)a[i]=c[i]; return; }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void inverse -îïåðàöèÿ ÎÁÐÀÙÅÍÈß a - ìàòðèöà n - äëèííà ñòðîêè,ñòîëáöà ðåçóëüòàò â ìàññèâå a[] /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void inverse( double& a[], int n) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int i,j,s=0; int N=n,NN=n*n; double AD =0.0; double b[];ArrayResize(b,NN);for(i=0;i<NN;i++)b[i]=a[i]; double Det=det( b, N); Det=ox( Det); for(i=0;i<N;i++) {for(j=0;j<N;j++) {AD = minor_AD( b, N, i, j, 1); a[s]= AD*Det; s++; } } transpose( a, N, N); return; }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void pull_line - òÿíóòü çàäàííóþ h ñòðîêó ÓÄÀËßÅÌ ÑÒÐÎÊÓ a - ìàòðèöà n - äëèííà ñòðîêè m - äëèííà còîëáöà ðåçóëüòàò â ìàññèâå a[] /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void pull_line( double& a[], int h, int n, int m) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int i,j,s=0; int nm=n*(m-1);//i-ñòîëáöè j-ñòðîêè double b[];ArrayResize(b,nm); for(i=0;i<m;i++) {for(j=0;j<n;j++) {if(i!=h) {b[s]=a[i*n+j]; s++; } } } ArrayResize(a,nm); for(i=0;i<nm;i++)a[i]=b[i]; return; }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void pull_column - òÿíóòü çàäàííóþ h ñòîëáåö ÓÄÀËßÅÌ ÑÒÎËÁÅÖ a - ìàòðèöà n - äëèííà ñòðîêè m - äëèííà còîëáöà ðåçóëüòàò â ìàññèâå a[] /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ void pull_column( double& a[], int v, int n, int m) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int i,j,s=0; int nm=(n-1)*m;//i-ñòîëáöè j-ñòðîêè double b[];ArrayResize(b,nm); for(i=0;i<m;i++) {for(j=0;j<n;j++) {if(j!=v) {b[s]=a[i*n+j]; s++; } } } ArrayResize(a,nm); for(i=0;i<nm;i++)a[i]=b[i]; return; }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ // DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__DOUBLE__ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ double minor_AD - âû÷èñëåíèå ÌÈÍÎÐÀ åñëè fl=true òî âû÷èñëÿåòñÿ Àëãåáðàè÷åñêîå Äîïîëíåíèå a - ìàòðèöà I - íîìåð ñòðîêè J - íîìåð còîëáöà ðåçóëüòàò â Minor /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ double minor_AD( double a[], int n, int I, int J, bool fl=0) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int i,j,s=0; int N=n,NN=n*n; double b[];ArrayResize(b,NN);for(i=0;i<NN;i++)b[i]=a[i]; pull_line( b, I, N, N); pull_column( b, J, N, N); double Minor=det( b, N-1); if(fl)Minor*=MathPow(-1.0,I+J); return(Minor); }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ double det - âû÷èñëåíèå ÎÏÐÅÄÅËÈÒÅËß a - ìàòðèöà n - äëèííà ñòðîêè m - äëèííà còîëáöà ðåçóëüòàò â Det /*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ double det( double a[], int n) {//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ int N=n,NN=n*n; int i,j,s=0; double Det=a[0]; double b[];ArrayResize(b,NN); for(i=0;i<NN;i++)b[i]=a[i]; double c[];//ñòðîêè double d[];//ñòîëáöû while(N>1) {ArrayResize(c,N-1);//ñòðîêè ArrayResize(d,N-1);//ñòîëáöû for(i=1;i<N;i++)c[i-1]=b[i]; for(i=1;i<N;i++)d[i-1]=b[i*N]; double Glav=b[0]; Glav=ox( Glav); pull_line( b, 0, N, N); pull_column( b, 0, N, N); s=0; for(i=0;i<N-1;i++) {for(j=0;j<N-1;j++) {b[s]-=c[j]*d[i]*Glav; s++; } } Det*=b[0]; N--;NN=N*N; } return(Det); }//+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ /*///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ ////////////////////////////////////////////// ÎÄÍÀ ÈÊÑÎÂÀß /*///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ double ox( double x) {//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ double y=0.0; if(x!=0.0) y=1.0/x; else y= 1.0/MathPow(10.0,300); return(y); }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ //===================================================================================================== //ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ //=====================================================================================================
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: