从头开始自学MQL5语言 - 页 80

 

有错误,所以代码不会按照作者的意图工作。你必须搞清楚。你有密码,你有卡片在手。


从你显示的情况来看,我发现要么蜡烛少于60个,要么其中一个指标的手柄是无效的,这意味着发送给它的参数是错误的。或者在代码的另一部分有错误,我没有看到。

问候,弗拉基米尔。

哎呀,Alexey;)

 
MrBrooklin #:

我自己设法找到了问题所在,但问题是关于其他方面的:什么会受到这些错误的影响,我应该在代码中改变什么来消除它们?

真诚的,弗拉基米尔。

如果发生错误,专家顾问将不会被连接到图表上。

你不需要做任何事情。已经做了什么--在出现错误的情况下,专家顾问会从图表中分离出来

并通知用户。

这个错误实际上不会发生,除非是在计算机处于混乱状态的时候。

==

然而,如果它总是发生在开发过程中...

这意味着指标没有被正确调用 - 修复指标参数。

 
Dmitry Fedoseev #:

如果发生错误,EA将不会附着在图表上。

你不需要做任何事情。已经做了什么--在出现错误的情况下,专家顾问会从图表中分离出来

并通知用户。

这个错误实际上不会发生,除非是在计算机处于混乱状态的时候。

==

然而,如果它总是发生在开发过程中...

这意味着指标的调用是不正确的--修复指标参数。

谢谢你,德米特里,谢谢你的全面和易懂的回答

问候,弗拉基米尔。

 
SanAlex #:

在这里可以工作--也许你没有正确设置句号

谢谢你的提示!!。的确,问题是我无法在测试器设置中把两个指标的周期从 "零 "以上设置。我应该至少从 "一 "和更高的位置设置它们。

感谢大家的参与!

问候,弗拉基米尔。

 
MrBrooklin #:

P.S. 你应该删除EA的代码 "战利品",因为这些 "战利品 "惹恼了很多人。我已经删除了我的。

那些非常烦人的人,让他们定期服用益母草或飞燕草酊剂。

我也不喜欢那些拖鞋,但我就是不看它们。

 
没有多少人愿意学习这门语言。为什么会这样
 
Vladimir Baskakov #:
我已经决定学习这门语言,但没有多少人开始学习它。为了什么?

弗拉基米尔,这很简单。我已经学到了我需要学习的东西。现在我采取不同的EA,为自己制作。最重要的是,现在我不再把MQL5看成是汉字,而是看成一个普通的软件。非常感谢所有帮助我自学的专业人士!

问候,弗拉基米尔。

 
MrBrooklin #:


我宁愿有一个破坏者,而不是下载一个文件并把它塞进我的沙箱。)

 

大家早上好,心情不错!

继续自学MQL5编程语言。当我不得不与数组打交道时,时间到了。我决定根据输入参数中指定的风险来计算手数。 编译后我没有错误或警告,但函数代码不工作。能否请你告诉我,错误在哪里?

真诚的,弗拉基米尔。

input double   Risk0=1.0;           //Риск (% от баланса)
.
.
.
.
input double   Risk9=1.0;           //Риск (% от баланса)

//+------------------------------------------------------------------+
//| Функция Money_Management рассчитывает размер лота в зависимости  |
//|  от риска, заданного во входных параметрах советника.            |
//+------------------------------------------------------------------+
double Money_Management()
  {
   static int Risk[];
   int Number=0;
//----+ Объвляем переменную для хранения размеров массивов переменных
   static int Size_ = 0;
//----+ Изменяем размер массивов переменных
   if(Number + 1 > Size_)
     {
      uint size = Number + 1;
      //---- Предварительно обнуляем ячейки массива
      Risk[Number] = false;
     }
   if(Risk[0] != Risk[Number])
     {
      Risk[Number] = Risk[0];
     }
   double Lots=AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk[Number]/100000*10;
   Lots=MathMin(5,MathMax(0.1,Lots));
   if(Lots<0.1)
      Lots=NormalizeDouble(Lots,2);
   else
     {
      if(Lots<1)
         Lots=NormalizeDouble(Lots,1);
      else
         Lots=NormalizeDouble(Lots,0);
     }
   return(Lots);
  }
//+------------------------------------------------------------------+
 
MrBrooklin MQL5编程语言。当我不得不与数组打交道时,时间到了。我决定根据输入参数中指定的风险来计算手数。 编译后我没有错误或警告,但函数代码不工作。能否请你告诉我,错误在哪里?

真诚的,弗拉基米尔。

我非常希望这不是你写的...。

这里有一个工作函数

/********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
double contractSize(double Lot)
 {
  double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
         v = volume,
         volumeStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP),
         minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN),
         maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
  v = round(volume/volumeStep)*volumeStep;
  return(fmin(maxLot, fmax(minLot, v)));
 }/******************************************************************/

你所需要做的就是输入风险金额,这样就不会从全额自由保证金中计算出来...