私募

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述
! E2 c/ S5 M9 V/ f) _& c6 B$ y( Z作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
& F6 p! }9 ^7 b5 _' i错误) [5 M$ u8 U5 i( C3 O+ g- g
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。- z5 Q' {, U+ L4 t: E5 u
我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。: j$ v- R, g, ^6 P
左括号不平衡错误:
0 l5 Q( P9 G  f当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
: Q  G7 G4 @/ F, o/ a9 X出错的错误代码:* e2 t; v: c4 d% x% j
bool a=7;) j! l) u7 e! _4 k) D2 |
if (a=5
+ q  n3 d1 _) H2 q" Sa=5
* Q! |0 [# E& K9 ]3 }$ G更正无错误代码:
9 k8 t% w8 j; H3 i, Zbool a=7;' h& H7 O" T2 U5 W# O3 f0 D+ C# C  K
if (a=5)/ z" h  w4 J3 k6 V1 S) G) Y
a=5;
2 X/ R, M1 ~2 w5 {& I; a1 F0 h1 ]更正代码后,我们会发现编译时没有错误。* z# R4 \8 v( [
程序意外结束错误:
- Z8 G8 `# i1 _! s有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
4 ]' i$ j6 F) |7 Q. P& R) x3 j9 o出错的错误代码:6 ^& |# _7 p- X8 X( u
void OnStart()$ q" D( I( f+ w" [# _
{
2 d8 p4 s% r/ ?4 Nbool a=7;
' k" J% p0 ~3 O/ m$ w  J) xif (a=5)
+ [# \, m0 M0 v* K7 {7 h$ da=5;; h* n2 X- |/ \  j4 S* ~: U/ J
更正无错误代码:$ i0 O! o; Z  B2 Y8 T
void OnStart()
/ h5 ^  v& I( k$ B9 V6 H{
6 K* W- Q/ C% t5 S- l. Z9 Zbool a=7;" e/ j1 s. E3 I: s) W2 Y
if (a=5)6 e- s* ]3 m( _7 f, u
a=5;# @$ L* M  X  R
}. U: r5 H( w) Z) Q& A9 E  w! J
添加右括号更正代码后,我们会发现代码成功编译没有错误。; W: t2 o5 w6 L
表达式不允许出现在全局范围错误:. z' q( n2 r4 f- F- E* J* @
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
" S- W+ h5 l$ a) [# W5 R$ [出错的错误代码:
% b# t& S9 {" K6 Dint a=(7+5);
4 h6 s: B/ v/ f  J8 e7 Cif (a<7)
. v  _! Z% z7 \a=7;
5 A1 O1 Y, ]- _/ Y}- A0 Q. h/ B3 }# ?  r! Z7 p
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
/ H5 R9 }; Y  h9 E! R0 @+ R' U" Y' B更正无错误代码:1 ]& H! T6 p* y/ h9 F
int a=(7+5);
! I/ v* K0 t* m4 \! nif (a<7)% l# ]+ e# y# i$ m9 K- o! ]
{" l% \7 ^& d6 I. u" U# l6 G
a=7;
6 R; W+ [- l' S# _$ v}
4 O$ y: R4 E1 m2 T( j更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
# Z! h* S+ @( H% p错误的参数计数错误:
6 S* \% w3 p4 b. M当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。* k* s, l; j$ m6 R" W
有错误的代码:; s3 Z& ?7 B. M9 T# C
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
1 b0 H; w* b; K2 _  [void OnStart()" R6 O  O) w" Z9 T3 }0 W* F, P  t$ |
{2 a3 T- B1 Y0 C5 a6 z
int example=myVal(10);; U0 G" B( U) J5 r: _, O
}
% Z- ~/ [" K) S' Y! H//+------------------------------------------------------------------+' M/ D0 V+ P4 ]; q/ N* M6 L
int myVal(int a, int b)9 a1 M& r7 V6 h/ n- C9 e) F& ~
{
4 J, ]4 \1 p7 b) d. b0 Greturn a+b;+ ?0 d6 p2 F* O5 g6 ?& C( H; T% q
}
' }' \& {( w# _5 H无错误代码:
+ P" k& w' b$ |  C- j' g为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示
' U1 [+ m$ A4 d5 B* F3 ?void OnStart()
# ]" s, C% [' a, S3 F. V3 ]{
* k5 ?+ q+ [" b  Uint example=myVal(10,20);+ p; z* y7 [2 P1 U, j! n
}
: j# Q' p+ {1 g( W. w% F//+------------------------------------------------------------------+
, }* E+ @8 w! t5 I1 M+ w) _int myVal(int a, int b)
) w* q% E! C: A$ W* ~% N# K0 ^, o{
% \% Q! O4 y+ a# n- G7 Zreturn a+b;
# h( m! ]. e& m3 p3 R0 m}$ U6 o5 w5 N  v9 H, d
编译此正确代码后,我们不会发现任何错误。
. w( r( _4 T0 G某些操作符预期错误:
. [4 J8 F) \" V4 ~( n当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。$ @! |: H  V! s$ Z: f& U9 E9 q& A1 G* q
有错误的代码:" I+ f1 X) M# H( J1 H7 {
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-11 03:06 , Processed in 0.467869 second(s), 32 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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