Terminal


MQL5
//--- matrix a= {{1, 4}, {9, 16}}; Print("matrix a=\n",a); a=MathSqrt(a); Print("MatrSqrt(a)=\n",a); /* matrix a= [[1,4] [9,16]] MatrSqrt(a)= [[1,2] [3,4]] */Bei MathMod und MathPow kann das zweite Element entweder ein Skalar oder eine Matrix/ein Vektor mit der entsprechenden Größe sein.
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- Use the initializing function to populate the vector vector r(10, ArrayRandom); // Array of random numbers from 0 to 1 //--- Calculate the average value double avr=r.Mean(); // Array mean value vector d=r-avr; // Calculate an array of deviations from the mean Print("avr(r)=", avr); Print("r=", r); Print("d=", d); vector s2=MathPow(d, 2); // Array of squared deviations double sum=s2.Sum(); // Sum of squared deviations //--- Calculate standard deviation in two ways double std=MathSqrt(sum/r.Size()); Print(" std(r)=", std); Print("r.Std()=", r.Std()); } /* avr(r)=0.5300302133243813 r=[0.8346201971495713,0.8031556138798182,0.6696676534318063,0.05386516922513505,0.5491195410016175,0.8224433118686484,... d=[0.30458998382519,0.2731254005554369,0.1396374401074251,-0.4761650440992462,0.01908932767723626,0.2924130985442671, ... std(r)=0.2838269732183663 r.Std()=0.2838269732183663 */ //+------------------------------------------------------------------+ //| Fills the vector with random values | //+------------------------------------------------------------------+ void ArrayRandom(vector& v) { for(ulong i=0; i<v.Size(); i++) v[i]=double(MathRand())/32767.; }
Verbesserte mathematische Funktionen für Operationen mit dem Typ float.
Die neu implementierte Möglichkeit, mathematische Funktionen auf
'float'-Matrizen und -Vektoren anzuwenden, hat eine Verbesserung der auf
'float'-Skalare angewandten mathematischen Funktionen ermöglicht. Zuvor
wurden diese Funktionsparameter bedingungslos in den Typ "double"
umgewandelt, dann wurde die entsprechende Implementierung der
mathematischen Funktion aufgerufen, und das Ergebnis wurde in den Typ
"float" zurückgewandelt. Jetzt werden die Operationen ohne zusätzliches
Typenumwandlung (Casting) implementiert.
Das folgende Beispiel zeigt den Unterschied in den mathematischen Sinusberechnungen:
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- Array of random numbers from 0 to 1 vector d(10, ArrayRandom); for(ulong i=0; i<d.Size(); i++) { double delta=MathSin(d[i])-MathSin((float)d[i]); Print(i,". delta=",delta); } } /* 0. delta=5.198186103783087e-09 1. delta=8.927621308885136e-09 2. delta=2.131878673594656e-09 3. delta=1.0228555918923021e-09 4. delta=2.0585739779477308e-09 5. delta=-4.199390279957527e-09 6. delta=-1.3221741035351897e-08 7. delta=-1.742922250969059e-09 8. delta=-8.770715820283215e-10 9. delta=-1.2543186267421902e-08 */ //+------------------------------------------------------------------+ //| Fills the vector with random values | //+------------------------------------------------------------------+ void ArrayRandom(vector& v) { for(ulong i=0; i<v.Size(); i++) v[i]=double(MathRand())/32767.; }
| AF_ELU | Exponential-Linear-Einheit |
| AF_EXP | Exponential |
| AF_GELU | Gaußscher Fehler Lineare Einheit |
| AF_HARD_SIGMOID | Hartes Sigmoid |
| AF_LINEAR | Linear |
| AF_LRELU | Undichte rektifizierte Lineareinheit |
| AF_RELU | Rektifizierte Lineareinheit |
| AF_SELU | Skalierte Exponential-Linear-Einheit |
| AF_SIGMOID | Sigmoid |
| AF_SOFTMAX | Softmax |
| AF_SOFTPLUS | Softplus |
| AF_SOFTSIGN | Softsign |
| AF_SWISH | Swish |
| AF_TANH | Hyperbolischer Tangens |
| AF_TRELU | Schwellenwerteinheit (Rectified Linear Unit) |
| LOSS_MSE | Mittlerer quadratischer Fehler |
| LOSS_MAE | Mittlerer absoluter Fehler |
| LOSS_CCE | Kategoriale Kreuzentropie |
| LOSS_BCE | Binäre Kreuzentropie |
| LOSS_MAPE | Mittlerer absoluter prozentualer Fehler |
| LOSS_MSLE | Mittlerer quadratischer logarithmischer Fehler |
| LOSS_KLD | Kullback-Leibler Divergenz |
| LOSS_COSINE | Kosinus-Ähnlichkeit/-Nähe |
| LOSS_POISSON | Poisson |
| LOSS_HINGE | Hinge-Verlustfunktion |
| LOSS_SQ_HINGE | Quadratische Hinge-Verlustfunktion |
| LOSS_CAT_HINGE | Kategoriale Hinge-Verlustfunktion |
| LOSS_LOG_COSH | Logarithmus des Hyperbolischen Kosinus |
| LOSS_HUBER | Huber-Verlustfunktion |
int cl_ctx; //--- Initializing the OpenCL context if((cl_ctx=CLContextCreate(CL_USE_GPU_DOUBLE_ONLY))==INVALID_HANDLE) { Print("OpenCL not found"); return; }
CalendarValueLast(change, result, "", "EUR")
MetaEditor

