四目观天下

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述
+ E5 k4 T5 L8 @& P. C作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
/ c, d6 b& G; U: ^! L4 k错误# P" K6 Z9 e: D/ @9 f
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
, Y" S9 u+ w# v: j& Y" [; s我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
: G: w9 E8 t% P& j( z左括号不平衡错误:3 Z  F+ [/ q' H+ }3 w
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
* C$ R7 {4 q% D  f; p出错的错误代码:: S5 \2 ]- B3 g: c6 o, w& p# k
bool a=7;+ j4 b) q; U1 ]; Y# E7 L
if (a=50 P6 n) n  U: y- }) s0 t# W8 x
a=5/ A7 f+ l' M9 ~& P9 }' u4 h& I2 I
更正无错误代码:
, R& m2 g; B3 y+ Ubool a=7;# L9 h. \8 L# x* q% |
if (a=5)' Y! [- ^8 G  N+ b& @
a=5;
$ g7 f2 e: J9 v  n' z1 M' V  r# R更正代码后,我们会发现编译时没有错误。
4 F' h3 X& @0 z6 ^程序意外结束错误:
5 c& Z$ r1 s! P9 i6 U有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。7 N: {$ y# z/ X1 ^# R3 [0 o
出错的错误代码:5 c4 @+ s( i; D6 }: [& E6 f/ J
void OnStart()9 i; T: J5 }5 b( ?
{
& N0 Z2 A8 B6 I' rbool a=7;
9 o6 a, s' l* H3 g- ~7 kif (a=5)
4 Q* ?: V7 k9 s% ba=5;6 Q7 z5 `$ W% ]- o% Z1 ~
更正无错误代码:
. C, X! f+ C6 C, G* S4 bvoid OnStart()7 i* ~) L% n7 Q/ S4 |
{
! @5 v9 }( s3 f) x  z! i, Z* o, jbool a=7;# C# n+ R1 E& t) a
if (a=5)
" T' q, X. @6 h5 U/ e% ra=5;# O/ \: w, _  v0 E& n8 z- G  Y
}
+ \3 R+ |1 J' p% Q4 `添加右括号更正代码后,我们会发现代码成功编译没有错误。
! e% A2 G6 K0 L; `9 S4 V, h表达式不允许出现在全局范围错误:3 `; G( O; n* q+ ]5 i: E/ E
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
1 z0 @$ d% @1 E# l) l3 _) R9 z5 h3 u% p出错的错误代码:
1 ?( ?! F/ ~& Tint a=(7+5);
8 z$ ?, W' L4 w( y( qif (a<7)$ k0 d& {6 I0 h. S  [
a=7;, ?5 M) B7 v0 n; P$ Z8 L1 ^' Y9 F
}$ j4 I- V% \' p2 t/ N
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
1 d4 q* O+ _6 T0 ]+ V更正无错误代码:
% h; a' [8 y. F0 Y: ^' L4 V" yint a=(7+5);% Z8 J* \, K/ _6 M
if (a<7), }* n; ]; c/ S: `: C* x
{' _" d2 ?$ H3 h8 Q# o
a=7;
4 r. K# l; H7 T7 K}5 v  U! ]+ j6 n- Z' F7 z0 u: R
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。' ^# Z* P" S% Q4 s9 P7 ]: |
错误的参数计数错误:
' v* u8 {) {& |! G  r8 F+ ?当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。( w% E- D9 ?8 {9 i5 l& g9 t
有错误的代码:$ B* {0 z" J$ d/ l. _4 U% Z! j
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
  ]# Z0 }; ?8 R5 i2 o3 V7 Bvoid OnStart()
7 F* y5 s+ a; f0 @& l{$ W5 Y  q* r/ Z- ?+ v
int example=myVal(10);
6 \4 ^- y) L/ t4 K6 J/ |}
+ s4 b; H6 D' P9 P//+------------------------------------------------------------------+
2 E% p# d5 W7 t- |$ W; oint myVal(int a, int b)
: h) Z- Z5 ]5 y5 t4 c{
! \) e! W+ E2 N% O. rreturn a+b;/ j* y% `! l; S3 C- v. c1 a
}
! \8 Y8 m/ J) m无错误代码:
3 P9 G3 A; O, M+ U9 ^为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示
$ A( z  O+ `% @9 a) k$ y- f: n% F& L1 [void OnStart()
( D+ e# a$ r8 w8 L{$ H: _9 r& L; d+ t
int example=myVal(10,20);4 f8 y* s) A$ r; F& ~) \2 \
}
1 L$ }7 X& N2 z' O: p, U# e1 q- f//+------------------------------------------------------------------+0 A/ H9 g$ c+ c% \' ]4 q' @
int myVal(int a, int b), |$ _5 i7 S' q4 ]! S2 }+ O
{4 N9 H. F$ o& h% g; X
return a+b;# E6 C( T, K6 H9 z# V
}; s: T9 |* T! ?
编译此正确代码后,我们不会发现任何错误。
) F3 V) f: ~0 t/ q2 K. ], V某些操作符预期错误:
! j$ z7 A7 `0 a- q当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。
3 `+ U6 R- T8 n# O# W! R: _9 D* s有错误的代码:( Z: ~' \" Y- ?; L+ ]  N# m
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-4 02:55 , Processed in 2.210187 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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