Для работы с графикой в MQL5 создана специальная библиотека Graphic.mqh. В статье описан пример ее практического применения и поясняется сама суть сортировок. По каждой сортировке существует как минимум отдельная статья, а по ряду из них уже опубликованы целые исследования, поэтому здесь описывается лишь общая идея.
//--- переменные для идентификаторов графиковlong currChart,prevChart=ChartFirst();
int i=0,limit=100;
Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart);
while(i<limit)// у нас наверняка не больше 100 открытых графиков
{
currChart=ChartNext(prevChart); // на основании предыдущего получим новый графикif(currChart<0) break; // достигли конца списка графиковPrint(i,ChartSymbol(currChart)," ID =",currChart);
prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
i++;// не забудем увеличить счетчик
}
mql4に関する質問、特にArraySort()関数について
以下は私のコードです
.
注文開始後、LoY[0][0]がBid( 1.6134)を取得した時点で、ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND)は配列を一次元目で昇順にソートし、値が最大の配列要素を 先頭に移動しています。そのため、昇順にソートされた配列では、LoY[0][0] はその値と共にLoY[30][0] となる。これは論理的であり、したがって私も同意する。
私の考えでは、何が論理的でないのか、何が受け入れられないのか。ArraySort()LoY[15][0] の値 (1.61040) は 30 番目を除く他の配列項目の値と等しいにもかかわらず、なぜインデックスの下に 0 が配置されるのでしょうか?同じように、ArraySort()LoY[30][0] は、その値(1.61040)が30番目以外の他のすべての配列要素の値と等しいにもかかわらず、なぜインデックス15を置く のかが明らかではありません。
質問:このティックでインデックス0の要素をLoY[1][0]、インデックス15の要素をLoY[15][0]、インデックス29の要素をLoY[30][0]
とする方法はありますか。つまり、同じ値の要素をさらにソートしない関数を 作るにはどうすればよいのでしょう。 論理的でなく、感覚的である。
よろしくお願いします。
これがソートアルゴリズム だろう。配列の要素にはいくつかの順列があります。
他の並べ替えも試してみてください。
これがソートアルゴリズム だろう。配列の要素にはいくつかの順列があります。
他の並べ替えも試してみてください。
アドバイスをいただき、ありがとうございました。mql4で他のソートオプションがあるかどうか教えてください。もしそうなら、ディレクトリのどこにあるのでしょうか?
を試してみてください。
は1次元の配列に対する関数ですが、作り直すことができます。
を試してみてください。
確かに1次元の配列に対する関数ですが、作り直せばいいんです。
ありがとうございました。
ひとことお願いします。
コードは開いているチャートを 探し、シンボルの名前でラベルを作成しますが、2つのチャートが同じシンボルを持っている場合。
とすると、1つのチャートにしかラベルが作成されないのですが、どうしたらいいのでしょうか?
ひとことお願いします。
コードは開いているチャートを 探し、シンボルの名前でラベルを作成しますが、2つのチャートが同じシンボルを持っている場合。
ラベルが1つのチャートにしか作成されないのですが、何が間違っているのでしょうか?
同じシンボルのチャートID(ChartID())が異なる。使ってみてください。
同一シンボルの ChartID()識別子が異なる。使ってみてください。
ChartFirst()+i
かいひょう
それとも、私が誤解していたのでしょうか?コードという形で、明確にする方法はないのでしょうか?
非常に不思議なことに、すべての新規オープンのチャートに マークが付き、1つのチャートだけが無視される(
ドキュメントとサンプルコードをよく読んでください。ループが正しく構成されていません。
forとwhileのループが同じように動作するなんて言わないでください。問題はそこではなく、ハイライトされたラインです。