私募

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述' ]2 e- t& M6 n8 o
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅) _5 v6 C# }6 Y* A
错误
7 q/ c) }  l0 {9 H在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
9 e6 q; b2 t1 @8 w7 |, E我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。( k7 o* M& u9 J
左括号不平衡错误:) f) c$ i% Q- u: v! D
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
. g* G/ y4 F2 V4 j出错的错误代码:
) J" q; y- J0 s# @* ~8 Cbool a=7;/ p' M: ^/ O, d5 c7 |
if (a=51 r& H' e' `+ S+ A7 E2 b4 [
a=5
& E! z; k! ^6 M: Y1 y更正无错误代码:2 b) F% _2 @# G, f. P4 H
bool a=7;# O! i2 j% `0 @1 Q
if (a=5)
* D" K" _# t  \% y* }a=5;9 A4 G7 F! y2 r( R1 h
更正代码后,我们会发现编译时没有错误。
% A  x4 t, y# `/ k! Q& Y8 |程序意外结束错误:2 B7 [& g) r* ~) ?- V- o
有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
+ q& d2 j3 j2 F7 W出错的错误代码:
3 {9 F& j4 E2 I5 C$ G3 ^0 W5 i5 @+ Ovoid OnStart()
. w( S% h- _& l1 z6 V& z& o{4 h! @! k3 o& i9 c  ^$ v+ f4 k
bool a=7;
: m% ~( l- q/ _1 P3 M4 aif (a=5)
# m1 z2 g2 d( p9 C4 D- U3 \a=5;  E2 n' b& `0 w7 W! D0 _" y$ u
更正无错误代码:' v9 x3 g" P! L. j% ]: S
void OnStart()3 G: w  O0 X- D3 N% M
{
3 F; W8 v! k, D5 {# }: i+ R- Kbool a=7;9 C- S# H' t( U  W
if (a=5)  i* i( ~3 \. ~5 O$ t! l0 R  r( E
a=5;6 ?+ l0 {  ~& W, W& Q4 p* n
}5 L4 i6 R3 F4 w% d8 k
添加右括号更正代码后,我们会发现代码成功编译没有错误。( ~6 ^9 P( W( s* Y) D+ D
表达式不允许出现在全局范围错误:, u& W" d$ r7 f6 V! }
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
7 f6 i$ M0 I4 N出错的错误代码:% }7 U- }" |: [2 c4 R, {
int a=(7+5);$ l6 ^0 K7 R7 J- W+ O
if (a<7): }+ v* L8 w, [  Q8 X
a=7;
+ t0 |+ ?6 E/ ]  I/ O( _" n}: c/ d3 d% N( Q! [( h% q
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。1 S$ B9 W$ U: I# u) O
更正无错误代码:0 l, b8 b( q" s: {6 {5 ~
int a=(7+5);* Z, [, K: Q6 ^' [1 e: w
if (a<7)# H8 h5 |. z8 O) C/ E* ^2 f0 R
{
) @- W0 n3 ?. ^- ]2 J  V5 Sa=7;) [: B/ O2 j3 v" E7 O9 O: X  O+ A
}
8 \5 O: ^8 t- `更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
; ^4 u% v8 n' G9 h( k; A1 P* t4 K错误的参数计数错误:
% K9 L" k" U' Z; }当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。
- [$ t5 y4 Z* b* G5 X3 Z( u有错误的代码:* c4 b4 ^) w$ q7 h+ U
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同4 v9 Q4 D6 L, @+ y/ j1 ~
void OnStart()/ K; j/ c6 ~( C, G, e7 h
{
3 N" u9 `) ]- o4 q( F/ U, _int example=myVal(10);5 e, c; j, Z* y
}
% P" t3 f1 p: d6 h# O2 t//+------------------------------------------------------------------+. \/ ?( v  b$ w# t/ e7 V
int myVal(int a, int b)' F/ [. f" Y4 `% H* p: ?& w9 v* t4 a
{* ?" U( D! t. P+ Y
return a+b;0 z5 M( I8 T9 W
}
6 G, q7 R5 Q& Y8 C无错误代码:/ C; p( C2 d, q/ R& |
为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示
' h, ~& w2 U' g5 k+ Y. nvoid OnStart()
. v6 r* E  y' c- E1 w+ W{" p5 [+ ~! X+ T' ?6 [, N
int example=myVal(10,20);0 `5 `- ?3 y8 X- U
}+ u- _8 Q) k5 d! j2 m! Z/ t  N5 H
//+------------------------------------------------------------------+
. X0 [/ v; U8 {9 I2 ]" x$ p9 D' zint myVal(int a, int b)
8 D: j$ ]" R& H. s3 l{8 L5 ~6 ~8 Q$ P
return a+b;9 y7 U# F- X1 w  d8 O
}# G# z# f! W4 z% W. Q
编译此正确代码后,我们不会发现任何错误。
: V8 {9 J1 [" c% _3 y) R某些操作符预期错误:
5 g) o# |& \5 J0 }' ]# B! X5 b! {当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。1 C+ f5 u& }: \& z8 L
有错误的代码:
% L7 M# F2 _; a* bint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-27 11:02 , Processed in 0.349772 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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