私募

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述
0 {' J; z! y7 [) I% A6 x/ E) u- y  W& ^作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅$ ]% a% i2 _& a! q/ a: E; _
错误
/ |/ P6 E7 y7 r9 X& `在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
, J! _# V! v; E5 D3 D: W4 m我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。/ ^: C9 x7 _' G
左括号不平衡错误:7 C$ h" U. B) r( r, }7 _5 @, [
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。- C$ }- E3 B( Y- _
出错的错误代码:5 G4 F1 J  L! ^% H0 U) [
bool a=7;& I6 x2 f$ d: p$ e. b
if (a=5( j" R4 e  C9 m! u- A7 z
a=5! a4 ~& q4 c: C. J) r3 E  D2 ~
更正无错误代码:" B# }8 a+ ?: R, d# w$ D" S
bool a=7;7 Z" D. M, f, |5 H
if (a=5)
1 a- D1 w, h& Z" Da=5;8 u. Q# ?' Q" G1 L0 ^) t
更正代码后,我们会发现编译时没有错误。* ?  P: q1 s: @! h) \4 q
程序意外结束错误:
+ S) E1 y5 l$ o- T有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。" B  Q- S! [5 v8 p! D: g
出错的错误代码:+ F7 d  N4 M, ?' e2 s7 N. m. S
void OnStart()! h* W7 K& C" k) d
{
6 g8 X# v' j( h% mbool a=7;' k; k3 G9 ]( R, ?1 ?
if (a=5)
, [) d$ k- M* k' L0 X+ d: T5 u9 ~  S2 Ja=5;; ^$ I- V. \6 `# a
更正无错误代码:. y/ L; C( k/ O& e
void OnStart()
+ L7 V" c) q/ F/ C1 J{
: h: \& F: V) v. E  Y+ O: v5 p4 Dbool a=7;
; I7 W1 m  ?, M& P; jif (a=5)
* e$ h+ m. @6 T- Z5 b/ Za=5;) F! V# B+ l$ |0 L
}( K1 h2 l- K# }; K1 R
添加右括号更正代码后,我们会发现代码成功编译没有错误。
# Q, f" A  q* n- b, K+ D3 D: y5 i& R: F- ^表达式不允许出现在全局范围错误:
$ Z7 X" J. |! S( V5 p' Z" ~当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
3 Z. w% t. B, j# ?出错的错误代码:4 N' r+ |0 e( U' h; |
int a=(7+5);* y5 b5 i7 D2 L6 w& G5 s2 ]
if (a<7)
. u5 U9 r: @; _* @a=7;
8 z  `2 c, ?' a- f}
7 S& O) O! c- f8 C在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。6 Y; p: f% P; x3 }  @) o
更正无错误代码:
+ v2 p4 f: n- p6 k% ^  U6 r# {* v9 Rint a=(7+5);8 P: W# E! O/ L9 [. O: k$ e5 ^
if (a<7)
, f9 m3 l/ [) l/ W  R{) W$ I. {' U% l( A6 p. W' r2 j
a=7;
3 g& N3 G9 c) m: c  b}: E6 a' ^  F4 t7 a+ H; o
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。/ h4 |. `3 f/ N5 b
错误的参数计数错误:
: N( k6 `9 Q/ f; H当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。" \* ]3 a0 y+ `! R$ _
有错误的代码:* `! W) U7 F# P1 j
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
8 Q/ f7 X7 k% t- bvoid OnStart()
3 J8 U  @9 M, I% M+ G{# R& l4 W/ ]" e9 E
int example=myVal(10);7 I8 V- N9 F$ g& {4 e* M' z4 K" w
}' C; p* o/ c$ m- |" m' k
//+------------------------------------------------------------------+- d# k+ O9 F3 y; X$ {3 J: Y
int myVal(int a, int b)
: E, [2 o. Y- U7 m: W& r) {: r( C! ?{9 P  `+ `6 q1 |/ T& v  l+ f) h% j
return a+b;
$ E4 H- Z0 k0 [) n" v' e5 P}2 b, e: o& ~+ O* `- f
无错误代码:
* H# e4 Y% D: p2 @% E* ~为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示
2 z. k, T. l, |; ?) T. J* G5 ^void OnStart()* h4 X, w3 F4 q: a0 a4 [1 n8 H; f
{# U0 s: y! h9 _/ U6 f- @
int example=myVal(10,20);
, o) r2 `8 L2 I8 {3 M}
7 F5 Q& e4 P& f, \$ R//+------------------------------------------------------------------+2 I6 \/ }7 R; q! h
int myVal(int a, int b)1 \/ j! ^! r9 l( W- j, ]
{
9 N# B! [; W) ]return a+b;, j& d% z' k' O) ]: `# y9 ~. E
}
+ y5 S" ~% Z. ]' ^2 G编译此正确代码后,我们不会发现任何错误。
$ n( e% y4 [6 ~( U2 w某些操作符预期错误:
! c. S+ N% W/ _; l+ t当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。
- T" l8 @5 g9 m& \  ~: v1 v有错误的代码:+ b4 o4 O3 V$ ?1 V  L8 W3 N
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:38 , Processed in 0.868687 second(s), 32 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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