四目观天下

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述: P+ y$ j% M5 g% y) C( A
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
  X" z2 R: ~6 M; @错误, h7 d* N3 e  N# f( Y
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
! Y* M. b% F& G+ Q0 z! x我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
1 i4 m/ M/ Y; t左括号不平衡错误:
7 l) K& A% e1 b# M* ?/ E& V当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
0 `6 a. q' [6 l1 h( E9 x出错的错误代码:
7 r) Y& K) n5 Z9 ?9 L& Xbool a=7;
% ^. |: u9 _; g- U; A# Kif (a=5' L3 i. ^# A* z0 T  Q. z3 Z( j
a=5) t, P( K" _) v+ o6 b+ b( e
更正无错误代码:! t1 d  y& K7 W: a
bool a=7;; n9 N1 D  x5 q6 P* `6 T
if (a=5)& M0 X* K! p! J4 I2 p
a=5;
6 L% H5 E" s% R更正代码后,我们会发现编译时没有错误。: N; O' m, y+ |" _( C5 Z8 x
程序意外结束错误:+ V- h  ?6 d3 d4 u8 s5 g
有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
5 N( d7 n: s, ~: Q( a3 g  d9 @出错的错误代码:
( I* v* E9 [! d$ D7 ovoid OnStart()1 p/ e' y" y7 ^  v! b+ y
{
/ r$ S% X, ?9 E1 O0 V( Jbool a=7;
2 O. ?5 l& {7 O% z: Pif (a=5)
9 o, [  H; H, n! @; Va=5;
2 Y$ ^0 q* F* s4 W. e' W, W更正无错误代码:" ~4 u/ l7 s8 D, i; g) m
void OnStart()
; B1 H" u: I0 c( z# w{" c6 G5 R1 B5 y1 x7 }; I
bool a=7;& o0 ^1 \6 M/ j; z# W8 S
if (a=5)* S& A2 P3 y2 w. Z/ ^
a=5;& U3 S9 M+ [( k2 ]# U0 [+ S
}7 H$ B9 }: ^7 ?6 I
添加右括号更正代码后,我们会发现代码成功编译没有错误。
' k1 L" F0 [8 t6 D3 Y表达式不允许出现在全局范围错误:  `0 u1 d/ ~0 [7 S4 U
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
& D5 R, B" Y$ ~' b& g+ s3 c* Y出错的错误代码:: C/ Y8 ^5 }3 W6 n6 Q
int a=(7+5);% X' O  C0 l- f- E2 j/ o. p/ {6 l. ]
if (a<7)
/ j' A8 E' Q- Q6 I1 `8 \6 X# Q8 |* Qa=7;
+ V* J" D; c0 Y: |}
% @5 I% o2 g! o* T7 a在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。# F" `1 O' |1 J9 o
更正无错误代码:! d1 x+ g, c2 v$ B3 u. W( w
int a=(7+5);
. D4 }3 M& ?' t8 W3 J  K( gif (a<7): [7 f9 s3 O* W5 x: H0 O$ H
{" l+ t2 t; B8 j! t
a=7;, J0 }6 f- l6 m8 {; V! H! W
}" C) n2 _9 L* m3 a0 g9 W3 |8 |# G
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。4 F. g0 N+ P* N5 ]$ _) |
错误的参数计数错误:( t; [- q+ l. O0 \# j
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。
2 p: |; Z! R* Q+ ^, o& o有错误的代码:6 g/ @. A$ r5 n( `
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同; }% ]6 u! d# ]
void OnStart()6 x3 }+ q6 W0 {6 ]- E. a3 g
{
7 c3 h7 j9 h% ^  e, Wint example=myVal(10);
) T2 j) ~) g+ e  |+ l}: b+ r* a5 Y7 ?/ M# h( F5 C3 q& r: t
//+------------------------------------------------------------------+1 k5 C5 q8 |( |
int myVal(int a, int b)
: v- _1 W5 z- M: G5 o% M6 ~' ~{+ J4 [( O% J; ^7 X$ a) e
return a+b;
7 f; ]  V- i4 I" v& _9 S/ x, T3 J}3 t& f: {/ h3 @4 A
无错误代码:
6 q; w: o* w* b3 J6 _, ?为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示
1 P0 ?8 E7 O5 ^0 gvoid OnStart()9 o. j2 c  t0 P+ L0 {' S$ l: G
{" v5 @: M7 V- m
int example=myVal(10,20);
6 C9 i. X+ V" F7 V( W}# w$ r' T" _4 a% P& G
//+------------------------------------------------------------------+! R8 w* @: ~2 E" O' S! ^
int myVal(int a, int b)9 C0 }+ x  @$ T6 c/ y- {& n; u
{
3 t- S; e1 w6 |' a( x/ ureturn a+b;
+ R  {3 y- `6 Z}* e7 ~% H; S* Y. r+ k/ {9 x
编译此正确代码后,我们不会发现任何错误。
# j8 N6 m: B  K; s" z3 R, ?/ ?某些操作符预期错误:, o' R( Z0 p5 y( s1 Y
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。
% s8 D; ]* D! q  q) g! I( C! _" l" e有错误的代码:
% U, J" ]( M3 S% e& O" cint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-23 15:15 , Processed in 0.439382 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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