四目观天下

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述+ ~. v  H+ K5 ~; o$ g( c
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
; O8 N' i4 P: e; ?5 \7 N错误5 r& e" N% i- T3 s: |' z
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
/ n' [. i$ e# ?4 b8 i我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
9 {* t/ }$ p2 ]5 j5 {! l左括号不平衡错误:8 s" u4 a5 A7 T* w. R' ^' l( H
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
* {4 ?  X! ~  p2 w2 U& \1 f& k出错的错误代码:2 r/ z6 l: C  n" ]# E% g. S/ }/ h
bool a=7;
- v5 M/ w+ m! ]! j5 ^4 C4 ]4 Zif (a=5
- l0 N' e% v! {a=5, |' W, y3 b2 S" S& f
更正无错误代码:( X% K. y7 x8 E3 }- J
bool a=7;
7 F8 p; f$ R) ?8 W. R( q# Fif (a=5)
8 U0 q* W8 U$ m1 X0 ?, z) @' U. j3 ka=5;
- F; s5 k9 t0 P) }& m4 w更正代码后,我们会发现编译时没有错误。
  J9 M& H6 |9 E" s7 l$ o7 r9 U程序意外结束错误:
9 O+ D$ }" {5 c2 v/ j有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。  t# ~4 O+ @6 x2 C9 E
出错的错误代码:$ k$ E- P$ f" f2 F/ r8 h4 n
void OnStart()1 i2 |. q5 s6 K3 E
{
" f* k. A5 \0 ibool a=7;$ T4 R7 S+ O6 `9 }! \
if (a=5)
+ S# E2 r6 l* k0 c8 B) za=5;8 V. M( s6 d6 O" Z7 d
更正无错误代码:" `( i4 f. e/ M1 T4 I. ]$ k
void OnStart()
- r0 J% b9 A: H{! I( K" O( ?- E6 Z: ^6 \9 r- h
bool a=7;/ q) M$ l  d( \7 z8 Z# }" t7 {
if (a=5)
3 a) q5 ?% z" c7 Sa=5;
& K3 F4 q, [! E6 b}
8 s- S8 U5 f4 ^' X) f2 |1 i' P) u添加右括号更正代码后,我们会发现代码成功编译没有错误。9 y6 A, n4 ^/ |0 F
表达式不允许出现在全局范围错误:5 \8 R9 w/ g! h
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。: @9 D7 r7 Y3 D; @% {
出错的错误代码:
8 t; e9 b5 Z+ l& N9 }; _, _7 @+ [int a=(7+5);+ V9 P8 |/ P2 @5 d" H3 d
if (a<7)- `1 ~% e( w% |: `- u7 k
a=7;# W. E, g& h$ U$ L8 q2 c4 P( D6 {
}8 ~/ ~6 M+ Y1 a
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。! R/ M# k4 {$ e1 l
更正无错误代码:
( ?* K: O% _/ y( Gint a=(7+5);
1 x5 Y( ^0 Q' H9 H& t& aif (a<7)+ l8 N; m: l7 @, a' g$ y# A
{
+ f7 A: V0 Q" S) [* t3 ~) X4 Ta=7;
0 \6 V) t3 @5 ^7 V0 ?}. j7 w; W, [" Q# R' N
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
5 ]! \5 y: A5 g. |3 e错误的参数计数错误:5 c4 {1 Y# _' i8 e) N. L
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。8 j" r* Y! ]# x% D+ U
有错误的代码:
2 T# y1 E/ J# K' G6 x# V0 X  }3 p1 J如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
. k9 X( q3 N" a4 }void OnStart()
" G7 c' d! ^/ h% c6 K, d* q3 n{0 D+ L2 `( f7 _5 r2 g
int example=myVal(10);6 @" U+ K3 J2 {: m/ ?# [. m/ a
}6 H, h6 o5 ^& s6 L$ I& z, I
//+------------------------------------------------------------------+0 K( ?+ }/ p- S& f7 b2 x
int myVal(int a, int b)
# D9 Z/ z* S) Q3 Y9 e% M{
- ^7 I, O$ V6 e0 ?! [' l" I6 lreturn a+b;
0 Q: l: U+ r# A9 |}
- {/ s' k' \6 x, H$ u. z) z/ ?& D$ X无错误代码:# ?) E& E/ n+ a; J1 g' i
为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示; m7 [# E# ?, r1 i7 n
void OnStart()
; z& @+ Y2 I" Q% S( K! u{
5 O- P# Q% k/ T/ P2 H6 L! aint example=myVal(10,20);: J, x# Z6 ]* L( v
}* o% C9 n" \+ P+ b/ M
//+------------------------------------------------------------------+& r: _" B8 p4 x1 q
int myVal(int a, int b)
9 z/ x& ?' x2 }, {$ a# l0 U{5 J3 b' C; B: _/ x3 N
return a+b;
0 ?$ M* d( X: |. y+ w6 o}" A" |) U( A& z2 Z- K4 o- J
编译此正确代码后,我们不会发现任何错误。
/ B! A( i" w4 G) E3 i某些操作符预期错误:
1 F6 c# K3 h6 E; P4 r; e当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。
! B9 y; s5 n- r2 b2 h* F. ^有错误的代码:5 h5 h; m3 {& ], y3 S
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-30 01:33 , Processed in 5.580748 second(s), 31 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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