四目观天下

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述
) v! y1 w6 @" g/ m! ~作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅" r! g. A. ~) k) s
错误; T  K7 J2 j9 P, S7 j: \* i
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
) L- y# W  A0 Q5 n, @, U  _9 r我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。( {% z, C! \$ k) |: F" l
左括号不平衡错误:! M9 w8 E6 a# q. U4 B1 Y6 [
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
6 v% r, K* Q1 Q4 p- ^9 p# v出错的错误代码:0 x0 q& E. T- P. I$ Q
bool a=7;! G. Z! `1 f4 A- Q' R
if (a=5
( j) t$ f+ r  N* ]; c1 ia=5- ?3 J/ C/ p- J+ C2 Q" ]% R
更正无错误代码:/ t: ?2 q- f3 E8 ~2 S' K
bool a=7;
0 ?* O. W) X3 x) @0 eif (a=5)
. ~; I, n0 _3 ~/ g$ x& Pa=5;
" x0 i1 C' l" h" {# s8 B# u& D3 x, X更正代码后,我们会发现编译时没有错误。
( b9 T9 q& m; T' Z7 F程序意外结束错误:
4 @: [2 R+ o8 ?. K- W有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。, s; P1 Q. M1 o$ Z
出错的错误代码:
0 Q" w9 d# z2 V  v. ovoid OnStart()
/ {/ a- z( P: `" G! W3 e! x{
- c% q; Q7 I% |) L. {% \9 Ibool a=7;
5 y' j' g  a/ E5 Yif (a=5)5 a) C0 M0 W1 z7 ~& S' z
a=5;
: \: p- w& g( L更正无错误代码:3 t& r+ A2 ?" F; z
void OnStart()
' c5 i  m! _5 W1 Y0 Z) e6 |5 P{& h: l7 F1 p) K3 r2 I# O
bool a=7;
6 T3 ]" e6 ~, }! h) r& C$ sif (a=5)9 b# n+ f. L/ W( ^, Q/ `' f
a=5;1 G# Q' D( U& B" V
}
5 N2 t$ @( ]! V. v添加右括号更正代码后,我们会发现代码成功编译没有错误。
5 G* y, f$ ?7 v* u, \表达式不允许出现在全局范围错误:
; M# e1 d' x) S$ J# {9 a当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
" R2 b* ]4 x7 a9 @' L9 b1 `出错的错误代码:
! O/ _8 [6 O, B8 f/ Uint a=(7+5);. b+ }2 u+ X4 t5 K  ~" ]' `5 y) G
if (a<7)
  [0 D. U" m, u4 wa=7;2 b% N/ D: n: p
}& z0 ^4 T- }# m8 b
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
) C* b% e* e( p! b1 s更正无错误代码:. R- s( [0 w  n) t# Q- @* g
int a=(7+5);
3 J. z# A, M8 g( qif (a<7)7 j" u% J8 X4 H/ W. y! }
{# e: K$ l8 s8 u3 Y" r$ [/ }/ m0 o
a=7;
4 ?# R6 y0 s* q, q+ i}
1 |- v/ ^2 \  H0 |更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
3 C" U6 v! [* F' ~错误的参数计数错误:& }  T8 a) v5 I
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。% ^+ k, N+ Q( R- {4 f
有错误的代码:
0 ^6 k  m+ t/ i, Y+ s4 {. t如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同$ j% W' j" U4 l* g
void OnStart()( Q5 e5 C/ W7 M
{
* R; [' o" e; pint example=myVal(10);
" w. x/ G7 @8 q$ b/ V4 q. C}
7 `# j8 W  Z* z. a. p3 f6 e//+------------------------------------------------------------------+
; Y  h+ N- O% `) c3 r* Xint myVal(int a, int b): Q4 v2 r, j- I7 ]* k* z
{; F2 l# ?% n9 e- b
return a+b;
& c! A# d) w- r4 W6 C}0 |2 O3 c* d; E2 Q% O  t
无错误代码:
( N9 K- l4 T) W/ O. e3 ?$ X为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示, v' x( y/ V) M. O& X/ f
void OnStart()
* d5 b; x4 n* O- ^3 ~# S( e: L{: I* \5 p3 X4 n1 J+ o6 G( P+ e) `
int example=myVal(10,20);3 y5 s. w3 ]( W/ j( e" D) ?; j
}
$ L0 {% M" W4 i" s//+------------------------------------------------------------------+, |2 H5 b" H+ |7 c9 f, k" w/ \. ~
int myVal(int a, int b)" [- p) F6 {! I2 `9 s8 K
{4 H- ^) }6 u! D
return a+b;4 E6 u% d- D' D1 Z5 b3 y- y0 A
}
1 j% t, |  m+ l: t! E7 Q编译此正确代码后,我们不会发现任何错误。
& F8 j, |* A' c7 j2 L某些操作符预期错误:8 {( {& R+ ]. i4 J, Z; p! @. D) L
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。8 |+ h: p( G7 K/ ?0 S9 E' X
有错误的代码:
5 U" [, D7 E$ cint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-17 22:30 , Processed in 0.438693 second(s), 32 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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