ターミナル


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]] */MathModおよびMathPowの場合、2番目の要素には、適切なサイズのスカラーまたは行列/ベクトルを指定することができます。
//+------------------------------------------------------------------+ //| 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.; }
float型を用いた演算のための数学関数を改善しました。Float型の行列とベクトルに数学関数を適用できるようになったことで、float型のスカラーに適用する数学関数が改善されました。以前は、これらの関数パラメータは無条件にdouble型にキャストされ、その後、対応する数学関数の実装が呼び出されてその結果がfloat型にキャストバックされていました。余分な型キャストをすることなく、演算が実装されるようになりました。
次の例では、数学的な正弦の計算の違いを示しています。
//+------------------------------------------------------------------+ //| 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 | ELU(指数線形ユニット) |
| AF_EXP | 指数 |
| AF_GELU | ガウシアンエラー線形ユニット |
| AF_HARD_SIGMOID | ハードシグモイド |
| AF_LINEAR | 線形 |
| AF_LRELU | Leaky REctified線形ユニット |
| AF_RELU | 正規化線形ユニット |
| AF_SELU | SELU (Scaled Exponentia線形ユニット) |
| AF_SIGMOID | シグモイド |
| AF_SOFTMAX | ソフトマックス |
| AF_SOFTPLUS | ソフトプラス |
| AF_SOFTSIGN | ソフトサイン |
| AF_SWISH | スウィッシュ |
| AF_TANH | ハイパーボリックタンジェント |
| AF_TRELU | しきい値化されたREctified線形ユニット |
| LOSS_MSE | 平均二乗誤差 |
| LOSS_MAE | 平均絶対誤差 |
| LOSS_CCE | カテゴリー別 交差エントロピー |
| LOSS_BCE | バイナリ交差エントロピー |
| LOSS_MAPE | MAPE (平均絶対誤差率) |
| LOSS_MSLE | 平均二乗対数誤差 |
| LOSS_KLD | カルバック・ライブラー ダイバージェンス |
| LOSS_COSINE | コサイン類似度/近接度 |
| LOSS_POISSON | ポワッソン |
| LOSS_HINGE | ヒンジ |
| LOSS_SQ_HINGE | 2乗 ヒンジ |
| LOSS_CAT_HINGE | カテゴリカル・ヒンジ |
| LOSS_LOG_COSH | ハイパーボリックコサインの 対数 |
| LOSS_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]'
ターミナル

MQL5
MetaTester
MetaEditor
クラッシュログで報告されたエラーを修正しました。
ターミナル

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);次の変数を指標として使用できます。
enum REGRESSION_ERROR { REGRESSION_MAE, // Mean absolute error REGRESSION_MSE, // Mean square error REGRESSION_RMSE, // Root mean square error REGRESSION_R2, // R squared REGRESSION_MAPE, // Mean absolute percentage error REGRESSION_MSPE, // Mean square percentage error REGRESSION_RMSLE // Root mean square logarithmic error };
MetaEditor




テスター
ターミナル
ターミナル:


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
行列要素のアドレスを計算するための擬似コード:
ulong row=index / mat.Cols(); ulong col=index % mat.Cols(); mat[row,col]
たとえば「matrix mat(3,3)」の場合、要素へのアクセスは次のように記述できます。

テスター
ターミナル
ターミナル

MQL5
VPS
MetaEditor
テスター


>




ドキュメントを更新しました。



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; // 実数部分 double imag; // 虚数部分 };「complex」型は、MQL5関数のパラメータとして値で渡すことができます(通常の構造体が参照によってのみ渡されるのとは対照的です)。DLLからインポートされた関数の場合、「complex」型は参照によってのみ渡されます。
complex square(complex c)
{
return(c*c);
}
void OnStart()
{
Print(square(1+2i)); // 定数がパラメータとして渡される
}
// 複素数の文字列表現である「(-3,4)」が出力される現在、複素数には単純な演算(=, +, -, *, /, +=, -=, *=, /=, ==,!=)のみが使用できます。

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; }以前は、関数呼び出し後の「a1」配列サイズは3でした。サイズは1になります。









ドキュメントが更新されました。