私募网

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述* N# A7 R- K& X8 W' R
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅3 [: _+ V0 l) }; R+ f0 J+ G- Z
错误
# H# f9 [  r5 I, O在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
% I: h' ~! y; F6 A, l: Q2 W我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
1 m6 ?2 D7 o1 e左括号不平衡错误:, @+ [6 |+ e  L! \- J" A
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。; R( P$ k1 r" r/ Z: q
出错的错误代码:
. |8 ]8 [, J! x: K3 }0 Q3 wbool a=7;( |: a+ }" j* Q' a) Z* `
if (a=5
3 g/ W8 T8 U; `( `% fa=5$ I: J, \  u9 T: ^8 k
更正无错误代码:/ t7 Q# t+ D$ v7 O+ r( N
bool a=7;
0 M! I" x% T: Q* Cif (a=5)
! O5 A1 v5 p  j9 d9 ka=5;: H( l; Y: G3 a( L4 H! W
更正代码后,我们会发现编译时没有错误。
6 E$ n+ g/ I' Q' O, J程序意外结束错误:
2 d& U$ V) }3 G7 e5 Q有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。% J6 ~: U9 w/ Z: C7 w$ B
出错的错误代码:
' f5 I% g6 {5 y2 n. tvoid OnStart()- p; |3 E+ y( F
{; {& J5 j6 m. s$ {
bool a=7;& X4 {# E$ ~  }# N
if (a=5)% O6 H- \+ j* n' v5 O: }& m' P
a=5;
  `  y% g2 b9 T+ N# t) i6 G更正无错误代码:  f, O3 N9 l; E+ z
void OnStart()
2 O( |* ^, P+ a( S+ l( F{* X$ o* m4 {8 p/ x9 Z
bool a=7;1 [2 _+ L: \) W' j
if (a=5)5 R; F" X: d! `) t* s# N# M
a=5;, I' C$ F* u/ l7 d8 Q& E
}
4 E4 {- E5 K, y1 {" e4 O% d0 S* o添加右括号更正代码后,我们会发现代码成功编译没有错误。' p: ], [$ B2 ^
表达式不允许出现在全局范围错误:
. S6 ]1 C' b% _$ X% M当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
" H! e% Q: v3 K. U& a出错的错误代码:4 d% \0 t9 G: R! H( \' B4 I
int a=(7+5);
' Q, J1 A, O- @. {- K$ d5 \if (a<7)
) S/ G$ Z: [3 T& S+ @a=7;3 l  x' }" g8 t  R! Y2 N! ^' C
}
8 {9 R/ E7 q2 K) `" P在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。- \! p; v4 I/ z' l& g
更正无错误代码:
% q, w/ B) j$ w9 sint a=(7+5);! ^* U9 I3 w& x( S! j& s
if (a<7)% A6 J- n' j& R. J% Z' U7 a  O) {
{
4 V4 x3 y* u% r; [5 B, \a=7;9 r! |2 o0 k: r6 l' e. v' a) s! b
}" {2 l* y; U0 ]/ U
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
9 H% O$ u& i$ z+ o0 A错误的参数计数错误:4 E8 R- ?$ D+ @& ^& ~
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。
' q% E) D6 i9 e8 X6 ]6 h有错误的代码:1 H. X9 {, r0 a( V. K7 W3 a
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
$ r$ B0 i& E3 W# evoid OnStart()
* S9 x5 M  ?1 s, S4 B3 ]7 q9 f{2 [0 a5 w9 ^, V
int example=myVal(10);
, d1 X+ [8 \# c( A5 W' a4 H/ {0 n}: h0 B4 _6 N# T1 g  j2 X
//+------------------------------------------------------------------+# w, F7 A! y( [. |4 g/ r
int myVal(int a, int b)
0 `: y7 H, j' W0 l# m, n0 S, ]- ^{. f$ N$ |- Q  F8 p7 Z: ]: S+ c. F
return a+b;
# Z- C" r; @5 ~# @}
. v' U6 B: ]6 }无错误代码:
. S# F, [- R; }3 _- y% ^* A' ^" b为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示. ^$ F- u. z  m1 a; [& Y4 H  s/ E- ^
void OnStart()4 v: B2 L( C; [; e& d$ H
{
; e0 j$ l. H9 b# j$ t8 X6 {int example=myVal(10,20);$ l2 K: V, u2 v* S# R4 N0 u
}& B# B9 a. S, J0 Q% y3 r
//+------------------------------------------------------------------+& y0 i7 r: z; l1 C. q9 ^
int myVal(int a, int b)" s( i+ ~% r8 O' V4 u$ B7 _. i
{
( ~7 t2 `. {$ w$ Y, p* h0 jreturn a+b;
& o: ^8 _! m+ F# e' Q* O}
7 J( j1 z& Z; ]- W  i0 k- s编译此正确代码后,我们不会发现任何错误。
9 C0 d& ~% D# E5 Z* {某些操作符预期错误:/ t% X: h* ]9 ^5 ^$ K! }
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。$ B9 s5 B4 E5 k8 `0 B; U) o
有错误的代码:
  Q6 S# g8 R- }0 c3 [9 v* Bint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 18:23 , Processed in 0.431812 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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