错误、漏洞、问题 - 页 1153

 
joo:
论坛帖子中的视频不能播放。在视频的地方有空位。试过很多浏览器。设备 - 联想K900。
视频在youtube网站上播放正常。在其他youtube网站上,视频播放....。
让我们检查一下。
 
Renat:
如何运行安装在Windows 8.1中的程序?用/portable?
不,我通常在没有/portable的情况下运行它。不仅如此,为了确定,我还安装和卸载了两次MT5。卸载后, 也手动删除了 AppData中的文件夹。
 

如果以普通用户身份在Windows 8.1中工作,MT5终端不会记住输入的账户号码。另外,MetaEditor不保存MQL5存储状态。只有当你以管理员身份工作或在metaeditor64.exe和terminal64.exe文件属性中选择 "以管理员身份运行此程序 "时,才能解决这个问题。

但在这种情况下,在普通用户账户下运行时,我必须输入管理员的密码--考虑到安全问题,这是否正确?

P.S. 该终端是最新的--但问题并不新。


 

下午好。

我有一个相当耗费资源的指标(由7个以上的数组计算),它在终端中只 "间歇性 "地正常加载,我不知道是什么原因。里面没有错误,是MT5终端本身的问题...

我想在测试器中进行测试,但在测试器中一直出现错误:我附上一张截图。

请指示,是否有可能在测试器启动前处理错误,并在测试器中强行重新加载指标,如果它出现的话?

 
M1k3:

下午好。

我有一个相当耗费资源的指标(由7个以上的数组计算),它在终端中只 "间歇性 "地正常加载,我不知道是什么原因。里面没有错误,是MT5终端本身的问题...

我想在测试器中进行测试,但在测试器中一直出现错误:我附上一张截图。

请教,是否有办法在测试器启动前处理错误,并在测试器中强行重新加载指标,如果出现的话?

.

错误是在你的代码中,而不是在终端。甚至还有一个提示,在哪里可以找到这个错误:第302行,第49位。 这个错误是一个数组超出了它的范围。例如,你有一个大小为[4]的数组,但你试图获得值[5]。
 
barabashkakvn:
错误是在你的代码中,而不是在终端。甚至还有一个提示,在哪里可以找到错误:第302行,第49位。 这个错误是一个数组退出其范围。例如,你有一个大小为[4]的数组,但你试图获得值[5]。

我无法解决这个问题,数组中充满了引号(100%)或指标值。在终端中,在某一时刻,报价或指标X的值输出为空,而在另一时刻,它输出一个正常的值(不是在第0条)。我不知道为什么会发生这种情况。

在测试器中,NULL值总是存在的。当我试图乘以一个报价或指标值时,错误发生了,但那里是NULL。

 
M1k3:

我无法解决这个问题,数组中充满了引号(100%)或指标值。在终端的某一时刻,报价X的值为空,而在另一时刻,它给出了一个正常的值(不是在第0条)。我不知道为什么会发生这种情况。

在测试器中,NULL值总是存在的。当我试图乘以一个报价或指标值时,错误发生了,但那里是NULL。

使用代码调试或在有疑问的代码部分插入Print() 操作符。这样你就会明白错误出在哪里。
 
barabashkakvn:

这段代码是指标和OnInit()函数的代码。因此,OnInit()是在终端启动的时候处理的--这段代码正确地显示了tick价格。 是OnInit()而不是init()--像你的一样。 如果错误重复,请发送代码和终端版本。

错误在于你试图在OnInit()中从指标 中接收市场信息(MarketInfo...)。该指标没有交易功能,因此,在初始化期间,它不等待账户和市场信息的更新。

要获得市场数据,请使用EA的 OnInit(),而不是指标

如果你想在指标中使用市场信息,你应该输入一个标志(bool),在第一次运行的情况下,在OnCalculate()函数中检查账户信息(Account...)的正确性,如果你改变时间框架或指标设置,则在OnInit()中。

不要误导人们。无论你是使用指标的init()还是OnInit(),终端都不能保证在已经进行了登录并且知道tick值的情况下,这个处理程序会被调用。所以在OnInit中也很容易得到零。另外,也没有禁止在指标中使用市场信息。但在这种情况下,我们确实必须将初始化转移到指标的计算部分,并在第一个ticks上执行它。
 
marketeer:
不要误导人们。不管是使用指标的init()还是OnInit(),终端都不能保证在登录完成并知道tick值时调用这个处理程序。所以在OnInit中也很容易得到零。另外,也没有禁止在指标中使用市场信息。但在这种情况下,我们确实必须将初始化转移到指标的计算部分,并在第一个ticks上执行它。

该指标中没有交易功能。专家顾问具有交易功能。因此,当EA调用市场环境和/或账户信息 时,在OnInit()中一切正常。

为了证明我的话,这里有一个简单的EA,其中OnInit()提到了交易环境和账户信息。

