私募网

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

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

[复制链接]
发表于 2024-4-3 08:34:47 | 显示全部楼层 |阅读模式
概述
8 J/ w0 q# ?. L# {9 k作为 MQL5 程序员或开发人员,我们发现我们需要很好地理解和使用策略测试器,才能获得有效的结果。 通过使用这款颇具价值的工具,我们可以获得有关我们所创建 MQL5 程序的性能的宝贵认知,这对获得更好的交易结果颇具影响。 故此,我们发现在进行测试之前,我们需要充分了解重要的主题,例如处理所有错误类型,因为作为开发人员,我们犯糊涂导致出错是很正常的。 我们还需要深刻理解的另一个主题是调试,它让我们以交互方式执行我们创建的程序。 然后,我们来到最重要和最有价值的工具,即策略测试器,用于测试和评估我们创建的程序,其功能比 MetaTrader 4 版本的更有趣。 因此,在本文中,学习使用 MQL5 策略测试器的最重要方面会是一次了不起的学习之旅' O" F) V7 _4 ?. Y4 w/ \; W
错误8 Z8 {  c% d; {& ?7 I
在本主题中,我们将学习在创建、执行和运行 MQL5 程序时可能发现的错误。 理解这个主题的一个要点是,MQL5 会正确报告这些错误,但如果我们不知道这些错误意味着什么,或者在程序的哪个阶段,相较于我们已经知道它们的含义,我们就要花费更多的时间来处理或解决它们。
3 f- V3 D1 K4 m1 M" R+ H( ?1 O我们将根据我们在 MQL5 程序上的工作阶段来讲述这个主题,在我们编写代码时,可能会遇到错误和警告,即编译错误和警告。 我们在执行 MQL5 程序时也可能会遇到运行时错误,当我们的 MQL5 程序尝试交易时,我们也可能会遇到其它类型的错误,即交易服务器错误。
! A( I5 g; V4 ]  F/ Y1 ^左括号不平衡错误:! [7 H, v! n4 }
当我们缺少右括号、或多用了额外的右括号时,就会发生此类错误。 我们可以通过以下示例发现该错误。0 k) G" S0 J; W6 @
出错的错误代码:
* c7 n6 U3 P. \+ U1 s6 Xbool a=7;
5 s4 U7 T8 A# `if (a=5" A6 K6 I6 E7 v% Y
a=5  S1 l5 j) `2 P$ m, Q( g* `0 m% Y
更正无错误代码:
1 v" Q2 U- ]' B5 P/ \6 nbool a=7;
  Q% S) O5 O% j2 D+ {if (a=5)3 _# B! P& Z8 r
a=5;& k7 s3 \$ O+ l# S% Y* p1 h
更正代码后,我们会发现编译时没有错误。  o: L8 B! C! w0 c* x& H; E- y7 z# u
程序意外结束错误:
& t) M; ~# v2 k# L# ?有时我们在代码中遗漏了一个右括号,继而发生意外的程序结束错误,我们必须检查我们的代码,查看需要添加的内容,或者我们需要确保每个左括号匹配一个右括号来解决此错误。 下面是该代码的示例。
0 A# F$ F; D7 P: z! \! q5 \( r; x出错的错误代码:# e- W: }2 a  x" Z1 |$ N
void OnStart()
- G! ]: C! X4 t/ \4 `. v{; p8 ]4 ~# |+ t! Y5 B3 F
bool a=7;3 ]4 v+ j) \: L$ z- l9 ^
if (a=5)
6 c4 k" y2 w. b4 H. W) J; _4 Xa=5;
6 W/ t% D- ?# m0 E( A/ A( [: C- c更正无错误代码:
$ b+ @( _; x3 i6 z: Dvoid OnStart()
0 _% C- I( _1 p6 {% A! ~) |{
- L& a% w' g! W9 Y! ^bool a=7;+ I1 v& T6 m2 ^8 U( {
if (a=5)3 S7 `5 s& \' S+ }& g4 I" L: x* Q
a=5;( s, T4 v+ }) Y1 A4 D
}! Y$ b# D5 [/ o) L
添加右括号更正代码后,我们会发现代码成功编译没有错误。& U9 [- v3 L: W, N( w( J2 H
表达式不允许出现在全局范围错误:6 ^' O5 P4 M2 n# _
当我们在复合运算符中缺少左括号时,就会发生该错误,或者当我们在特定函数范围之外编写语句或表达式时,可能会发生该错误,因为我们只能在函数范围内使用表达式。 以下示例示意此类错误。
8 F0 Z" t: ]/ E1 K# o出错的错误代码:% C3 ^" {2 |2 i
int a=(7+5);7 a  n* Z  v* z1 h$ m# B( C
if (a<7)8 j0 m/ e' D0 u
a=7;
- B2 H! @+ e( \2 C}4 }( m( K* Y" I
在前面的代码中,我们遗漏了与(})配对的起始({),故系统报告 “表达式不允许出现在全局范围” 错误。 以下是 “错误” 选项卡中的错误。
; W6 p. P; j/ }) I. s! p, p更正无错误代码:
4 J3 d& _( T- n- X( ~" J6 v0 |5 {int a=(7+5);! m. `, l& [% f2 S( L
if (a<7)
& N  z5 d% u/ h5 u/ k{) b! H! C- \7 B) H! R; y( k
a=7;
9 a: g9 e2 p! N& `0 y}: e# M' W4 g+ b
更正代码后,与前面的代码模块相同,我们会发现代码编译后没有任何错误。" |( d1 A  k0 q! X2 h
错误的参数计数错误:
5 T6 I1 Y% k0 {- q, \% y当我们用到拥有指定参数的特定函数时,若我们未正确指定这些参数,意即或多或少,我们会体验到这种类型的错误代码。 如果我们使用预定义的函数或我们创建的函数,则会出现此错误。 以下是该错误的示例。
( i; [4 A' u# ?) F% n+ [有错误的代码:
+ f8 y; s# e8 E7 J/ t" D: b如果我们创建了一个 “myVal” 函数,返回两个整数值求和的结果,这意味着该函数中有两个参数? 故此,当我们调用此函数时传递个数的参数时,我们将得到此类错误,其与以下代码相同8 m+ H/ [* y* ]2 ^0 h
void OnStart()
# a- d$ E! c$ s$ W7 j1 n9 `1 y{
4 o) \! _; X  v- w$ _; \# c. X- Dint example=myVal(10);& J! `' p. B9 F1 p& V+ E) K
}! W& ?" k! x, A; S
//+------------------------------------------------------------------+; q* T7 }: s! g
int myVal(int a, int b)1 j6 y- i9 z; j" c! }- C
{- {& ]2 N! `# ^5 P! X. F% D5 @
return a+b;+ @% c' t" H; ~( i: S% g5 @
}8 Y, _0 Z, D, ^6 c9 |+ p4 ^
无错误代码:
2 d5 L7 D9 M, M# C; j  F2 ?, F7 B为了正确编写此代码,我们需要为这个创建的函数传递相应个数的参数,如下所示' B, x+ [6 O$ x4 w6 L- F
void OnStart()
2 i1 l# R' @7 y1 Q* C8 f/ l* @2 }{  q6 d9 a7 b: o% }: g. R
int example=myVal(10,20);
$ C& V" P2 y& a* s$ [}
* l, ~. L; q2 O% F$ K" B//+------------------------------------------------------------------+" Z( ]5 Y& J- O! _
int myVal(int a, int b). J, Q9 T6 D# o9 N% ^
{) `; ?% \/ W3 c# Q: \# Q4 x
return a+b;
5 H- b' J; [( Q' P' N}; q7 t- n- p: y' Y# [
编译此正确代码后,我们不会发现任何错误。
% X& ]5 u" K3 f( V. l* {/ D% D某些操作符预期错误:
3 K$ }8 }* r. E  p- l0 n* c当我们在特定位置完全遗漏或放错操作符时,我们就会遇到这种类型的错误。 以下是该类错误的示例。
# i9 V# a) o2 q, g" ~/ {) F有错误的代码:+ O! q. H1 C0 O8 v
int a= 7 10;
http://www.simu001.cn/x287954x1x1.html
最好的私募社区 | 第一私募论坛 | http://www.simu001.cn

精彩推荐

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-18 21:07 , Processed in 0.442367 second(s), 32 queries .

Powered by www.simu001.cn X3.4

Copyright © 2001-2021, Tencent Cloud.

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