私募

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述5 l) a9 v" S- i
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
4 W. b! F$ h  d+ r错误
) L7 n4 R0 Q4 R' m. l+ B0 u5 I在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
6 e6 F. O- F1 n/ M, y' I! J我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。5 l* Y- E7 k" [- y  L' x7 o: z4 |
左括号不平衡错误:  d; [. Y0 A. w
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。, G! Q3 Z( M4 u- W1 @
出错的错误代码:: B* o6 a. c) f( o
bool a=7;
& z6 o- C  L- c9 D; o- t) Qif (a=5
" |+ c/ T5 I$ H8 n2 A  na=5
  R9 n) |6 k: |) x# J0 Z$ F" z* W更正无错误代码:( [; V! H6 V% i3 C. o
bool a=7;  |2 P/ w+ V2 \1 G3 z
if (a=5)5 u( U8 N+ l7 z  z7 U8 s; n
a=5;
* M3 E  [: E7 S更正代码后,我们会发现编译时没有错误。6 D( @4 q1 S# B- ]* ?- D8 z6 f
程序意外结束错误:
. q9 u0 F0 Z2 _- B0 p+ Q& |/ U$ E有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
6 `/ ~  e  d$ R5 L, [2 F" j出错的错误代码:6 Q6 @6 b+ `  d7 _
void OnStart()! v' z1 y0 ]1 G: p. Y
{
4 G0 H1 O" Y2 @$ w/ Vbool a=7;1 j" v  p5 I+ v0 i% t  M8 }
if (a=5)
" \/ D; z* F6 ja=5;
( Z3 n+ `: P8 ]; y更正无错误代码:
4 O0 w' W! T+ l1 {$ p1 I  x3 Cvoid OnStart()
# p3 k; h, n; ]  w2 E{  C0 t% `6 ]3 ^& h7 Y9 |9 Z$ ?* ~
bool a=7;
. L9 l0 K' ~' ]! fif (a=5)- y7 e$ O( P1 t: x8 P( l& F4 W
a=5;$ p( X0 y; x7 G4 b7 N
}
, z% Y" i% F" ~8 D* D" x3 x& @添加右括号更正代码后,我们会发现代码成功编译没有错误。
: R1 a2 z  N# p$ W6 h表达式不允许出现在全局范围错误:
& L7 A( S9 k, M  S4 }* n, r5 C当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。5 h& _* |4 L" ~& }
出错的错误代码:
$ t# }# c  W. w/ L  O8 e3 ]int a=(7+5);
2 y) S5 x( b* X0 F. }0 wif (a<7)
+ A' V; q, W+ J/ a  ja=7;
+ \/ t8 l6 W4 H0 n# t& P: W}
( ?. @* n) \# i/ ]" |0 j$ _* }1 S9 T在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
- U. W9 Q. O+ u- s  I! r* ~7 \更正无错误代码:
0 d  v2 `. R! P0 B" Xint a=(7+5);1 }; H1 i8 v, d6 ]2 V7 f, C
if (a<7)
, B+ J6 ]# u" w" W# F{3 J1 R! a) X& D1 x! d+ Y- Z
a=7;: t3 n1 @! F, \$ [
}
  e$ z2 B3 m) O) X0 }# f6 n) Q) e更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
  e- j: G' u) ?1 S错误的参数计数错误:& o2 D) ]* w- i4 M% i! _* m5 y7 }0 \6 e
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。* ]+ l0 m; ]. z% a% r
有错误的代码:
% j3 h5 C+ J7 |5 w/ `# Y如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同( f& y1 ^& f! y+ \- w
void OnStart()0 \+ e- v1 c( E) r2 M
{
& k: ]. {0 ^1 i1 B$ m7 E8 Q$ |6 Iint example=myVal(10);0 h( _$ y/ ]* a: z. Z/ G! t) u; a
}
' ?6 H% r/ R6 C//+------------------------------------------------------------------+. \, W5 n0 f* I
int myVal(int a, int b)
4 o8 t8 m! n6 V% L{
$ Z  u5 |% A( Hreturn a+b;8 a) `8 G" h4 Z" }+ p6 j0 k
}
5 g6 V3 u3 q# F6 Y无错误代码:- {; M4 O* I: \9 S5 Y* m* z4 r
为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示4 T5 v) Z8 @7 c! x: e. i/ l
void OnStart()
# i+ r. t5 T  P: \" r{3 V+ ]$ M: m, `0 j6 I
int example=myVal(10,20);" {5 a9 W, ]1 t9 F5 u9 O  @
}0 q- g( [; B) B$ R6 j0 w
//+------------------------------------------------------------------+7 d% @: k' {, {
int myVal(int a, int b)5 n  J: F0 n) N8 R  F4 {
{+ S7 o3 y8 k3 f! D; Y3 U0 R9 D
return a+b;& ?6 J, X/ r$ ?. Q# e5 T
}- k! c+ R/ x5 O
编译此正确代码后,我们不会发现任何错误。
( s  K& d( E5 ?( T- b某些操作符预期错误:
$ c- ^4 l8 Z0 H8 L# }" ^当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。
0 G$ B+ ?! B6 t- S有错误的代码:# j% h& ~& U, X$ C" r$ x4 p" n
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-17 04:28 , Processed in 0.402598 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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