Hàm mũ và logarit
Việc tính toán các hàm mũ và logarit có sẵn trong MQL5 thông qua phần API tương ứng.
Việc thiếu hàm logarit cơ số 2 trong API, vốn thường cần thiết trong khoa học máy tính và tổ hợp, không phải là vấn đề, vì nó dễ dàng được tính toán khi cần thông qua các hàm logarit tự nhiên hoặc thập phân có sẵn.
log2(x) = log(x) / log(2) = log(x) / M_LN2
log2(x) = log10(x) / log10(2)
2
Ở đây, log
và log10
là các hàm logarit có sẵn (dựa trên e
và 10, tương ứng), M_LN2
là một hằng số tích hợp sẵn bằng log(2)
.
Bảng sau liệt kê tất cả các hằng số có thể hữu ích trong tính toán logarit.
Hằng số | Mô tả | Giá trị |
---|---|---|
M_E | e | 2.71828182845904523536 |
M_LOG2E | log2(e) | 1.44269504088896340736 |
M_LOG10E | log10(e) | 0.434294481903251827651 |
M_LN2 | ln(2) | 0.693147180559945309417 |
M_LN10 | ln(10) | 2.30258509299404568402 |
Ví dụ về các hàm được mô tả dưới đây được tập hợp trong tệp MathExp.mq5
.
double MathExp(double value) ≡ double exp(double value)
Hàm này trả về số mũ, tức là số e
(có sẵn dưới dạng hằng số định sẵn M_E
) được nâng lên lũy thừa value
được chỉ định. Khi xảy ra tràn số, hàm trả về inf
(một dạng NaN biểu thị vô cực).
PRT(MathExp(0.5)); // 1.648721270700128
PRT(MathPow(M_E, 0.5)); // 1.648721270700128
PRT(MathExp(10000.0)); // inf, NaN
2
3
double MathLog(double value) ≡ double log(double value)
Hàm này trả về logarit tự nhiên của số được truyền vào. Nếu value
là số âm, hàm trả về -nan(ind)
(NaN "giá trị không xác định"). Nếu value
là 0, hàm trả về inf
(NaN "vô cực").
PRT(MathLog(M_E)); // 1.0
PRT(MathLog(10000.0)); // 9.210340371976184
PRT(MathLog(0.5)); // -0.6931471805599453
PRT(MathLog(0.0)); // -inf, NaN
PRT(MathLog(-0.5)); // -nan(ind)
PRT(Log2(128)); // 7
2
3
4
5
6
Dòng cuối cùng sử dụng triển khai logarit cơ số 2 thông qua MathLog
:
double Log2(double value)
{
return MathLog(value) / M_LN2;
}
2
3
4
double MathLog10(double value) ≡ double log10(double value)
Hàm này trả về logarit thập phân của một số.
PRT(MathLog10(10.0)); // 1.0
PRT(MathLog10(10000.0)); // 4.0
2
double MathExpm1(double value) ≡ double expm1(double value)
Hàm này trả về giá trị của biểu thức (MathExp(value) - 1)
. Trong tính toán kinh tế, hàm này được sử dụng để tính lãi suất hiệu quả (doanh thu hoặc thanh toán) trên mỗi đơn vị thời gian trong một mô hình lãi kép khi số kỳ tiến tới vô cực.
PRT(MathExpm1(0.1)); // 0.1051709180756476
double MathLog1p(double value) ≡ double log1p(double value)
Hàm này trả về giá trị của biểu thức MathLog(1 + value)
, tức là nó thực hiện hành động ngược lại với hàm MathExpm1
.
PRT(MathLog1p(0.1)); // 0.09531017980432487