私募

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

期货量化软件:赫兹量化中理解并有效地使用 MQL5 策略测试器

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述& j6 o" M  U% a" |
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
" _" b& e+ S& s4 A' l6 f& n错误0 O8 r, r$ V  [  z0 e4 @+ v# P
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
5 A' A* c! U+ G我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。$ w7 g/ F9 ^2 `: {; F4 s
左括号不平衡错误:
2 _  [- t+ E) v/ D2 N# H, g/ _当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
/ {; ^2 }0 u3 ?2 j1 G9 ]出错的错误代码:
- u3 D( W! d. |+ i: a5 ]bool a=7;
' J. d! }) z# U9 d* v/ F; Iif (a=5
$ _  w5 [  A% x. S9 m) ?$ C- [a=5
% S/ k* ]6 B6 L更正无错误代码:- m/ d6 X( F- j4 B
bool a=7;3 {$ C( r/ f3 `: S* a# R4 Y
if (a=5)
  Q5 }7 k/ ^* @# j5 \( ca=5;% s1 T! M: n! R8 R1 [6 o- a
更正代码后,我们会发现编译时没有错误。. @! j2 s: u7 ~: |$ U2 z
程序意外结束错误:' ]3 Z2 I7 ^# ?4 E, D* N
有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
0 L$ q5 C. l5 }) e, Z1 n3 m: J出错的错误代码:9 A: ^' b" L" J6 I6 _1 y
void OnStart()+ x$ ^5 ^& i1 w
{5 [: e# n4 n1 A. u
bool a=7;* ]! A+ _7 G! \& L5 ]6 l# d9 |
if (a=5)% o/ s' E) Q* s; Y# Q/ O3 H7 K
a=5;
, N" h" A1 M  i+ z4 z更正无错误代码:
4 `, z* A1 W7 p' y! [  ^void OnStart()- e% e3 G. i! N* r; }
{' e( W4 E- L/ ~% r: S+ R; f6 a3 P- O) j
bool a=7;1 {6 f0 f) E/ j# z( |
if (a=5)
& Y. g  x5 V* k) F  K: c& n$ na=5;( o2 G8 k- G# s$ u+ j7 L
}, o8 F3 I3 [1 K3 ^
添加右括号更正代码后,我们会发现代码成功编译没有错误。/ d+ V6 ^8 S- K5 f
表达式不允许出现在全局范围错误:
! u5 p" }  G1 q0 |当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
0 F6 w1 ]1 Q' e出错的错误代码:
: R$ u* |" J- `! U* \int a=(7+5);" ^. H2 `  [5 D7 v; o3 t3 q% W0 P
if (a<7)3 C  m* G- Z) _' ^; A3 @% ^
a=7;
4 D+ r4 ]7 Y' m  ^$ ~- ?- O7 d2 @}5 q7 t; O; ^. g9 z5 n( L1 y
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。" E! A5 j+ M6 V) m* j0 P* D
更正无错误代码:
7 U% g) j* c5 Z$ f6 K. @4 ]int a=(7+5);
6 x7 \, h; c3 Q: f3 }0 S" t/ nif (a<7)
& h3 W  i% Z5 m, [5 G{
) N4 I+ e1 [# v' c6 {- i% S( ^a=7;
( U  s9 U0 ]' S0 ~4 G}
1 X8 ?, o$ ]% T8 a( b6 Z更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。; P, W/ \; c- U
错误的参数计数错误:1 u7 V9 N+ a0 d; F( h- G& X
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。5 K7 h" `1 r, s- e; f9 i  u: a3 A$ A
有错误的代码:
* c! L+ S/ \- S4 Z, U$ y/ y如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同0 v+ p7 n' D0 c$ F9 Z
void OnStart()
" O, j% \0 c* k" L+ ^, i{
: ^$ `5 c- K# t* v& Lint example=myVal(10);# u/ x" W+ f( r0 M- N' U) a
}& M5 q: A% P7 t' M0 ]3 P1 O
//+------------------------------------------------------------------+; y3 \9 f, n4 D2 D. `! e. K
int myVal(int a, int b)
; L. X* |  G) U. Q' a- l5 m{3 P+ U$ K. n4 C3 u) {
return a+b;$ p0 Z% n7 ]' ?* H1 y- |
}) }6 @0 l4 d+ N0 Q8 c' n9 z6 V
无错误代码:
; x! t+ w# w5 H, P为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示% F% D( N0 }8 T% d! A5 @- W
void OnStart()* q) v6 y; ~1 j0 ]8 G
{- T! ^$ S4 |) t6 r6 I+ O
int example=myVal(10,20);
. g" P& [$ H, ~}' N% R9 U. L; y
//+------------------------------------------------------------------+" r/ _1 F1 s" i/ X! K
int myVal(int a, int b)7 @5 ?4 f4 {% x3 S, b: X
{
& f( |7 B. ]6 }4 C4 Q: \return a+b;" b: x5 l; w) S- m, h
}; R$ }/ B6 l' Q0 p: M. H
编译此正确代码后,我们不会发现任何错误。
$ v) q# ]+ f) q: n+ A某些操作符预期错误:+ [' W7 ?, u, T3 |+ H  C2 [1 _
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。5 h) @5 Z$ z* V- i- V
有错误的代码:
) u7 n- {2 u* i" Q5 o) i0 Sint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Archiver| ( 桂ICP备12001440号-3 )|网站地图

GMT+8, 2025-10-15 14:05 , Processed in 0.382119 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表