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

 
Aleksei Stepanenko:

bar_quantityがあるかどうか、確認する必要があります。

コードを変更しても、同じ場所で配列が範囲外 になってしまいます。

double GetExtremumZigZagPriceHigh(string symbol="",ENUM_TIMEFRAMES timeframe=0,int extremum_number=0)//,int depth=12,int deviation=5,int backstep=3)
  {
   if(symbol=="") //Если symbol = "" , то..
      symbol=Symbol(); //Присвоить переменной symbol значение текущего символа на графике.

//Объявить необходимые переменные:
   double price[];                                                 //Цена экстремума выбранная из массива таймсерии.
//datetime time[];
   int    count;                                                   //Счетчик цикла.
int bars_quantity=1000; //Количество баров на графике.
int extremum_count=0;                                           //Счетчик экстремумов.

   ArraySetAsSeries(price,true);                   //Устанавить флаг, чтобы индексация массива производилась как в таймсериях.
  
   if(CopyBuffer(handle,1,0,bars_quantity,price)<=0) return(0);     //Скопировать в динамический массив price[] цены указанного количества баров.


   for(count=1; count<bars_quantity; count++) //Запустить цикл, который будет бежать по каждому бару.
     {
      if(price[count]!=0) //Если Цена Зигзага есть, то есть не равна нулю, то..
        {
         extremum_count++;        //Увеличить счетчик экстремумов на одну единицу.

         if(extremum_count>extremum_number) //Если счетчик экстремумов превысил значение указанного номера экстремума, то..
            return(price[count]);                 //Вернуть эту цену.
        }
     }
     
//Print("GetExtremumZigZagPrice(): Экстремум ЗигЗага ",extremum_number," не найден"); //А до тех пор, пока ЗигЗаг не показывает цену,
   return(0);                                                                          //Печатать Print, и возвращать ноль.
  }
 

エラーがない場合、すべてのデータ量が揃っているわけではありません。bars_quantityはあくまでもオーダーであり、何が出るかは別問題です。

int elements=CopyBuffer(handle,1,0,bars_quantity,price);
for(count=1; count<elements; count++) 
 
Aleksei Stepanenko:

エラーがない場合、すべてのデータ量が揃っているわけではありません。bars_quantityはあくまでもオーダーであり、何が出るかは別問題です。

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

皆さん、ごきげんよう。

MQL4には、配列の各値を初期化し、繰り返しごとにPrint()関数で配列の各要素の 値を表示する簡単なコードがあります。このループの最後には、Print() がログに 30回 出力します。

int P1;
double LoY[31];
void OnTick()
{
if (P1==0)
{
for(int r=0; r<31;r++)
{
LoY[r]=1.6104+(r*2)*0.0001;
Print("-------------------------------------LoY[r]--------------=",  LoY[r]);
P1=1;
}
}
}

QUESTION .

上記のコードでMQL4の どの言語構成または関数が Print() されるかというと、配列のすべての要素が同じ行に満たされた状態で、サイクルの 終わりに 1回だけ print() されます。つまり、次のような形式に なります。

Print("---LoY[0]--", 1.6104,"---LoY[1]--".1.6106,"---LoY[2]--", 1.6108,"---LoY[3]--", 1.6110,"---LoY[4]--", 1.6112,......・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1."---LoY[30]--", 1.6164);

言葉で説明するだけでなく、そのようなコードの例を書いていただけるとありがたいです。
ご協力ありがとうございました。

 
string str="";

for(int r=0; r<31;r++)
   {
   LoY[r]=1.6104+r*0.0001;
   str+="--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+", ";
   }
Print(str);
 
ANDREY:

皆さん、ごきげんよう。

MQL4には、配列の各値を初期化し、繰り返しごとにPrint()関数で配列の各要素の 値を表示する簡単なコードがあります。このループの最後には、Print() がログに 30回 出力します。

QUESTION .

上記のコードでMQL4の どの言語構成または関数が Print() されるかというと、配列のすべての要素が同じ行に満たされた状態で、サイクルの 終わりに 1回だけ print() されます。つまり、次のような形式に なります。

Print("---LoY[0]--", 1.6104,"---LoY[1]--".1.6106,"---LoY[2]--", 1.6108,"---LoY[3]--", 1.6110,"---LoY[4]--", 1.6112,......・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 1."---LoY[30]--", 1.6164);

言葉で説明するだけでなく、そのようなコードの例を書いていただけるとありがたいです。
ご協力ありがとうございました。

int P1 = 0; // Несмотря ни на что не забывайте инициализировать переменные
string stroka = "";
double LoY[31];
void OnTick()
{
if (P1==0)
{
for(int r=0; r<31;r++)
{
LoY[r]=1.6104+r*0.0001;
stroka += "---LoY[r] = "+DoubleToString(LoY[r], 4);
//Print("-------------------------------------LoY[r]--------------=",  LoY[r]);
P1=1;
}
Print(stroka);
}
}
 
Aleksei Stepanenko:

何秒先?))))

 
今日は助っ人多め
 
Alexey Viktorov:

ご協力ありがとうございました

 
Aleksei Stepanenko:

よろしくお願いします。