初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1259

 

下午。

关于MT5中的测试器,有几个问题。

1)在MT5中,在专家顾问的视觉测试 模式中,所有通过专家顾问代码中的iCustom计算的指标都被应用到图表本身。如何禁用/调整它?

2) 我在测试器中进行了一次测试,勾选了 "显示图表、指标和交易的可视化模式",然后我又进行了同样的测试,勾选了关闭(没有可视化)。在第一种情况下,平衡图画得很正常,而在第二种情况下,它只是在一些单元格中画了一条直线。这可能与什么有关?

 
satorifx:

下午。

关于MT5中的测试器,有几个问题。

1)在MT5中,在专家顾问的视觉测试 模式中,所有通过专家顾问代码中的iCustom计算的指标都被应用到图表本身。这是否可以以某种方式禁用/调整?


1.TesterHideIndicators()。

Документация по MQL5: Общие функции / TesterHideIndicators
Документация по MQL5: Общие функции / TesterHideIndicators
  • www.mql5.com
Задает режим показа/сокрытия индикаторов, которые используются в эксперте. Функция предназначена для управления видимостью используемых индикаторов только при тестировании. По умолчанию на графике визуального тестирования показываются все индикаторы, которые создаются в тестируемом эксперте.  Также эти индикаторы показываются на графике...
 
如何区分删除一个图形对象 和重命名一个图形对象的事件。在这两种情况下都会产生一个删除事件。我如何区分这两者呢?
 
leonerd:
如何区分删除一个图形对象 和重命名一个图形对象的事件。在这两种情况下都会产生删除事件。你如何区分这两者?

你不能。重命名是,删除并创建一个新的。所以要尽量抓住删除后的创建。

 
与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。
 

你能告诉我怎么写才能得到随机的6位数吗?

int Random() {
 int r=MathRand(); // 100000 -> 999999
  return(r);
 }
 
Vitaly Muzichenko:

你能告诉我怎么写才能得到随机的6位数吗?

我发现这个解决方案

int Random(int min,int max) {
   int v=0;
   MathSrand(GetTickCount());
   while(true) {
      v=MathRand()*2*MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Vitaly Muzichenko:

找到了这个解决方案

维塔利,这不是最好的解决办法。

首先,在这种情况下,你最好使用一个do while循环。

其次,在我看来,用指数法得到一个大于6位数的数字比用乘法得到的数字更安全。但在这种情况下,有可能得到INF。但你可以限制功率的值......在我的例子中,功率不超过16。

/********************Script program start function*******************/
void OnStart()
 {
  double dr = 0,
         df = 0;
  srand(GetTickCount());
  do
   {
    dr = fabs(rand());
    df = fabs(rand());
   }
  while((dr == 1 || df == 1) && !IsStopped());
  double dp = pow(dr, fmod(df, 16));
  Print(DoubleToString(fmod(dp, 1000000), 8));
 }/*******************************************************************/

并取除法的余数,得到一个六位数的数字。

 
Alexey Viktorov:

维塔利,这不是最好的选择。

首先,在这种情况下,最好使用do while循环。

其次,在我看来,用指数法得到一个大于6位数的数字比用乘法得到的数字更安全。但在这种情况下,有可能得到INF。但你可以限制功率的值......在我的例子中,功率不超过16。

并取除法的余数 得到一个六位数的数字。

谢谢,替换了代码中的部分。

 
Vitaly Muzichenko:

谢谢你,在代码中替换了部分内容。

结果是什么呢?我并不声称自己是无懈可击的......))))。