新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1606

 
Alexey Viktorov #:

阅读规则。该EA应该不受工具和TFs的限制而工作。

谢谢你!在这个过程中还有很多其他的错误)

 
问题是你是否可以用函数来初始化多维 数组

ArrayInitialize(array,EMPTY_VALUE);
就像这样 double msArr[10][4][500];
或者只在MKL4的循环中进行

 
Valeriy Yastremskiy 多维 数组是否可以用函数来初始化

ArrayInitialize(array,EMPTY_VALUE);
像这样 double msArr[10][4][500];
或者在MKL4中只能在循环中进行

还有ArrayFill和ZeroMemory

多维数组在用ArrayFill()处理时显示为一维,例如array[2][4]被处理为array[8],所以当处理这个数组时,可以接受指定初始元素的索引为5。所以,对array[2][4]调用ArrayFill(array, 5, 2, 3.14)会给array[1][1]和array[1][2]填充值3.14。

 
Taras Slobodyanik #:

还有ArrayFill和ZeroMemory。

谢谢你
 
MakarFX #:

这边走!

而你是个小丑。问题是,有一些关于打印命令在标签中打印两次的主题 专家和Allert也出现两次,但没有答案,唉,如何解决这个问题。而对于未来,如果你不知道,你可以保持沉默并通过,但为了获得评价自己不专业的回答是愚蠢的。是的,顺便说一句,你的答案真的非常弱。

 
Manter84 #:

你是个小丑。但问题是真实的,有一些关于打印命令在标签中打印两次的主题 专家和Allert也出现了两次,但没有答案,唉,如何解决它。而对于未来,如果你不知道,你可以保持沉默并通过,但为了获得评价自己不专业的回答是愚蠢的。是的,顺便说一句,你的答案真的非常弱。

你没有理解我的链接...

打印不会超过一次,如果打印了,说明代码有误......这就是我把你送到心灵感应者那里的原因,因为你没有公布代码)

 

晚安!

亲爱的论坛用户,我需要一些帮助。我在MQL4中写了一个脚本,根据图表上的三个给定点,通过一个公式画出一条线。它需要130行,包括缩进和空格。我最近决定把它移植到MQL5,并意识到我在编程方面的贫乏知识不会帮助我,我需要重新学习。

如果有人准备将该脚本移植到MQL5,我将非常感激。如果有人愿意把这个脚本移植到MQL5,我将非常高兴。

 
Андрей 不要犹豫,当面给我留言。

如果有人愿意免费(与)做,我会很高兴。

 
 #property copyright "ExpoMe"
 #property link      "http://www.metaquotes.net"

 #property indicator_chart_window
 #property indicator_buffers 1
 #property  indicator_color1 Blue
 #property  indicator_width1 2
 #property  indicator_style1 0
 double     Buffer1[];
 //+------------------------------------------------------------------+
 //| Объявляем внешние переменные                                     |
 //+------------------------------------------------------------------+
 datetime point_1;
 datetime point_2;
 datetime point_3;
 datetime LastBarTime;
 string line_name[10];
 int gg=1;
 int x1;
 int x2;
 int x3;
 int xx1; // В эту переменную сохраняется значение номера бара вершины перед прогоном при появлении нового бара.
 int xx2; // Если линии стоят, значит при поялвении нового бара номер бара вершины должен увеличиться на 1.
 int xx3; // Если этого не произошло и xx1=x1 после прогона, значит увеличиваем вручную.
 int max;
 int maxx;
 double y1;
 double y2;
 double y3;
 double y11;
 double y22;
 double y33;
 double x11;
 double x22;
 double x33;
 double y;
 double a1;
 double a2;
 double a3;

 //+------------------------------------------------------------------+
 //| Custom indicator initialization function                         |
 //+------------------------------------------------------------------+
 int init()
   {SetIndexBuffer(0,Buffer1);
   SetIndexStyle(0,DRAW_LINE);
 //---- indicators
 //----
    return(0);
   }
  
 int start()
   {
   // Пересчитываем инликатор только при появлении нового бара
   if(LastBarTime == iTime(Symbol(), 0, 0))
      return(0);
    LastBarTime = iTime(Symbol(), 0, 0);
   
   
 // Присваиваем значения переменных времени


 int obj_total=ObjectsTotal();

   for(int ii=0;ii<100;ii++)
     {string name = ObjectName(ii);
       if(ObjectType(name)!=OBJ_VLINE)
       continue;
       line_name[gg] = ObjectName(ii);
       gg=gg+1;
     
     }
    
   
    point_1=ObjectGet(line_name[1], OBJPROP_TIME1);
    point_2=ObjectGet(line_name[2], OBJPROP_TIME1);
    point_3=ObjectGet(line_name[3], OBJPROP_TIME1);
   
 // Запоминаем текущий номер бара вершины

 xx1=x1; 
    
 //Определяем номера баров ключевых точек
   for (int j=0;j<Bars; j++)
   { if (Time[j]==point_1) x1=j;}
  
  
   // Если после прогона сдвиг по вершине не произошел, значит линий нет, добавляем +1 вручную.
 if (x1==xx1) x1=x1+1;
  
  
 xx2=x2;
  
   for (int k=0;k<Bars; k++)
   {if (Time[k]==point_2) x2=k;  }
  
 if (x2==xx2) x2=x2+1;
  
 xx3=x3;

   for (int l=0;l<Bars; l++)
   {if (Time[l]==point_3) x3=l; }
  
 if (x3==xx3) x3=x3+1;

 // Comment ("n1=", j," n2=", k, " n3=", l);
 //Находим "высоту" вершин
   {
   y1=High[x1];
   y2=High[x2];
   y3=High[x3];
   //Comment ("y1=", y1," x1=", x1, " y2=", y2, "x2=", x2," y3=", y3, " x3=", x3);
   //Принимаем первую из них за начало координат
  
 a1=(y3-(x3*(y2-y1)+x2*y1-x1*y2)/(x2-x1))/(x3*(x3-x1-x2)+x1*x2);
 a2=((y2-y1)/(x2-x1))-a1*(x1+x2);
 a3=((x2*y1-x1*y2)/(x2-x1))+a1*x1*x2;

 max=MathMax(x1,x2);
 maxx=MathMax(max,x3);
  
  
   for (int i=maxx; i>=0; i--)
  
   { y=a1*i*i+a2*i+a3;
   Buffer1[i]=y;}
  

    return(0);
   }} 

MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах
 
Vitaly Muzichenko #:

把代码扔在这里,也许有人会做一个无偿的(c),有这样的事情。

如果有人帮忙,反正我欠你一杯威士忌!)
原因: