欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

ALGLIB - 数值分析库 - MetaTrader 4 的库

author emer | 223 人阅读 | 0 人评论 |

ALGLIB - Numerical Analysis Library - library for MetaTrader 4

谢尔盖·博奇卡诺夫。 ALGLIB 项目网站 -http://www.alglib.net/。图书馆日期回到1999年

注意:EA 交易与 MetaTrader 4 配合使用构建 555 及更高版本

您需要进行快速傅里叶变换或求解微分方程组吗?您是否执行复杂的数据分析,试图将所有方法作为源代码收集在一个地方?然后ALGLIB library of numerical methods is for you!

ALGLIB是目前最好的多语言算法库之一。以下是官网上提到的ALGLIB功能:

ALGLIB 是一个跨平台的数值分析和数据处理库。它支持多种编程语言(C++、C#、Pascal、VBA)和多种操作系统(Windows、Linux、Solaris)。 ALGLIB 的功能包括:

为什么选择ALGLIB?因为它是:

ALGLIB 库正在不断增强,根据用户的意见定期实施新功能和改进。最新版本是3.6.0。

此外,该库包含大量测试用例,涵盖了所提出方法的主要功能。这将使您能够进行测试并报告检测到的错误给该项目的作者。

CAlglib 类静态函数应该用于与库一起工作 - 所有库函数都作为静态函数移至 CAlglib 系统类。

testclasses.mq4 和 testinterfaces.mq5 测试用例脚本与简单的 usealglib.mq4 演示脚本一起附加。同名的包含文件(testclasses.mqh 和 testinterfaces.mqh)用于启动测试用例。它们必须放置到 \MQL4\Scripts\Alglib\Testcases\。

笔记:testclasses.mq4 脚本执行需要相当长的时间(大约 30 分钟)。

以下是有关 ALGLIB MQL4 移植库包的更多详细信息:

该包包含以下类:

库函数对其使用有详细的注释。

//+------------------------------------------------------------------+
//|分布矩的计算:均值、方差、         |
//|偏度、峰度。                                              |
//|输入参数:                                                |
//|     X       -   示例                                          |
//|     N       -   N>=0,样本大小:                               |
//|                 * 如果给定,则只有 X 的前 N ​​个元素是     |
//|                   已处理                                     |
//|                 * 如果未给出,则自动从    | 确定
//|                   X 的大小                                     |
//|输出参数                                               |
//|     平均值    -   平均值。                                            |
//|     方差 - 方差。                                        |
//|     偏度 - 偏度(如果方差<>0;否则为零)。       |
//|     峰度 - 峰度(如果方差<>0;否则为零)。       |
//+------------------------------------------------------------------+
静止的 布尔值CBaseStat::SampleMoments(常量 双倍的&cx[],常量 整数,双倍的&意思是,
                                    双倍的&方差,双倍的&偏度,双倍的&峰度)
  {// - - 查看  如果(!CAp::断言(n>=0,__功能__+“:错误变量”))
      返回错误的);// - - 查看  如果(!CAp::Assert(CAp::Len(cx)>=n,__功能__+“:长度(x)))
      返回错误的);// - - 查看  如果(!CAp::Assert(CApServ::IsFiniteVector(cx,n),__功能__+“:x不是有限向量”))
      返回错误的);//--- 创建变量  双倍的v=0;
  双倍的v1=0;
  双倍的v2=0;
  双倍的标准差=0;//--- 初始化,特殊情况 'N=0'   平均值=0;
   方差=0;
   偏度=0;
   峰度=0;// - - 查看  如果(n<=0)
      返回真的);// - - 意思是  为了整数我=0;i//--- 方差(使用修正的两遍算法)  如果(n!=1)
     {
      // - - 计算      为了整数我=0;i为了(整数我=0;i1);
      // - - 计算      标准差=数学平方根(方差);
     }
  别的      方差=空_VALUE;//--- 偏度和峰度  如果(标准设备!=0)
     {
      // - - 计算      为了整数我=0;i//--- 更改值      偏度=偏度/n;
      峰度=峰度/n-3;
     }//--- 成功执行  返回真的);
  }

应使用 CAlglib 类静态函数与图书馆合作。下面是 usealglib.mq5 函数脚本的源代码,用于计算一些统计交易参数:

