-
标准程序库中加入了MQL5版的ALGLIB数值分析库 。
程序库特点
- 线性代数
- 线性和非线性方程组
- 插值
- 优化
- 快速傅里叶变换
- 数值积分
- 线性和非线性最小平方拟合
- 常微分方程
- 特殊函数
- 描述性统计和假设测试
- 数据分析 - 分类,回归
- 多种精确算法中的线性代数,插值等的实施算法(使用MPFR)
如何使用
ALGLIB 文件位于\MQL5\Include\Math\Alglib。若要使用这些函数,请将主程序文件添加到您的程序:
#include <Math\Alglib\alglib.mqh>
-
标准程序库包含了数理统计函数。MQL5 现在提供R语言的功能,这是最好的统计数据处理和分析工具之一。
程序库特点
统计程序库包含计算数据统计特征的函数以及统计分布操作的函数:
- 计算数组元素统计特征的函数
- 统计分布操作的选项:常态分布,对数常态分布,贝塔分布等。
如何使用
统计程序库文件位于 \MQL5\Include\Math\Stat。若要使用该程序库,请将所需函数的文件添加到您的程序,例如:
#include <Math\Stat\Binomal.mqh>
#include <Math\Stat\Cauchy.mqh>
程序库函数的详细描述可在文章MQL5统计分布 - 使用最好的R中得到。
-
标准程序库中加入了MQL5版的Fuzzy程序库。Fuzzy程序库实现了Mamdani和Sugeno模糊推理系统。
程序库特点
- 13 个成员函数
- 灵活的开发模糊系统规则的形式
- Mamdani模糊推理系统
- Sugeno模糊推理系统
- Mamdani - 类型系统的5种去模糊化方式
- 无限数量的输入输出变量
如何使用
Fuzzy程序库文件位于\MQL5\Include\Math\Fuzzy。若要使用该程序库,请将所需函数的文件添加到您的程序,例如:
#include <Math\Fuzzy\mamdanifuzzysystem.mqh>
#include <Math\Fuzzy\sugenofuzzysystem.mqh>
程序库的详细描述可在代码库:Fuzzy - 开发模糊模型的程序库中得到
- CHART_QUICK_NAVIGATION新属性允许在图表中启用/禁用快速导航栏。如果您需要更改和访问属性状态,请使用ChartSetInteger和ChartGetInteger函数。

导航栏可以通过按下回车或空格键来打开。它允许您快速转到图表上的指定日期,以及切换到交易品种和时间周期。如果您的MQL5程序会处理按下回车或空格键,请禁用CHART_QUICK_NAVIGATION属性,以避免程序库拦截这些事件。快速导航栏仍然可以通过双击打开。
- 添加了FileLoad和FileSave新函数。它们提供了一种简单的阅读和数组保存到文件的方式。不同于FileRead*和FileWrite*,这些函数不需要指标处理程序。FileLoad和FileSave操作数值类型的数组,以及没有字符串,动态数组或类对象的简单结构。
long FileLoad(
const string filename,
void &buffer[],
uint common_flag=0
);
bool FileSave(
const string filename,
const void &buffer[],
uint common_flag=0
);
如何将报价写入文件然后阅读的示例:
input int ticks_to_save=1000;
void OnStart()
{
string filename=_Symbol+"_ticks.bin";
MqlTick ticks[];
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
if(copied!=-1)
{
PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
if(!GetLastError()==0)
PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError);
if(!FileSave(filename,ticks,FILE_COMMON))
PrintFormat("FileSave() failed, error=%d",GetLastError());
}
else
PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
ArrayFree(ticks);
long count=FileLoad(filename,ticks,FILE_COMMON);
if(count!=-1)
{
Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
for(int i=0;i<count;i++)
{
PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
}
}
}
- 通过DRAW_CANDLES 绘制模式更改自定义指标的展示。现在该模式可以设置1-3种颜色。蜡烛图的显示取决于设定的颜色数量。
如果指定一种颜色,图表上的所有蜡烛图都将绘制这种颜色。
#property indicator_label1 "One color candles"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGreen
如果指定两种颜色,一种颜色用于蜡烛图的边框,另一种用于主体。
#property indicator_label1 "Two color candles"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGreen,clrWhite
如果指定三种颜色,一种颜色用于蜡烛图的边框,其他两种颜色用于牛市蜡烛图和熊市蜡烛图的主体。
#property indicator_label1 "One color candles"
#property indicator_type1 DRAW_CANDLES
#property indicator_color1 clrGreen,clrWhite,clrRed
DRAW_CANDLES
风格允许设置自定义颜色的蜡烛图。使用PlotIndexSetInteger函数运行指标期间还可以动态更改所有颜色(drawing_index_DRAW_CANDLES,
PLOT_LINE_COLOR, modifier_number, color),在这里modifier_number 可能是以下的值:
- 0 – 边框和阴影的颜色
- 1 – 牛市蜡烛图主体颜色
- 2 – 熊市蜡烛图主体颜色
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
- 修正漏洞并改进使用CopyTicks函数的报价历史操作。
- 从新版开始,操作符可用于接口(之前是不允许的)。