私募

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述0 _2 S8 W" V' D9 V2 o, X
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅; U9 @0 a' I5 o  @  T
错误$ y) k( \! M% X% C* [: @6 H
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。$ r) @6 d' o5 s5 F0 E
我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
8 [: y. G" e6 B5 R% N. m左括号不平衡错误:# W: R& g; P! I2 K; o
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。! Z/ R$ N. X4 T8 k& i; }
出错的错误代码:
) u. B* ~* s# ibool a=7;
6 F, U' w+ R8 g$ \  w: B6 x$ bif (a=5
: G3 L( [% I/ x1 Da=5$ e5 M- r2 H& W) j+ ]5 m
更正无错误代码:6 {9 ]1 X1 C; j5 r) w. S* A
bool a=7;0 O: z  J9 d5 }" k; B* R+ \
if (a=5)0 v: N) V, E% E5 l) `
a=5;
7 W  A! N4 U. O4 ?7 h更正代码后,我们会发现编译时没有错误。  w3 ?8 m  X3 ?* L  f' Q; `* ~
程序意外结束错误:7 L. c/ N5 Y- g4 y
有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。" X/ s1 j& V2 e
出错的错误代码:' H, ]( Y: N: _5 ^+ a; A
void OnStart()- m0 F0 W4 j4 g* }
{
" m: b) Y3 R8 b8 b9 c- sbool a=7;
( }- U7 {" j: z! w8 Y7 U) M+ Pif (a=5)( B' m1 V5 u# R* o* C; P+ u; T+ d. F
a=5;) d" ~) t' U/ U6 O5 q$ ^
更正无错误代码:
5 K9 ?+ p1 Z2 |2 Qvoid OnStart()
* w7 }1 P3 b2 _9 A" F: m$ S# W0 f{9 d; s) [7 D3 L2 v! [
bool a=7;7 b( m3 h, S, ?+ ^' E" J! ?
if (a=5)
/ ^6 b+ v4 m4 I; X" `a=5;$ e" U7 X# j3 {# D4 R: X! P
}8 @" \- v/ z+ m0 `+ z
添加右括号更正代码后,我们会发现代码成功编译没有错误。
/ F8 o0 P$ _8 H& F5 ~0 H表达式不允许出现在全局范围错误:$ P8 b! S) T9 [& f
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。0 U9 X$ \6 m* h: }
出错的错误代码:
1 h& F5 ?3 Y: @! uint a=(7+5);
7 R% A) {1 y5 A5 C: F9 lif (a<7)
- w+ g* I$ g0 Q& Va=7;
" b+ l8 |# N7 [% M. F$ ^7 C+ t}0 z3 J$ C- D7 m/ b( h
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
/ G) w: Y1 Z! F5 i! @6 w更正无错误代码:4 r+ |1 I1 z/ v# d* ^" E3 n& ?
int a=(7+5);
# n0 e" V6 M* Q8 i* h$ ^7 f- v. }if (a<7)/ r$ k& j' `" @' J$ k& |1 N' Y( R4 w
{
1 K( `( i. I. ]. _: u7 h* fa=7;
8 K  p0 {9 u  w, |- u4 m}: A% i1 q5 z) l! O. E
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
7 A, a2 Q7 [$ S错误的参数计数错误:: ?& v6 E5 z- o# U8 \) |' z
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。5 h- o% J: U. k( X3 w" K) p
有错误的代码:
  e2 c3 }+ ]8 P( Q+ z如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同4 v& n2 Y: t, J4 \. u) w# ^3 Y
void OnStart()
* P: U' u5 ?& E7 p" O; w4 ~5 v{
' s1 T) j$ _% l' Gint example=myVal(10);
- t5 {: B" f9 m* L}
( t" g* f! D2 P3 Z  f8 ], C//+------------------------------------------------------------------+
- o- E) V: @5 b7 I& jint myVal(int a, int b)0 f/ h, k2 a  e
{
/ Q& N  D* d2 S# j+ O+ ?return a+b;
, F+ O  `. C; M# D7 S& n}5 H9 J+ i; I  h8 ~5 |0 z
无错误代码:
! a7 |/ W+ _7 ]为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示
1 `4 }- G3 P3 B; ]$ }" t, \void OnStart(). Q$ U' a" `+ s5 w& R6 u6 F, w
{& ]) w8 P( g5 a1 o% R5 E
int example=myVal(10,20);3 w( J5 c! j7 I( D8 u( \
}
; p+ `' _" Y4 ^, e//+------------------------------------------------------------------+
6 o8 c" `5 ^: i% C& F! n# X. xint myVal(int a, int b)
2 Z- _9 w3 u2 I# p{
" r- l% |) J: o' d. |; @) Preturn a+b;
- `! C' r# g5 z" e' T: s5 Z}
% Y- O. c) I7 P7 r2 V' a7 T编译此正确代码后,我们不会发现任何错误。
9 f8 k7 R( g. I# N0 c某些操作符预期错误:' Y" X% N) ~( N9 L; ]6 d% u/ l5 c5 E: J
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。7 f, z! l! {- [2 w) ^0 {5 x( R
有错误的代码:; n* E' ?8 d2 Y, P$ W
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 21:34 , Processed in 0.393440 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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