四目观天下

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述
- |0 K; s+ }* }0 r作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅
; i2 P% y; r+ V8 z$ U8 }: d+ F/ ^错误
0 ~5 B! `+ x% e/ N: o5 X8 N在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
# d5 e: y3 ~- H9 y3 e我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
) E9 E$ `$ ~( z# ^左括号不平衡错误:/ N  E1 Y8 x6 Z( _9 Z8 H
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。
! [5 P+ S: }. a: j1 S1 v: B* V: b出错的错误代码:
1 W" ?1 `) T/ |; U+ Ybool a=7;
' ?- _1 G7 L; U( K9 @+ Q' g# zif (a=5
7 W  s+ `( y- K, _! W5 |8 P: Xa=50 N/ g) e% U4 a! k6 e2 b+ \
更正无错误代码:, b0 X5 |! p% H1 G
bool a=7;$ h* Q) ]3 S$ v6 F2 |. `
if (a=5)
/ U& M: |( T9 f0 ~7 {, i) O$ O. ~a=5;  g! R2 f! {& H# S9 a( \
更正代码后,我们会发现编译时没有错误。. W$ w9 r  z$ G* T
程序意外结束错误:9 V" H; B" e  _. p% Z: z
有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
7 z/ }% e/ h$ L4 D! n6 \8 r# L/ V出错的错误代码:/ D7 m+ r0 o# p) w0 h0 o( z
void OnStart()* n! p2 k1 O7 P. p5 I; U
{( q; Q  n  {: T! x4 y6 T7 X" O
bool a=7;$ D5 \0 i3 G' ]: F
if (a=5). C- ~) d. J' P3 b1 A3 r, z
a=5;
2 X* x6 K1 q7 z, q' Q5 g5 C更正无错误代码:
( t9 Y- y5 h3 u! m) _void OnStart()
* c4 x5 t. E6 ]7 K* {7 a{
7 g" o, p; f* u8 W7 Ubool a=7;
0 G$ o1 W1 e( a9 r, i4 zif (a=5)* s5 R3 B) C0 n2 \
a=5;! s( \; O7 r5 g2 R: d: H" }
}/ W2 |3 t0 N* s
添加右括号更正代码后,我们会发现代码成功编译没有错误。* M5 N+ }8 F- h- _
表达式不允许出现在全局范围错误:
# o1 y6 S' m' Z$ x7 M3 x* y0 E当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
# q+ U# g0 Y) x; k出错的错误代码:
4 C* u* X+ i$ P5 J( _0 R% f( Jint a=(7+5);
% M& c. U! y; d  f4 E! {) tif (a<7)
, Z' U+ }+ Y6 `- C+ A! K& Y* [a=7;6 S0 {6 b5 R: `. ?
}) p' l, V5 B) Z. a2 e  k. P
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
# B6 A' ]. b' Q0 u& F0 d1 h9 x更正无错误代码:
! E  [2 D+ c4 X0 J( |4 Q. L' Yint a=(7+5);
2 p' l: c8 W) L; T* h8 I" E% Yif (a<7)
$ B' O) Q( c. s9 m; U- `  A4 h# _2 M{6 C% v. r: n, S2 k1 g
a=7;+ c% B/ L: G( V4 Z2 V
}
, |5 T1 C3 X+ x# }; x更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。
  _+ V: a6 y( T8 E错误的参数计数错误:) a. y8 B$ D% t/ y! ~3 _& u( f$ S
当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。  ^5 m4 S5 O% a! C/ ]
有错误的代码:3 K* g; f# S9 y# o/ Q7 ^
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
2 ^8 ~( G* H  X1 wvoid OnStart()
7 v7 `) B$ ~* d{
# ^0 z9 a8 ~/ J' M3 ~( z4 Mint example=myVal(10);
2 Z1 U3 g; o* v9 V}% @! V0 v$ y4 c4 W- v1 T6 E( [6 N* V
//+------------------------------------------------------------------+
7 _- ~' J& N8 @7 r4 w( x0 P$ }) eint myVal(int a, int b)
  `2 c; ?, O" G- z- Y+ }" X{
" Q' ?) l  I) Z3 T! S- B) treturn a+b;3 R; N# w8 o' N; d/ L- T
}  D' ^' f& Y/ D2 j+ z. j9 _
无错误代码:
$ \3 D" A2 r' ]1 X为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示+ ]- O6 k: Z7 G! }. Q: F
void OnStart()
, S  W' ~5 v* n/ {1 M* w{
1 v; o& F& D, Tint example=myVal(10,20);
; k3 H6 R6 P: D8 }* H. C}
" M: D7 H( B3 `& d//+------------------------------------------------------------------+
- m9 p" H3 ]4 \+ q8 }int myVal(int a, int b)
; }) }2 j, [7 }3 R1 k6 @5 Z5 i{) f# D- q' [8 q2 t' C( L4 C, _6 [9 v. \
return a+b;9 f* R) w2 D* J3 Q& e
}
* E! q) D" V; r( ^& W* ^8 v( N编译此正确代码后,我们不会发现任何错误。
2 ?! m* F; A+ e0 y5 }4 i2 L某些操作符预期错误:7 q" x6 j4 `: e/ |
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。  s. ?" P+ p, m9 R/ x- ?% Q5 L
有错误的代码:
% P+ Q/ L5 y# C; n. K; iint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-24 03:34 , Processed in 1.427734 second(s), 32 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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