MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1606

 
Alexey Viktorov #:

ルールを読むEAは、インストルメントとTFの両方において制限なく動作する必要があります。

ありがとうございました。他にもいろいろとミスがありました)

 
問題は、多次元配列の 初期化を、関数

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()で処理すると1次元に見える。例えば、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もあります。

ありがとうございました。
 

そして、あなたはジョーカーです。そして問題は現実で、PrintコマンドがExpertsタブに2回印刷され、Allertも2回出るという話題がありますが、残念ながら直し方の回答はありません。また、今後のために、わからなければ黙って通り過ぎればいいのですが、専門外の回答で自ら評価を得るのは愚かなことです。はい、それにしても、皆さんの回答は本当に弱いですね。

 
Manter84 #:

ジョーカーなんですね。しかし、問題は現実で、PrintコマンドがExpertsタブに2回印刷され、Allertも2回出るという話題があるが、どうすれば解決できるのか、残念ながら回答はない。また、今後のために、わからなければ黙って通り過ぎればいいのですが、専門外の回答で自ら評価を得るのは愚かなことです。はい、それにしても、皆さんの回答は本当に弱いですね。

私のリンクを理解してなかったのか...。

プリントは2回以上プリントされません。もしプリントされるなら、コードにエラーがあります。あなたがコードを投稿していないので、テレパシーに送ったのはそのためです)

 

おやすみなさい!

フォーラムユーザーの皆様、助けてください。MQL4で、チャート上の与えられた3つのポイントを元に、数式で線を引くスクリプトを書きました。インデントやスペースを含めて130行かかる。最近、MQL5に移植することにしたのですが、私のプログラミングの乏しい知識ではどうにもならないことに気づき、もう一度勉強し直さなければなりません。

どなたか、このスクリプトをMQL5に移植してくださる方がいらっしゃれば、ありがたいのですが。このスクリプトをMQL5に移植してくださる方がいらっしゃれば幸いです。

 
Андрей 遠慮なく直接メッセージして ください。

誰か無料でやってくれると嬉しい(C)。

 
 #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)をしてくれるかもしれない、そんなこともあるんだ。

もし誰かが助けてくれたら、とりあえずウイスキーをお借りします!)