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

 
Artyom Trishkin:

そのため、iCustom()を最初のループインデックスで右読みします。

もう一つの質問は、現在のバーから左のデータが必要だということです。だから、0から見つかったものまで読みますが、rates_total-1を超えないようにしてくださいということなんです。

limit>1 のときのみ読み出し可能

それ以外の時は新しいデータはなく、必要なバーのインデックスも変わりません。

ませんが、解説にある一番近い矢印のバーナンバーは正しいです

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<1) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--) 
     {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,i),Digits)!=EMPTY_VALUE)
           {
            num_buy=i;

           }
//
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=i;

           }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
 
mila.com:

彼は望んでいない。

私が書いたものを読んでいますか?

もうひとつは、現在のバーから左側にデータが欲しいという質問です。だから、0から見つかったものまで読みますが、rates_total-1を超えないようにしてくださいということなんです。

limit>1 のときのみ読み出し可能

 
Artyom Trishkin:

私が書いたものを読んでいますか?

もう一つの質問は、現在のバーから左のデータが必要だということです。だから、0から見つかったものまで読みますが、rates_total-1を超えないようにしてくださいということなんです。

limit>1 のときのみ読み出し可能

そうでしたっけ?
if(limit>1)
{
limit=rates_total-1。

 
mila.com:

それは私がやったことではありませんか?
if(limit>1)
{
limit=rates_total-1。

次にやったことはこれだ。

for(int i=limit; i>=0; i--) 

何言ってるんだろう?

 
Artyom Trishkin:

次に何をしたかというと、これです。

何言ってるんだろう?

リミット>1での読み取り

for(int i=limit; i>1; i--) 

どうすればいいのかわからないのですが?

 
mila.com:

リミット>1での読み取り

どうすればいいのかわからないのですが?

だから、0から見つかったものまで読みますが、rates_total-1を超えないようにしてくださいということなんです。
 
Artyom Trishkin:
だから、0から読んで正しいものを探せと言っているのですが、rates_total-1を超えないようにしてください。

だから、どうすればいいのかわからないって言ってるじゃないですか。見せてください(笑)

 
mila.com:

だから、やり方がわからないって言ったじゃないですか。見せてください(笑)

if(limit>1)
  {
   for(int i=0; i<limit; i++) 
     { 
      // тут поиск до нужного вам бара. Нашли - запомнили бар или поставили точку куда нужно и break;
     }
  }

このサイクルでは、(見つかれば)欲しいバーまでしか行かないし、全編が限界まで行ってしまう。

 
Artyom Trishkin:

このサイクルは、あなたが望むバーまで(見つかれば)、または全体のストーリーについては、上限までとなります。

私は、かなり悪いですが、何も表示されません。

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<1) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
  if(limit>1)
  {
   for(int i=0; i<limit; i++) 
     { 
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,i),Digits)!=EMPTY_VALUE)
           {
            num_buy=i;

           }
//
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=i;

           }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
 
mila.com:

本当にダメですね、何も映らないんです。

未だに分からないのは、何を探して表示したいのか、ということです。言葉だけで、つまりコードなしで。

ほら、書いているじゃないですか。

こんにちは、助けてください。

いつでも、インジケーターの矢印があるバーの番号を知りたいのです。

例では、矢印が10本目のバーにある場合にバッファを満たすようにしてみました。

では、さっそく質問ですが、なぜ10本目のバーで探しているのでしょうか?また、一般的には、どのバーでやりたいですか?どの矢ですか?最後の1枚?それとも最後の2つ、上と下?あるいは、目的の矢印のバーを右から左への番号で知っていますか?

これは明確ではありません。

そして、OnCalculate() ではなく、インジケータ全体を添付してください。