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]] */Pour MathMod et MathPow, le deuxième élément peut être soit un scalaire, soit une matrice/vecteur de la bonne taille.
//+------------------------------------------------------------------+ //| 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.; }
Améliorations des fonctions mathématiques pour les opérations utilisant le type float.
La possibilité nouvellement implémentée d'appliquer des fonctions
mathématiques à des matrices et des vecteurs de ’float’ a permis une
amélioration des fonctions mathématiques appliquées aux scalaires de
type ’float’. Ces paramètres de fonction étaient auparavant
automatiquement transformés en type 'double'. L'implémentation
correspondante de la fonction mathématique était ensuite appelée et le
résultat était retransformé en type 'float'. Les opérations sont
désormais implémentées sans conversion de type supplémentaire.
L'exemple suivant montre la différence dans les calculs mathématiques du sinus :
//+------------------------------------------------------------------+ //| 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 | Unité Linéaire Exponentielle |
| AF_EXP | Exponentiel |
| AF_GELU | Unité Linéaire d'Erreur Gaussienne |
| AF_HARD_SIGMOID | Sigmoïde Dure |
| AF_LINEAR | Linéaire |
| AF_LRELU | Unité Linéaire Rectifiée Perméable |
| AF_RELU | Unité Linéaire Rectifiée |
| AF_SELU | Unité Linéaire Exponentielle Mise à l'Echelle |
| AF_SIGMOID | Sigmoïde |
| AF_SOFTMAX | Softmax |
| AF_SOFTPLUS | Softplus |
| AF_SOFTSIGN | Softsign |
| AF_SWISH | Bruissement |
| AF_TANH | Tangente Hyperbolique |
| AF_TRELU | Unité Linéaire Rectifiée Avec Seuil |
| LOSS_MSE | Erreur Quadratique Moyenne |
| LOSS_MAE | Erreur Absolue Moyenne |
| LOSS_CCE | Inter-entropie Catégorielle |
| LOSS_BCE | Inter-entropie Binaire |
| LOSS_MAPE | Erreur Moyenne en Pourcentage Absolu |
| LOSS_MSLE | Erreur Logarithmique Quadratique Moyenne |
| LOSS_KLD | Divergence Kullback-Leibler |
| LOSS_COSINE | Similarité/Proximité Cosinus |
| LOSS_POISSONS | Poisson |
| LOSS_HINGE | Charnière |
| LOSS_SQ_HINGE | Charnière Au carré |
| LOSS_CAT_HINGE | Charnière Catégorielle |
| LOSS_LOG_COSH | Logarithme du Cosinus Hyperbolique |
| LOSS_HUBER | Huber |
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
Correction des erreurs signalées dans les journaux de plantage.
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);Les variables suivantes peuvent être utilisées comme métriques :
enum REGRESSION_ERROR { REGRESSION_MAE, // Erreur absolue moyenne REGRESSION_MSE, // Erreur quadratique moyenne REGRESSION_RMSE, // Erreur quadratique racine moyenne REGRESSION_R2, // R au carré REGRESSION_MAPE, // Erreur absolue moyenne en pourcentage REGRESSION_MSPE, // Erreur de pourcentage carré moyen REGRESSION_RMSLE // Erreur logarithmique quadratique moyenne };
MetaEditor




Testeur
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]; //--- Trie le tableau arr.ArgSort(indexes,-1,0); Print("indexes"); ArrayPrint(indexes); } // Résultat : // 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("La longueur de la chaîne est %d",test.Length()); } // Résultat : // La longueur de la chaîne est 11
MQL5
double matrix::Flat(ulong index) const; // getter void matrix::Flat(ulong index,double value); // setter
Pseudocode pour calculer l'adresse d'un élément matriciel :
ulong row=index / mat.Cols(); ulong col=index % mat.Cols(); mat[row,col]
Par exemple, pour 'matrix mat(3,3)', l'accès aux éléments peut s'écrire comme suit :

Testeur
Terminal
Terminal

MQL5
VPS
MetaEditor
Testeur


>




Documentation mise à jour.



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; // Partie réelle double imag; // Partie imaginaire };Le type "complex" peut être passé par valeur comme paramètre pour les fonctions MQL5 (contrairement aux structures ordinaires, qui ne sont passées que par référence). Pour les fonctions importées à partir de DLL, le type "complex" doit être passé uniquement par référence.
complex square(complex c)
{
return(c*c);
}
void OnStart()
{
Print(square(1+2i)); // Une constante est passée en paramètre
}
// "(-3,4)" will be output, which is a string representation of the complex number Seules les opérations simples sont actuellement disponibles pour les nombres complexes : =, +, -, *, /, +=, -=, *=, /=, ==, !=.

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; }Auparavant, la taille du tableau "a1" était égale à 3 après l'appel de la fonction. Maintenant, la taille sera 1.








