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

 

手伝いに来てください。

課題は、array[]の中の最小の 要素を見つけることです。

//+------------------------------------------------------------------+ 
//| Получим Lowest для заданного промежутка                          | 
//+------------------------------------------------------------------+ 
double iLowMin(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMinimum(buffer,ot,bands)];
   return(result);
  }
//+------------------------------------------------------------------+ 
//| Получим High для заданного номера бара                           | 
//+------------------------------------------------------------------+ 
double iHighMax(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMaximum(buffer,ot,bands)];
   return(result);
  }

問題は解決しているのですが、最低限で死にそうです。いろいろ試してみたが、入力配列が埋まってしまう。デバッグを調べてみたが、どうすればいいのか?

Print("DwMin  ",iLowMin(rates_total-50,49,ExtLowerBuffer));

もしかして、ニュアンスが違う?

経由で宣言

   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
 
Top2n:

手伝いに来てください。

課題は、array[]の中の最小の 要素を見つけることです。

問題は解決しているのですが、最低限で死にそうです。いろいろ試してみたが、入力配列が埋まってしまう。デバッグを調べてみたが、どうすればいいのか?

もしかして、ニュアンスが違う?

経由で宣言

ArraySortを試してみて、最初のインデックスでの出力を確認してください。

 

noosphereはこれくらいにして、問題を諦めた途端、勘が働き始めました:配列に0が入っているので、min = 0が出ます。 しかし、まだ0以外の値のセクションがあり、minはまだ0、まあ、神頼みで、問題は解決します))単に読む人に感謝し、noosphereはあなたに与えたものです。

 

注意喚起の質問))

処理を開始するバーをインジケータに設定するにはどうすればよいですか?

if(prev_calculated>rates_total-Bmax)

{ ... то что нужно обрабатывать начиная с бара[rates_total-Bmax]

}

試してみたところ、結果はインジケーターが全く動かないというものでした。

 

再びこんにちは、私は配列の要素の インデックスを知っている、あなたは私に教えてください、どのような関数がその値を見つけるために使用することができますか?

int Totall=OrdersTotal();

double Price; // 選択された注文の価格

double Mas[]; //すべての注文を順番に並べるための配列

for(int i=0; i<OrdersTotal(); i++) //オーダーループ

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))である。

{Price=OrderOpenPrice();//配列に価格を入れる

Mas[i] = Price;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // これで始値の降順で並べられるようになりました。

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // 現在値に最も近い要素のインデックスを決定する

 
Nauris Zukas:

授業の勉強をする前にも遭遇しましたが、やはり記事には書かれていない、あるいは検索エンジンでは見つけられないほど隠れたところにニュアンスがあるのです。一日中、説明を求めて無駄な時間を過ごした。例えば、このマークは何を意味するのか、そうでない場合はどう影響するのか。静止 画の例では、以下のように、最初はあって、次にない:

また、この記号が何を意味するのかは不明です:

*

mql4, mql5 関数は常に配列の参照渡しのみです (& == アンパサンド)。

まず、関数の正式なパラメータにアンパサンドがありますが、これは関数に渡されるのが配列そのものではなく、配列へのリンクであることを示しています。そして、関数内部ではすでに参照を扱っているので、改めて指定する必要はありません。

チルダ(~)はクラスのデストラクタの名前の前に書かれています。コンストラクタとデストラクタはクラス自身と同じ名前ですが、デストラクタには~があります。

リファレンスを使う場合とポインターを使う場合については、こちらの記事を ご覧ください。

とはいえ、やはり基本的なことは読んでおく必要がありますね。

 
vikzip:

再びこんにちは、私は配列の要素の インデックスと、その値を見つけるために使用される関数を知っている場合、あなたは教えてください。

int Totall=OrdersTotal();

double Price; // 選択された注文の価格

double Mas[]; //すべての注文を順番に並べるための配列

for(int i=0; i<OrdersTotal(); i++) //オーダーループ

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))である。

{Price=OrderOpenPrice();//配列に価格を入れる

Mas[i] = Price;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // これで始値の降順で並べられるようになりました。

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // 現在値に最も近い要素のインデックスを決定する

Value_element_array = Array[index];

 

アドバイスお願いします。EAを持っていて、職場で普通のパソコン、ウィンドウズhpでテストしています。すべて正常に動作するなど。

私は自宅のラップトップのMacbookで、家に来て、絶対に同じ時間枠と同じツール上の同じパラメータは、テスターで完全に異なる結果を示し、任意の提案やアイデアなぜそうですか?

 
Artyom Trishkin:

Array_element_value = Array[index];


どうも、新たな問題が出てきましたね。以下の条件を書き込むと、エラー 'PriceBlizko1' - 未宣言の識別子が発生します。その理由を教えてください。

ダブルプライス// 選択された注文の価格

double Mas[];//すべてのオーダーを並べるための配列

for(int i=0; i<OrdersTotal(); i++) // オーダーループ

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))である。

{


Price=OrderOpenPrice()です。//Fill array with prices

Mas[i] = Price;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // これで始値の降順で並べられるようになりました。

int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //現在値から最も値の近い要素のインデックスを決定する

double PriceBlizko1=Mas[Blizko1];

}

if (PriceBlizko1-Bid>=30*Point) //下位オーダーが30ポイントよりさらに上であれば !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

OrderSend(Symbol(),OP_SELL,LtsS,Bid,2,0,Bid+30*Point); //売りの新規注文

アラート(GetLastError())。//エラーメッセージを表示します。



 
vikzip:

ボタンを使ってコードを挿入してください