MQL4语言编程培训16:MQL4排错技巧
& ?' s: ~( T& p, f
+ P8 o( p ]! M( iMQL4语言编程培训16:MQL4排错技巧" f; v( x2 Z0 s/ m7 e0 a! a8 g; z1 ?
; c+ D. E7 }" R) Q
本课程适合初期MT4编程爱好者学习。# n2 B" _- R, L0 `1 A: b! V. \
全系列23课,深入浅出讲解MT4的编程和基础知识。. J( v# Y4 K' I( z3 b& N
全课程不拘泥与一般的编程授课,采用图文并茂的方式,介绍了相当多的背景和技巧。是目前国内不可多得的MT4授课精品课程。& Z6 n( l, \2 n8 Z+ a
MT4(MetaTrader 4)是全球最流行的外汇,黄金,期货交易平台软件。全球有超过70%的经纪公司和来自全世界三十多个国家的银行选择了它。它最大的特点就是:全球唯一一款支持程序化智能交易的免费的软件。通过学习本课程,可以让外汇黄金期货交易员实现把自己的交易思路变成全自动的智能交易程序。让你实现躺着赚钱的梦想。
% I9 H9 s! P" f1 J3 Q* S1 b- {# Q9 }# R- e/ c: V& X2 Y6 I* C0 N' ^
在客户端程序运行子系统时,执行一个MQL4程序发生了异外情况,其错误代码将被保存下来。对于每一个MQL4程序执行,存在一个特殊的last_error变量。在init()函数运行之前,last_error变量必须重置为零。如果在计算阶段或调用内置函数时发生错误,last_error变量会收到相应的错误代码。存储在这个变量中的值可以用GetLastError()函数访问,之后,last_error变量将重置为零。
5 a' {4 [! f% r6 d. F
! \5 k4 m% c2 S5 ~这里罗列了直接导致程序立即停止运行的关键错误:, D1 Y6 h0 f: e, Z4 ]
8 s/ g& b2 D9 {' n4 U9 b常数 值 描述
J, B H }; B+ WERR_WRONG_FUNCTION_POINTER 4001 在调用内部函数时,发现错误的函数指针3 V9 b; t5 O, l0 W4 W0 o. ?; b
ERR_NO_MEMORY_FOR_CALL_STACK 4003 在调用内部函数时,不能为函数调用堆栈再分配内存, `% i4 P8 ?* u( E3 q4 d* w: j# a
ERR_RECURSIVE_STACK_OVERFLOW 4004 递归调用函数时,数据堆栈溢出
8 R0 i% ^, r1 e9 sERR_NO_MEMORY_FOR_PARAM_STRING 4006 在调用内部函数时,不能为作为函数参数的字符串分配内存
: L9 U! i0 Q8 L% c c) H3 P$ q% c( mERR_NO_MEMORY_FOR_TEMP_STRING 4007 不能为字符串操作分配临时缓冲区9 y' }+ i, l& S3 I4 v# ~
ERR_NO_MEMORY_FOR_ARRAYSTRING 4010 赋值时,不能为数组中字符串重新分配内存
3 k' d3 ]6 Z. A6 IERR_TOO_LONG_STRING 4011 赋值时,太长的字符串被送到服务缓冲区(不能再为服务缓冲区分配内存)! b* P& a0 I+ s! I
ERR_REMAINDER_FROM_ZERO_DIVIDE 4012 余数除0错误
% R! c2 r% x* c+ bERR_ZERO_DIVIDE 4013 除0 错误
# {) I/ m. e; i0 Z6 {ERR_UNKNOWN_COMMAND 4014 无效指令" G y+ u* F! h8 k) j3 C( T
如果在产生致命错误时程序停止了工作,这些错误代码可能被下次启动的程序用GetLastError()函数读取,也可被非初始化函数读取。在程序或非初始化函数开始运行之前,last_error变量不会归零。
+ ?) X; K$ @% A# Q' ]$ v) c0 Q, c! O O0 C, N8 D# ?& @/ ^
这里罗列了调用导入函数时发生的致命错误,这些错误会引起智能交易或自定义指标立即停止启动函数的执行,直到用户重新初始化为止。( w' u$ q t* s; F2 r, F
6 I" e; t$ }; B0 i
常数 值 描述
. j, o$ k" m) l% bERR_CANNOT_LOAD_LIBRARY 4018 调用导入函数时,载入DLL或EX4库发生错误' T$ u3 m$ |( D
ERR_CANNOT_CALL_FUNCTION 4019 调用导入函数时,发现DLL或EX4库不包含被调用函数- t( E6 l) V2 H& j$ F$ C7 o1 R
ERR_DLL_CALLS_NOT_ALLOWED 4017 调用导入DLL函数时,发现禁止DLL导入
, M3 ~! @% b8 i" EERR_EXTERNAL_CALLS_NOT_ALLOWED 4020 调用导入EX4函数时,发现禁止导入外部EX4& C4 G! I1 b1 x0 X" |" s: @+ P
其他错误不中断程序执行。
- y9 @* C* f1 `' v v
6 L) }$ Y ?3 N% _常数 值 描述. @2 @+ x+ h! z2 t/ J( _, U" x
ERR_ARRAY_INDEX_OUT_OF_RANGE 4002 超界访问数组
* S+ ?6 b' i8 C' iERR_NOT_INITIALIZED_STRING 4008 未初始化字符串;没有值赋给在表达式中充当操作数的字符串
: v) T3 m* ~# m9 W% BERR_NOT_INITIALIZED_ARRAYSTRING 4009 未初始化字符串数组;没有值赋给在表达式中充当操作数的字符串, O. r& G( ~3 L- W1 h( f
ERR_NO_MEMORY_FOR_RETURNED_STR 4021 不能为函数返回的字符串重新分配内存9 b- H# n- m+ d+ v9 o% y. i
从不产生ERR_NO_MQLERROR (4000)代码。 Y! |1 A% F @7 M( ]- b: G
% @: |* ~" [; ]0 O5 ?5 w这里罗列了可能只是由于软件或硬件故障而产生的许多错误。如果下列描述的错误反复出现,应与开发商联络。6 h- y& R7 u0 W6 Z
" J) _: ]- k4 D7 ]4 a
常数 值 描述
0 y5 M; l8 Z" u4 e) dERR_WRONG_FUNCTION_POINTER 4001 在调用内部函数时,发现错误的函数指针
( J: k' Z- }: R( R$ {+ M0 ^ERR_UNKNOWN_COMMAND 4014 无效指令
: b; y4 D& d u8 C, a+ i! a3 U5 EERR_NOT_INITIALIZED_ARRAY 4016 未初始化数组
1 ~0 J4 R4 [1 B$ c! NERR_INVALID_FUNCTION_PARAMSCNT 4050 函数参数个数不正确
, t* C' R0 R* bERR_STRING_FUNCTION_INTERNAL 4052 字符串函数内部出错
+ @3 x( k# c% b! I* `7 i1 UERR_TRADE_ERROR 4067 交易函数执行出错
; W& w" v$ O& T' n: BERR_SOME_OBJECT_ERROR 4207 对象函数出错6 B( j' w6 \+ a6 ^. r
. f! [4 P C- W# Q. a# Q518外汇网--是一家专门提供外汇交易免费学习的专业化外汇交易论坛、外汇开户、如何炒外汇,外汇培训,外汇学习,提供外汇交易教程,外汇视频教程,外汇基础知识,外汇交易策略.炒外汇工具,外汇技术指标分析,外汇赠金活动,十大外汇平台,外汇投资高手,外汇技术面分析技巧,外汇基本面分析技巧,黄金分析软件,主要是以公平公正的角度传达做外汇需要的心态 技巧,免费共享各种外汇交易投资策略,提供新鲜的外汇交易资讯和公平,透明的外汇交易平台。MQL4语言编程培训16:MQL4排错技巧。
" z6 j7 r$ _) z3 Q/ \. Q- Y C5 q4 y
; R; ?6 }% K {" u/ a |