1

在互联网上,人们可以从很多方面读到,不可能MarketInfo()使用Strategy Tester. 这是平台的限制。

我在网上没有找到任何解决方法。但是,由于需求是发明之母,而我的需求是USDJPY使用 EA 做出取决于市场状况的市场决策,EURUSD我找到了解决方法(这对我来说已经足够好了)。我用iMA()一个周期和M1分辨率。

iMA( "EURUSD", PERIOD_M1, 1, 0, MODE_SMA, PRICE_MEDIAN, i )

问题是
既然MetaTrader能够计算另一种货币的移动平均线(这肯定是基于货币对的实际价格!),
Q1:为什么不能直接访问当前值?

还有一个后续问题:
Q2:对于这个限制,还有其他(更准确的)解决方法吗?

4

2 回答 2

2

原因:这个问题的原因是因为“Tick”。由于一种货币的“tick”独立于另一种货币的“tick”发生,因此不可能根据一种货币的当前“tick”准确确定另一种货币的价格。是使用 M1 蜡烛的iMAOHLC 计算的,而不是实际的“Tick”(与“Tick”数据不同)。

改写:假设我们在 USDJPY 上,这个“滴答”发生在 12:00:00.210(午夜 12 点第 210 毫秒)。当那个“滴答”发生时,start()事件就会被触发。在该函数中,我们查找 EURUSD 的出价。然而,截至当时,欧元兑美元没有“报价”(美元兑日元和欧元兑美元不会同时“报价”),因此无法确定欧元兑美元在该时间点的确切价格——时间。

没有变通方法,因为不可能确定“Tick”级别的价格,因为 MQL4 的datetime变量是一个integer并且仅精确到秒,并且历史中心>导出仅是 OHLC。

iMA()是最好的。

于 2016-04-11T21:02:54.227 回答
0

Q1:@JosephLee 提供了很好的服务 + 还有一个选项(参考下文)
Q2:值得一提:


是的,有一个解决方法。

虽然MetaTrader Terminal 4有很多弱点,不值得花时间在这里花时间,但也可以用它做一些好事。

大约五年前,有一个项目需要为 MT4 集成分布式处理,以规避它的弱点。

那事发生了。通过这种方式,您可以从分布式处理框架中受益,并且可以nanoseconds独立于您的本地主机随意(基于远程QUOTE流处理)获得所有仪器的几个(延迟方面)确切价格MT4.graph _Symbol

不要犹豫,询问更多

欢迎来到
MQL4 世界


MQL4.56789-具有iClose()多币种功能

返回Close具有时间框架和班次的指定交易品种柱的价格值。

double  iClose(     string           symbol,          // symbol 
                    int              timeframe,       // timeframe 
                    int              shift            // shift 
                    );

参数[in] 符号名称。表示当前符号。[在]时间范围。它可以是任何枚举值。表示当前图表时间范围。[in] 从指标缓冲区中获取的值的索引(相对于当前柱线在给定数量的周期前移动)。用和指定的柱的价格值。如果本地历史为空(未加载),则函数返回. 要检查错误,必须调用该函数。

symbol
NULL

timeframe
ENUM_TIMEFRAMES0

shift


Returned value
Closesymboltimeframeshift0GetLastError()

谨慎使用它,StrategyTester并在错误处理历史数据不在本地数据库中的情况下采取应有的谨慎态度,并且需要为从服务器远程检索提供补救处理程序。

Print( "A first date in the history for the EURUSD on the [MT4SERVER] = ",
       (datetime) SeriesInfoInteger( "EURUSD", 0, SERIES_SERVER_FIRSTDATE )
       );

ERR_HISTORY_WILL_UPDATED同样需要为远程服务器不在线/市场关闭ERR_MARKET_CLOSED/请求的日期已经早于SERIES_SERVER_FIRSTDATE等时出现上述需要的情况提供一些措施。

在极端情况下,总是有可能创建一个特殊设置,逐步更新本地CCY_PAIRREMOTE_CCY_PAIR完全独立于代理端设备状态。

所有这些都是这个新的 MQL4 功能的重要方面。

于 2016-04-12T13:38:20.603 回答