//+------------------------------------------------------------------+
//|                                                  test_expert.mq4 |
//|                              Copyright © 2014, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  //--- выведем всю информацию, доступную из функции AccountInfoDouble()
      printf("ACCOUNT_BALANCE =  %G",AccountInfoDouble(ACCOUNT_BALANCE));
      printf("ACCOUNT_CREDIT =  %G",AccountInfoDouble(ACCOUNT_CREDIT));
      printf("ACCOUNT_PROFIT =  %G",AccountInfoDouble(ACCOUNT_PROFIT));
      printf("ACCOUNT_EQUITY =  %G",AccountInfoDouble(ACCOUNT_EQUITY));
      printf("ACCOUNT_MARGIN =  %G",AccountInfoDouble(ACCOUNT_MARGIN));
      printf("ACCOUNT_FREEMARGIN =  %G",AccountInfoDouble(ACCOUNT_FREEMARGIN));
      printf("ACCOUNT_MARGIN_LEVEL =  %G",AccountInfoDouble(ACCOUNT_MARGIN_LEVEL));
      printf("ACCOUNT_MARGIN_SO_CALL = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL));
      printf("ACCOUNT_MARGIN_SO_SO = %G",AccountInfoDouble(ACCOUNT_MARGIN_SO_SO));
      //--- MarketInfo
      Print("Symbol=",Symbol());
      Print("Минимальная дневная цена=",MarketInfo(Symbol(),MODE_LOW));
      Print("Максимальная дневная цена=",MarketInfo(Symbol(),MODE_HIGH));
      Print("Время поступления последней котировки=",(MarketInfo(Symbol(),MODE_TIME)));
      Print("Последняя поступившая цена предложения=",MarketInfo(Symbol(),MODE_BID));
      Print("Последняя поступившая цена продажи=",MarketInfo(Symbol(),MODE_ASK));
      Print("Размер пункта в валюте котировки=",MarketInfo(Symbol(),MODE_POINT));
      Print("Количество цифр после запятой в цене инструмента=",MarketInfo(Symbol(),MODE_DIGITS));
      Print("Спрэд в пунктах=",MarketInfo(Symbol(),MODE_SPREAD));
      Print("Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах=",MarketInfo(Symbol(),MODE_STOPLEVEL));
      Print("Размер контракта в базовой валюте инструмента=",MarketInfo(Symbol(),MODE_LOTSIZE));
      Print("Размер минимального изменения цены инструмента в валюте депозита=",MarketInfo(Symbol(),MODE_TICKVALUE));
      Print("Минимальный шаг изменения цены инструмента в пунктах=",MarketInfo(Symbol(),MODE_TICKSIZE));
      Print("Размер свопа для ордеров на покупку=",MarketInfo(Symbol(),MODE_SWAPLONG));
      Print("Размер свопа для ордеров на продажу=",MarketInfo(Symbol(),MODE_SWAPSHORT));
      Print("Календарная дата начала торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_STARTING));
      Print("Календарная дата окончания торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_EXPIRATION));
      Print("Разрешение торгов по указанному инструменту=",MarketInfo(Symbol(),MODE_TRADEALLOWED));
      Print("Минимальный размер лота=",MarketInfo(Symbol(),MODE_MINLOT));
      Print("Шаг изменения размера лота=",MarketInfo(Symbol(),MODE_LOTSTEP));
      Print("Максимальный размер лота=",MarketInfo(Symbol(),MODE_MAXLOT));
      Print("Метод вычисления свопов=",MarketInfo(Symbol(),MODE_SWAPTYPE));
      Print("Способ расчета прибыли=",MarketInfo(Symbol(),MODE_PROFITCALCMODE));
      Print("Способ расчета залоговых средств=",MarketInfo(Symbol(),MODE_MARGINCALCMODE));
      Print("Начальные залоговые требования для 1 лота=",MarketInfo(Symbol(),MODE_MARGININIT));
      Print("Размер залоговых средств для поддержки открытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINMAINTENANCE));
      Print("Маржа, взимаемая с перекрытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINHEDGED));
      Print("Размер свободных средств, необходимых для открытия 1 лота на покупку=",MarketInfo(Symbol(),MODE_MARGINREQUIRED));
      Print("Уровень заморозки ордеров в пунктах=",MarketInfo(Symbol(),MODE_FREEZELEVEL)); 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
附加的文件:
 
barabashkakvn:

该指标中没有交易功能。专家顾问具有交易功能。因此,当EA调用市场环境和/或账户信息 时,在OnInit()中一切正常。

为了证明我的话,这里有一个简单的专家顾问,OnInit()调用市场环境和账户信息。

嗯,这个问题最初是关于指标的。而你在回答关于指标的OnInit。专家顾问是另一回事,那里没有问题,但专家顾问不能取代指标。