bool Quote2Price(double diff,double &price4lot,string symbol="EURUSD") { int dig=(int)MarketInfo(symbol,MODE_DIGITS); if(dig == 0) return(false); // symbol is none double tickSizeMarketInfo = MarketInfo(symbol, MODE_TICKSIZE); // пункт в валюте котировки (0,00001 для EURUSD на 5-знаке) double tickValue, tickSize2; if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE, tickValue)) // пункт в валюте депозита ($1 для EURUSD на 5-знаке) Print(__FUNCTION__, " SymbolInfoDouble(...SYMBOL_TRADE_TICK_VALUE) returns false"); if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE, tickSize2)) // пункт в валюте депозита ($1 для EURUSD на 5-знаке) Print(__FUNCTION__, " SymbolInfoDouble(...SYMBOL_TRADE_TICK_SIZE) returns false");
以管理员身份运行也没有帮助?
我准备重启windows,关闭mql5编辑器,关闭mql4编辑器,关闭 MT5和MT4终端。但我需要在mql4编辑器中查看一些东西。我再次打开它,哦,我的上帝,文件编译了。现在我在想,两个编辑器,mql4和mql5,正在同时工作。奇怪的是,来自不同目录的相同文件在其中都无法打开。
但是,我将看着他们一起工作。
选定。零点只发生在第一次运行后,不一定发生在SGD符号上。
SGDJPY意外地进入了源头。结果已经显示在更正后的版本中,"SGGJPY "被_Symbol取代。
它是否能够重现?
4号机也是如此。我甚至在上面做了评论,这样我就不会忘记。现在我把MT4更新到了1052--这个错误并没有消除。在管理员下运行无济于事 (回复 Combinator)
这里是MQL4的函数代码,我在指标中使用它,它在OnCalculate 中被调用。如果我将该指标添加到图表中--一切正常。但如果我重新启动终端--一些空值,见帖子末尾的输出。
{
int dig=(int)MarketInfo(symbol,MODE_DIGITS);
if(dig == 0)
return(false); // symbol is none
double tickSizeMarketInfo = MarketInfo(symbol, MODE_TICKSIZE); // пункт в валюте котировки (0,00001 для EURUSD на 5-знаке)
double tickValue, tickSize2;
if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE, tickValue)) // пункт в валюте депозита ($1 для EURUSD на 5-знаке)
Print(__FUNCTION__, " SymbolInfoDouble(...SYMBOL_TRADE_TICK_VALUE) returns false");
if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE, tickSize2)) // пункт в валюте депозита ($1 для EURUSD на 5-знаке)
Print(__FUNCTION__, " SymbolInfoDouble(...SYMBOL_TRADE_TICK_SIZE) returns false");
Print("tickSizeMarketInfo= ", tickSizeMarketInfo, " tickSize2= ", tickSize2, " tickValue= ", tickValue);
if(tickSizeMarketInfo == 0 || tickSize2 == 0 || tickValue == 0.0)
return false;
double price=diff/(tickSize2/tickValue);
price4lot=NormalizeDouble(price,2);
return (true);
}
重启终端后的输出。
2017.03.01 00:31:43.588 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05 tickValue= 1.0
2017.03.01 00:31:43.460 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05 tickValue= 1.0
2017.03.01 00:31:43.351 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05 tickValue= 1.0
2017.03.01 00:31:42.961 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05tickValue= 0.0
2017.03.01 00:31:42.910 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05tickValue= 0.0
2017.03.01 00:31:42.866 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05tickValue= 0.0
2017.03.01 00:31:42.301 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05tickValue= 0.0
2017.03.01 00:31:41.116 ShowImportantParams EURUSD.e,M5: tickSizeMarketInfo= 1e-05 tickSize2= 1e-05tickValue= 0.0
2017.03.01 00:31:41.116 ShowImportantParams EURUSD.e,M5: 已初始化
2017.03.01 00:31:41.080 自定义指标ShowImportantParams EURUSD.e,M5:加载成功
四个人的情况也是如此。我甚至有一个评论站,以确保我不会忘记它。
我还没有试过。在Build 1045之前,这种情况从未发生过。而且现在也不是一直在发生。你可以工作半天,然后就会遇到这个错误。
我准备重启windows,关闭mql5编辑器,关闭mql4编辑器,关闭MT5和MT4终端。但我需要在mql4编辑器中查看一些东西。我再次打开它,哦,我的上帝,文件编译了。现在我认为两个编辑器,mql4和mql5,正在同时工作。奇怪的是,来自不同目录的相同文件在其中都无法打开。
但是,我将看着他们一起工作。
2017.03.01 01:43:30.844 Windows 10 Home (x64 based PC), IE 11.00, UAC, 4 x Intel Core i3-3217 U @ 1.80 GHz, RAM: 1540 / 5005 Mb, HDD: 10397 / 260234 Mb, GMT+07:00
2017.03.01 01:43:30.844 Data Folder: D:\New MT4
没有区别--不管是运行一个还是两个编辑器,错误都会时不时地弹出来。
2017.03.01 01:43:30.844 Windows 10 Home (x64 based PC), IE 11.00, UAC, 4 x Intel Core i3-3217 U @ 1.80 GHz, RAM: 1540 / 5005 Mb, HDD: 10397 / 260234 Mb, GMT+07:00
2017.03.01 01:43:30.844 Data Folder: D:\New MT4
/portable模式是否也会造成问题?
这是/可移动模式。
你需要看看相关文件夹的用户,我认为这不是MT4的错,看起来是访问文件夹的问题,也许是一些隐藏的进程阻止了访问。
这就是/可移动模式。