错误、漏洞、问题 - 页 106

 
Rosh:

这可能是针对那些不在MarketWatch中的字符,正如它对SymbolName 所说的。

输出得到意外结果的符号名称,并与MarketWatch中的列表进行比较。
所有的符号都出现在MarketWatch中,特别是对于#AA类型的工具,它的返回值为零,我特别在脚本中加入了false。
string symbol=SymbolName(i,false);
如果在MarketWatch窗口中没有符号,那么函数
if(SymbolInfoTick(symbol,last_tick))
返回错误4302,帮助中没有说明这个函数的成功操作,符号必须存在于MarketWatch窗口中。
 
sergey1294:
......帮助中没有提到,为了成功使用该功能,该工具必须出现在MarketWatch窗口中。

帮助真的需要有正常的例子和瓶颈的人员。

PS

另外,经常有这样的情况:在对语言进行修改后,基础上的一些EA停止工作(或产生编译错误)。

 

今天注意到...MT5(access.metatrader5.com:443)

EURJPY,日线。

例如GBPJPY,日线:这里一切正常。

这里是欧元兑日元的截图,一个MT4 DC的日报。

差异是肉眼可见的....

如何才能解决这个问题?

 
Rosh:

这可能是针对那些没有出现在MarketWatch中的符号,因为对于SymbolName 它说。

输出得到意外结果的符号名称,并与MarketWatch中的列表进行比较。

对于不存在于MarketWatch中的符号,SymbolInfoTick()返回错误ERR_MARKET_SELECT_ERROR "符号未在MarketWatch中选择"(代码4302) 在MarketWatch中,只有欧元兑美元和英镑兑美元被选中。一个基本的运行显示,SymbolInfoTick()对未选择的符号返回错误 ERR_MARKET_SELECT_ERROR

IS      0       1 (EURUSD,M15)  01:53:21        ************************************************
MF      0       1 (EURUSD,M15)  01:53:21        Инструмент - EURUSD
RR      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
RG      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = EUR
QM      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = EUR
CH      0       1 (EURUSD,M15)  01:53:21        Маржа для покупки = 1271.23
QG      0       1 (EURUSD,M15)  01:53:21        Маржа для продажи = 1271.05
CQ      0       1 (EURUSD,M15)  01:53:21        ************************************************
JQ      0       1 (EURUSD,M15)  01:53:21        Инструмент - GBPUSD
HQ      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
EH      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = GBP
RN      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = GBP
MI      0       1 (EURUSD,M15)  01:53:21        Маржа для покупки = 1553.53
DP      0       1 (EURUSD,M15)  01:53:21        Маржа для продажи = 1553.25
MG      0       1 (EURUSD,M15)  01:53:21        ************************************************
LR      0       1 (EURUSD,M15)  01:53:21        Инструмент - USDCHF
NG      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
NJ      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = USD
EQ      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = USD
RI      0       1 (EURUSD,M15)  01:53:21        SymbolInfoTick() failed, error = 4302
GL      0       1 (EURUSD,M15)  01:53:21        ************************************************
PE      0       1 (EURUSD,M15)  01:53:21        Инструмент - USDJPY
DL      0       1 (EURUSD,M15)  01:53:21        Валюта депозита = USD
DF      0       1 (EURUSD,M15)  01:53:21        Базовая валюта = USD
OL      0       1 (EURUSD,M15)  01:53:21        Валюта маржи = USD
HL      0       1 (EURUSD,M15)  01:53:21        SymbolInfoTick() failed, error = 4302
QH      0       1 (EURUSD,M15)  01:53:21        ************************************************

...

顺便说一下, sergey1294的日志中的最后一个数据块与其他数据块不同:首先,SymbolInfoTick()这次返回了相同的错误代码,其次,--你不觉得这个数据块中的工具、基础货币和保证金货币的名字有些奇怪吗?

这是一个错误吗?你有没有注意到这种奇怪的现象?

CE      0       OrderCalcMargin (EURUSD,M1)     20:44:27        ************************************************
IG      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Инструмент - 
LS      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Валюта депозита = USD
DD      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Базовая валюта = 
CL      0       OrderCalcMargin (EURUSD,M1)     20:44:27        Валюта маржи = 
RG      0       OrderCalcMargin (EURUSD,M1)     20:44:27        SymbolInfoTick() failed, error = 4302
 
至于最后一个数据块,这只是循环中的一个小故障,在最后一个数据查询中,它访问了一个不存在的工具,所以除了存款货币 外,所有字段都是空的。
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
sergey1294:
至于最后一个数据块,只是蛮力循环有点闪失,在最后一个数据查询中访问了一个不存在的符号,所以除了存款货币 外,所有字段都是空的。

这是怎么回事呢?我的意思是,该日志不是来自所给的代码版本?

从代码上看,那里一切正常。

或者SymbolsTotal()返回一个值,但在脚本运行过程中,在循环中间的某个地方,由于一个可怕的意外,经纪人,设置服务器部分,从可用的符号中删除了一个符号,SymbolsTotal() - 如果脚本要求它 - 将返回一个新的值,少一个,但是,由于循环结束条件是基于存储在Total变量中的旧值,那么在最后迭代时,相应的函数在访问现在不存在的符号时返回空行?:)

到目前为止,只有这种情况出现了,才会发生这种情况。:)

 
我不知道它是如何发生的,但它还没有发生
 
simpleton:

... 然后,计算值被明确转换为ulong。确切地说,是对ulong,因为可以保证 要投出的值是非负的。

在被投到一个整数类型时,实数类型的小数部分被丢弃。这不是四舍五入,而恰恰是抛开小数部分,保证最大手数的价值 增加,这是自由保证金允许的。这正是我们需要的。

傻瓜,我也是这么做的,但是用了显式转换为int类型。我假设最大可能的手数将受到经纪人/交易商的限制,或者受到我自己资金规模的 限制。因此,使用int应该是足够的。你认为这种方法有什么隐患吗(用int "从下往上 "取整)?
 

开发人员。

我如何使参数出现在脚本中(我太懒了,不能为新的条件不断改变代码)...?

 
Interesting:

开发人员。

我如何使参数出现在脚本中(我太懒了,不能为新的条件不断改变代码)...?


#property script_show_inputs