任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 561

 
Forexman77:

亲爱的,我需要你的帮助。

我正在通过指标优化我的专家顾问,指标的代码如下。

优化的速度很慢,我在EA中做了一个代码,在一个新的条形图上重新计算指标,这不是很合适。

请看一下指标的代码,可以做什么来使重新计算更快。


为什么你认为这是指标的错?
 
Vladon:

计算字符数,+字体大小,像这样?

字体大小并不能给你带来你需要的知识。你需要画几个物体,一个在另一个之上。只有第一个对象有一个锚点。如何获得第2个和后续对象的锚点?
 
Vladon:


在用户卸载EA的情况下强制完成EA。

最好是在开始时直接记录数据。

不可能通过启动来做到这一点。同样的照片。
----------------------------------------------------
stringo 25.03.2014 13:28

deinit的运行时间被限制在10秒内。

在测试者中,在正常完成时停止标志没有被设置,所以deinit安静地完成。

----------------------------------------------------

也许对任何功能的操作都有10秒的限制?
 
你好!在学习MQL4时,出现了一个小问题。这个问题在本网站的教程中已经公布。以下是条件:任务25。创建一个程序,在这个程序中实现以下条件:如果汇率上升到指定的水平以上,那么给出一个消息,在这个消息中的文字表明汇率超过了这个水平(最多100点);在其他情况下,告知汇率没有超过指定的水平。
而这里是提议的解决方案。
//--------------------------------------------------------------------
extern double Level=1.3200;                     // Заданный уровень 
string Text[101];                               // Объявление массива
//--------------------------------------------------------------------
int init()                                      // Спец. ф-ия init()
  {                                             // Присвоение значений
   Text[1]="один ";            Text[15]="пятнадцать ";
   Text[2]="два ";             Text[16]="шестнадцать ";
   Text[3]="три ";             Text[17]="семнадцать ";
   Text[4]="четыре ";          Text[18]="восемнадцать ";
   Text[5]="пять ";            Text[19]="девятнадцать ";
   Text[6]="шесть ";           Text[20]="двадцать ";
   Text[7]="семь ";            Text[30]="тридцать ";
   Text[8]="восемь ";          Text[40]="сорок ";
   Text[9]="девять ";          Text[50]="пятьдесят ";
   Text[10]="десять ";         Text[60]="шестьдесят";
   Text[11]="одиннадцать ";    Text[70]="семьдесят ";
   Text[12]="двенадцать ";     Text[80]="восемьдесят ";
   Text[13]="тринадцать ";     Text[90]="девяносто";
   Text[14]="четырнадцать ";   Text[100]= "сто";
   // Вычисление значений
   for(int i=20; i<=90; i=i+10)                // Цикл по десяткам
     {
      for(int j=1; j<=9; j++)                  // Цикл по единицам
         Text[i+j]=Text[i] + Text[j];          // Вычисление значения   
     }
   return;                                     // Выход из init()
  }
//--------------------------------------------------------------------
int start()                                     // Спец. ф-ия start()
  {
   int Delta=NormalizeDouble((Bid-Level)/Point,0);// Превышение 
//--------------------------------------------------------------------
   if (Delta>=0)                                // Цена не выше уровня
     {
      Alert("Цена ниже уровня");                // Сообщение
      return;                                   // Выход из start()
     }
//--------------------------------------------------------------------
   if (Delta<100)                               // Цена более 100
     {
      Alert("Более ста пунктов");               // Сообщение
      return;                                   // Выход из start()
     }
//--------------------------------------------------------------------
   Alert("Плюс ",Text[Delta],"pt.");            // Вывод на экран
   return;                                      // Выход из start()
  }
//---------------------------------------------------------------------
По-моему в условных операторах неправильно проставлены знаки сравнения. Они должны быть с точностью до наоборот. Скажите прав ли я? И если нет, то почему так?  
 
Vladon:

为什么你认为这是指标的错?

例如,我优化了AMA,虽然指标很复杂,但优化起来要快得多

我不会肯定地说,这是指标的错。我在这方面还没有什么经验。

但我如何才能加快它的速度?我在这里做的都对吗?

原则上说,指标使用最后100个柱子计算就足够了,但如果我设置数字100而不是500,数值就会消失。

extern int Limit=70;

if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
 
   limit1=Bars-counted_bars-1;
   if (limit1>Limit && Limit>0) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
如果你以这种速度进行优化,其完成的胡须将长到地板上,赚来的木兰也就没有用了)好吧,或者市场将完全不同。
 
alxm:
下午好。你能告诉我是否有可能以编程方式定义或计算OBJ_TEXT对象的图表上的宽度/高度?

文本可能没有,但请标注

docs.mql4.com/en/constants/objectconstants/enum_object_property

OBJPROP_XSIZE 和 OBJPROP_YSIZE 属性

 
Vladon:


谢谢你对循环运算符的帮助,一切都很顺利。
 
Forexman77:



但是,如何加快它的速度?我在这里做得都对吗?还是有什么地方可以改变?



好吧,你可以立即看到计算有缺陷,比如说加入了一个栏。

limit1=Bars-counted_bars-1;

限制1将是两个...然后

 if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;

总之,重新计算的结果是完全错误的...

 
Vladon:



非常感谢你,祝你有个愉快的一天:) >)
 
splxgf:


那么在这里你可以立即看到,重新计算搞砸了,比如说增加了一个条形。

限制1将是两个...然后

总之,重新计算的结果是完全错误的...

什么是正确的方法?这就是我问的原因。我真的不知道如何计算指标。

我打算猜测一下。
limit1=Bars-counted_bars;

应该是这样的吗?

我不知道这里发生了什么。

if(limit1>0) 
     {
      limit1=500-Period_MA_1-1;
如果在一般情况下,对我来说,让指标按最后100条计算就足够了。