5

在该语言中,可以使用-机制Java处理异常。trycatch

它是否存在任何类似的行为MQL4

array out of range此代码在表达式中引发错误“ ” Close[bar],我无法正确处理它。

任何帮助将不胜感激。

bool isBarClosed( int bar ) {
    bool   barClosed  = true;
    double closePrice = Close[bar];
    int    error      = GetLastError();

    if ( error == 4202 ) {
        barClosed = false;
    }   
    return barClosed;
}
4

1 回答 1

4

不。

MQL4对 python / java 和类似语言中的类似 atry/except/finally或用例的构造没有语法支持。try/catch

如何处理异常?

假设没有编译时错误。

运行时错误很难处理,有些甚至会导致软件崩溃。

人们可以而且应该通过适当的类型检查和用例预验证主动清理 MQL4 代码,以防止出现异常。

例外情况是dbPool操作,在某些情况下,这些操作可能“合法地”无法产生预期的结果。

A GetLastError()(如果先验地清除异常本身)可以用作几乎事后的识别,而不是作为异常处理程序。

4202?不是你的问题,兄弟

_LastError == 4202 ... does not explain the trouble                <<< stdlib.mqh

4202
    ERR_OBJECT_DOES_NOT_EXIST
    Object does not exist

您的问题似乎与值的-reverse-stepping-indexbar之外的“指向”有关。TimeSeriesClose[]

0 <= aBarPtrIDX < Bars

下一个目标?一个Close[aBarPtrIDX]误解

MQL4域中花费了一段时间后,人们会熟悉一些相互矛盾的事实。一个潜在的惊喜是,当前的柱,“热零” [0]Close[0] == Bid在它的所有生命周期中都包含。

在运行栏被aNewBarEVENT( 由Volume[0] == 1( 或Volume[0] < aPreviousVolume_0-- 一个更安全的模式表示,MQL4-松散耦合的事件循环quote在它的忙集期间错过了一些 -arrival )) 终止后,Close[1]代表最后访问的在各个时期的价格,BarClose[0]不断在不断变化的Bid价格上冲浪

于 2015-08-24T13:01:04.613 回答