'levels.bmp' as 'uint levels[18990]'
Terminal

MQL5
MetaTester
MetaEditor
Fehler in den Absturz-Logs behoben.
Terminal

MQL5
double vector.RegressionError(const enum lr_error); double matrix.RegressionError(const enum lr_error); vector matrix.RegressionError(const enum lr_error,const int axis);Die folgenden Variablen können als Metriken verwendet werden:
enum REGRESSION_ERROR { REGRESSION_MAE, // Mittlerer absoluter Fehler REGRESSION_MSE, // Mittlerer quadratischer Fehler REGRESSION_RMSE, // Wurzel des mittleren quadratischen Fehlers REGRESSION_R2, // R-Quadrat REGRESSION_MAPE, // Mittlerer absoluter Fehler in Prozent REGRESSION_MSPE, // Mittlerer quadratischer Fehler in Prozent REGRESSION_RMSLE // Logarithmus der Wurzel des mittleren quadratischen Fehlers };
MetaEditor




Tester
Terminal

Terminal

Terminal


MQL5
void OnStart() { int arr[4][5]= { {22, 34, 11, 20, 1}, {10, 36, 2, 12, 5}, {33, 37, 25, 13, 4}, {14, 9, 26, 21, 59} }; ulong indexes[4][5]; //--- Sort the array arr.ArgSort(indexes,-1,0); Print("indexes"); ArrayPrint(indexes); } // Result log: // indexes // [,0][,1][,2][,3][,4] // [0,] 4 2 3 0 1 // [1,] 2 4 0 3 1 // [2,] 4 3 2 0 1 // [3,] 1 0 3 2 4
void OnStart() { string test="some string"; PrintFormat("String length is %d",test.Length()); } // Result log: // String length is 11
MQL5
double matrix::Flat(ulong index) const; // getter void matrix::Flat(ulong index,double value); // setter
Pseudocode zur Berechnung der Adresse eines Matrixelements:
ulong row=index / mat.Cols(); ulong col=index % mat.Cols(); mat[row,col]
Für die "Matrix mat(3,3)" zum Beispiel kann der Zugriff auf die Elemente wie folgt geschrieben werden:

Tester
Terminal
Terminal

MQL5
VPS
MetaEditor
Tester


>




Die Dokumentation wurde aktualisiert.



struct POINT { int x,y; }; int GetYFunc(y) { return(y * y); } void SomeFunction(int x1,int x2,int y) { POINT pt={ x1+x2, GetYFunc(y) }; ProcessPoint(pt); };





struct complex { double real; // reeler Teile double imag; // imaginärer Teil };Der Typ "complex" kann als Parameter für MQL5-Funktionen per Wert übergeben werden (im Gegensatz zu normalen Strukturen, die nur per Referenz übergeben werden). Bei Funktionen, die aus DLLs importiert werden, muss der Typ "complex" ausschließlich als Referenz übergeben werden.
complex square(complex c)
{
return(c*c);
}
void OnStart()
{
Print(square(1+2i)); // Die Übergaben einer Konstanten als Parameter
}
// ausgegeben wird "(-3,4)", die komplexe Zahl in TextformFür komplexe Zahlen sind derzeit nur einfache Operationen verfügbar: =, +, -, *, /, +=, -=, *=, /=, ==,!=.

select count(*) as book_count, cast(avg(parent) as integer) as mean, cast(median(parent) as integer) as median, mode(parent) as mode, percentile_90(parent) as p90, percentile_95(parent) as p95, percentile_99(parent) as p99 from moz_bookmarks;



void func(int &arr[ ][ ][ ][ ])
{
} 



struct MyStruct { string Array[]; }; void OnStart() { MyStruct a1,a2; ArrayResize(a1.Array,3); ArrayResize(a2.Array,1); a1=a2; }Früher war die Array-Größe von "a1" nach dem Funktionsaufruf gleich 3. Jetzt ist die Größe 1.









Die Dokumentation wurde aktualisiert.