//+------------------------------------------------------------------+
//|                                                    使用Alglib.mq4 |
//|                        版权所有 2012,MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#财产版权 “版权所有 2012,MetaQuotes Software Corp.”
#财产关联      “https://www.mql5.com”
#财产版本  “1.00”
#财产严格的//+------------------------------------------------------------------+
//|包括库                                                |
//+------------------------------------------------------------------+
#包括<数学\Alglib\alglib.mqh>#包括<数组\ArrayDouble.mqh>//+------------------------------------------------------------------+
//|脚本程序启动函数                                   |
//+------------------------------------------------------------------+
空白 启动时()
  {//--- 用于存储每个订单的损益数据的对象   CArrayDouble *利润=新的CArrayDouble;//--- 用于存储余额数据的对象   CArrayDouble *balance_total=新的CArrayDouble;//--- 初始余额  双倍的        余额=0;//--- 历史数据请求
//--- 获取订单总金额  整数order_total=OrdersHistoryTotal();//--- 获取利润数据  为了整数我=0;i<订单总数;i++)
     {
      如果订单选择(i,SELECT_BY_POS,MODE_HISTORY)==错误的)
        {
        打印“订单选择错误(”,获取最后一个错误(),“)”);
        返回;
        }
      整数order_type=订单类型();
      //--- 初始余额      如果(订单类型==6// OP_BALANCE=6        {
        如果规范化双精度(订单利润()+订单掉期(),2)>=0.0)
            如果(余额==0.0)
               余额=订单利润();
        }
      //--- 添加订单利润      如果(订单类型==OP_BUY || 订单类型==OP_SELL)
        {
        双倍的order_profit=OrderProfit()+OrderSwap()+OrderCommission();
         利润.添加(规范化双精度(订单利润,2));
         Balance_total.Add(余额);
         余额=余额+规范化双精度(订单利润,2);
        }
     }//---   Balance_total.Add(balance_total.At(balance_total.Total()-1)+利润.At(balance_total.Total()-1));//--- 将余额数据复制到双精度型数组  双倍的arr_balance[];
  数组调整大小(arr_balance,balance_total.Total());
  为了整数我=0;i//--- 将利润数据复制到double类型的数组  双倍的arr_profit[];
  数组调整大小(arr_profit,profit.Total());
  为了整数我=0;i<利润.Total();i++)
      arr_profit[i]=profit.At(i);//--- 线性回归
//--- 自变量的数量  整数nvars=1;//--- 点数  整数npoints=balance_total.Total();//--- 创建参数矩阵,用于线性回归   CMatrixDouble xy(npoints,nvars+1);
  为了整数我=0;i0,我);
      xy[i].设置(1,arr_balance[i]);
     }//--- 检测计算结果的变量(成功、不成功)  整数信息;//--- 存储计算数据所需的类对象   CLinearModelShell lm;
   CLRReportShell    ar;//--- 用于存储回归结果的数组  双倍的lr_coeff[];
  双倍的lr_values[];
  数组调整大小(lr_值,n点);//--- 计算线性回归系数   CAlglib::LRBuild(xy,npoints,nvars,info,lm,ar);//--- 获取线性回归系数   CAlglib::LRUnpack(lm,lr_coeff,nvars);//--- 获取恢复的线性回归值  为了整数我=0;i0]*i+lr_coeff[1];//--- 预期收益的计算  双倍的exp_payoff,tmp1,tmp2,tmp3;
   CAlglib::SampleMoments(arr_profit,exp_payoff,tmp1,tmp2,tmp3);//--- HPR 数组的计算  双倍的HPR[];
  数组调整大小(HPR,balance_total.Total()-1);
  为了整数我=0;i1;我++)
      HPR[i]=balance_total.At(i+1)/balance_total.At(i);//--- 计算 HPR 的标准差和平均值  双倍的AHPR、SD;
   CAlglib::SampleMoments(HPR,AHPR,SD,tmp2,tmp3);
   标准差=数学平方根(标清);//--- LR相关性的计算  双倍的lr_corr=CAlglib::PearsonCorr2(arr_balance,lr_values);//--- LR 标准误差的计算  双倍的lr_stand_err=0;
  为了整数我=0;i双倍的德尔塔=数学抗体(arr_balance[i]-lr_values[i]);
      lr_stand_err=lr_stand_err+delta*delta;
     }
   lr_stand_err=数学平方根(lr_stand_err/(npoints-2));//--- 夏普比率的计算  双倍的Sharpe_ratio=(AHPR-1)/SD;// - - 打印  打印格式“--------------------------------------------------------”);
  打印格式“线性回归:y = %.2fx + %.2f”,lr_系数[0],lr_coeff[1]);// - - 参数  打印格式“预期收益 = %.2f”,exp_payoff);
  打印格式“AHPR = %.4f”,AHPR);
  打印格式“夏普比率 = %.2f”,锐利比率);
  打印格式“LR 相关性 = %.2f”,lr_corr);
  打印格式“LR 标准误差 = %.2f”,lr_stand_err);
  打印格式“--------------------------------------------------------”);//--- 删除对象  删除利润;
  删除余额总计;
  }//+------------------------------------------------------------------+

我们将收到以下结果(取决于您的交易结果):

ALGLIB - Numerical Analysis Library - library for MetaTrader 4


附件下载

📎 alglib.mqh (1372.18 KB)

📎 alglibinternal.mqh (325.33 KB)

📎 alglibmisc.mqh (60.23 KB)

📎 ap.mqh (75.68 KB)

📎 arrayresize.mqh (6.59 KB)

📎 bitconvert.mqh (17.24 KB)

📎 complex.mqh (14.07 KB)

📎 dataanalysis.mqh (574.08 KB)

📎 delegatefunctions.mqh (17.68 KB)

📎 diffequations.mqh (35.66 KB)

📎 fasttransforms.mqh (85.21 KB)

📎 integration.mqh (243.57 KB)

📎 interpolation.mqh (522.71 KB)

📎 linalg.mqh (712.14 KB)

📎 matrix.mqh (23.83 KB)

📎 optimization.mqh (501.04 KB)

📎 solvers.mqh (149.25 KB)

📎 specialfunctions.mqh (234.36 KB)

📎 statistics.mqh (398.3 KB)

📎 TestClasses.mq4 (14.31 KB)

📎 TestClasses.mqh (1380.85 KB)

📎 TestInterfaces.mq4 (8.86 KB)

📎 TestInterfaces.mqh (403.03 KB)

📎 UseAlglib.mq4 (6.31 KB)

Source: MQL5 #11077

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录