四目观天下

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述4 z" w8 e; m1 f8 f; @! w' ^
作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅6 |6 o7 A4 P$ Y; t9 Q% z9 E% u  P/ M) |2 s
错误
: e' A5 L3 F' g, c) A2 e在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。, v% n. s/ B, ?- s; J# H( Q& _
我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。* I, V) J3 I9 s! U; s8 F% A, N+ q7 e
左括号不平衡错误:6 A) I, {2 X6 W0 `3 {7 P
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。7 s; q* G+ I/ S# w
出错的错误代码:) g& t# `" o1 O4 }# f5 s
bool a=7;. M5 `7 R3 s& A5 y
if (a=5& j! k5 b+ x0 M- y6 i
a=5$ s+ J  L# F& |* U8 a/ ?
更正无错误代码:9 R7 k, ]0 ~" J% W) a
bool a=7;
! C- n4 U6 X6 d; q2 _if (a=5)
8 O& m. Q2 b! p4 Ga=5;6 b# R" @3 q! o! e
更正代码后,我们会发现编译时没有错误。
' N& N: V( r; ^9 V# @6 @  U5 }程序意外结束错误:
( L' W$ C$ j2 C& \  C' m5 P3 T4 X# q( o有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
4 a3 B/ ]  r, Z- _出错的错误代码:5 I+ M, z. P7 y5 J
void OnStart()# J1 k& a, R5 N0 c! t# a' V
{
1 F) _1 L. K1 A! `" {bool a=7;
1 {% J1 x/ a: v5 ~" i+ F6 mif (a=5)
) O' P0 T1 o2 Y" L) e3 sa=5;* s) E9 Q% h; [- K
更正无错误代码:- C7 F6 L! g) k8 P' D
void OnStart()
* a$ t  \* L; ~{  D0 o( t0 o- s6 W
bool a=7;$ G4 m$ k# z0 G. y( [
if (a=5)3 [- j- d, K5 o7 S" B: ~9 N1 n
a=5;. ~+ m9 O& C# c' x5 J4 W( [
}( W' M& R/ B3 w" {  i. g4 u# C
添加右括号更正代码后,我们会发现代码成功编译没有错误。
3 ~2 e, E- l+ I1 H( `* }1 [表达式不允许出现在全局范围错误:  ^$ J+ ?" d  s
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
; R* X  X% q6 h8 `. J2 k% N( R/ I出错的错误代码:* @: k& J& \2 J& D
int a=(7+5);
: X! ~& Q5 w, I- i; Dif (a<7)1 G& t7 P3 y& ~) w. @
a=7;
: V0 G9 j$ ~2 j8 a}  d7 e* R: f/ J- E1 x0 z
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
/ P7 W: w5 Q2 x更正无错误代码:4 w) u4 l7 d" j0 w& Y! Q; }
int a=(7+5);
, x! v: R8 [+ f& \4 g  m' {/ {& Dif (a<7)/ V/ W& J3 Q2 O- ]& J* o" w
{1 h6 y: a$ ~: B: [( R, I$ W
a=7;
3 L. s1 Z& s4 A5 E}
5 D- d* W9 }+ @3 _  t' T# d更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。6 M. M8 w. s, D. W; c2 ^
错误的参数计数错误:
, r0 E8 q$ M3 u' y当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。, \8 W  x. i! R% G9 b1 \  W
有错误的代码:% F9 S, J; A7 A( i4 Y' d+ V
如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同
4 n3 I. r1 h4 V( w, Evoid OnStart()" j" H* F! D5 P) y& t
{3 E+ h6 K' S8 l* Y" M( l
int example=myVal(10);
  n5 Z0 m/ E; w7 f}
) y4 m9 i1 H0 q/ P0 L$ h" f; w0 x//+------------------------------------------------------------------+
5 v3 {/ f5 G2 c  J7 T. oint myVal(int a, int b)& X% |1 K" u8 B0 }# H# G0 M8 A
{
$ y0 J1 K+ a( \7 w4 Z* g: Oreturn a+b;6 k4 F9 j9 R! p* n, k
}
6 A# _4 u! V* M# y( L& ~无错误代码:
" |/ f5 R0 J! m: w( G为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示$ x0 E4 m: h% e6 I) r$ M+ x
void OnStart()& Q4 o  u3 J# f
{
7 z+ W8 Q5 |, p5 N8 m6 `int example=myVal(10,20);
' Z' A  G" w$ U4 |3 L}! @- K9 Z" Y0 V9 `7 K
//+------------------------------------------------------------------+. D. T+ y/ N: Y7 p! C
int myVal(int a, int b)
+ o6 h) q, e. y{% q- i2 u. L6 O2 H3 k) b) b
return a+b;
: `- k! R  b+ D}/ O0 l; w) s& U
编译此正确代码后,我们不会发现任何错误。& B. h" w9 K. ]1 ~+ {
某些操作符预期错误:3 D7 l, B: W) a+ k
当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。% ?8 h' _/ U6 S1 g5 B
有错误的代码:
, F4 \3 b; a3 y" q1 sint a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-24 19:00 , Processed in 0.403888 second(s), 32 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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