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

 

皆様こんにちは、MQL4について質問です。

デフォルトでは、配列のインデックスは0から始まり、昇順になります

Q&A

上記の配列のインデックスを、任意の整数値で、任意の順序で10個作成できる関数、または言語構成はどれか。例えば、以下のように。この方法を適切なコードで実演していただけるとありがたいです。

ありがとうございます。

 
ANDREY:

皆様こんにちは、MQL4について質問です。

デフォルトでは、配列のインデックスは0から始まり、昇順になります

Q:

上記の配列に、任意の整数値で、任意の順序で10個の値をインデックスするためには、どのような関数、または言語構造を使用すればよいでしょうか?例えば、以下のように。この方法を適切なコードで実演していただけるとありがたいです。

ありがとうございます。

バッファまたはインデックスをランダムに シャッフルす (MathRand)

 
Valeriy Yastremskiy:

Alert構造のインジケータで。下から5行目がAlert(b) です。

これは、システムが起動してからのミリ秒数であるようです)

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

バッファまたはインデックスをランダムに シャッフルす (MathRand)

インデックスのランダム配列については、MathRand() 関数で行っていると理解しています。

私の質問は、デフォルトのインデックス値(0,1,2,3,4,5,6...9)を、私にとって必要なインデックス値(例えば45,90,119,120,234,336,338,564,607,901)へ置換するための関数はあるかということです。インジケータを書く のにこの操作は必要ない。

ありがとうございます。

 
ANDREY:

インデックスを任意の順番に並べることについては、MathRand() 関数で行っていると理解しています。

質問 どの関数を使えば、デフォルトのインデックス値 (0,1,2,3,4,5,6...9) を、例えば ( 45,90,119,120,234,336,338,564,607,901) のような、自分にとって必要なインデックス値に置き換えることができるのでしょうか。インジケータを書く のにこの操作は必要ない。

ありがとうございます。

2つ目のバッファ、インデックスバッファを作成します。
0からsize_bufferまでの混合値で埋める - これがインデックスである)

...または、乱数を取って、それを使ってバッファの値を得るだけです。
 
Taras Slobodyanik:

2つ目のバッファであるインデックスバッファを作成します。
0からsize_bufferまでのシャッフルされた値で埋める - これがインデックスである)

...または、乱数を取って、それを使ってバッファの値を得るだけです。

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

以下は簡単なコードです。

double MaX[10];
int a;
void OnTick()
{
if (Minute()!=Min)
{
if (a==9)
{
a=0;
}
a++;
MaX[a]=Bid;
Min=Minute();
}
}

10分後、配列は0から9までのインデックスを持つ価格値で満たされます。
差し支えなければ、配列が同じ値で満たされるようにコードを変更してください。ただし、この配列のインデックスは次の順序になります。45,90,119,120,234,336,338,564,607,901

インデックス値のシャッフルはまだ必要ありません。
ありがとうございました。

ただ、私のストラテジーにはインジケーターがないんです。バッファーには詳しくないのですが。私の理解では、バッファはインジケーターの要素の一つです。

 
ANDREY:

よろしくお願いします。

以下は簡単なコードです。

10分後、配列は0から9までのインデックスを持つ価格値で満たされます。
差し支えなければ、配列が同じ値で満たされるようにコードを変更してください。ただし、この配列のインデックスは次のようになります。45,90,119,120,234,336,338,564,607,901

インデックス値のシャッフルはまだ必要ありません。
ありがとうございました。

ただ、私のストラテジーにはインジケーターがないんです。バッファーには詳しくないのですが。私の理解では、バッファはインジケーターの要素の一つです。

インデックス901は、配列に902個の要素があることを意味します。
Mass[45]=Max[0].....Mass[901]=Max[9]
 
Valeriy Yastremskiy:
インデックス901は、配列に902個の要素があることを意味します。
Mass[45]=Max[0].....Mass[901]=Max[9]

いいえ ...配列の要素は10個です。そして、これら10個の要素のインデックスは、この順序でこれらの値で示されなければならない (0)45,(1) 90,(2) 119,(3)120,(4) 234,(5) 336,(6) 338, (7) 564,(8) 607,(9) 901

括弧内は旧指標の値。これらは、括弧のない新しい値に置き換える必要があります。

配列の 要素は、0,1,2,3,4......の順ではなく、任意の 数の数値の並びでインデックスを付けることができるのです。100

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
ANDREY:

いいえ ...は、配列に10個の要素があります。そして、これら10個の要素のインデックスは、この順序でこれらの値で示されなければならない (0)45,(1) 90,(2) 119,(3)120,(4) 234,(5) 336,(6) 338, (7) 564,(8) 607,(9) 901

括弧内は旧指標の値。これらは、括弧のない新しい値に置き換える必要があります。


つまり、0,1,2,3,4......の順ではなく、任意の 数の数値の並びで配列の要素を インデックスすることができるんだ。100

インデックス(lat.indexは リスト、レジストリ、インデクサ、人差し指の意)とは、ある項目が 配列中のどこに あるかを示す数字、文字、その他の記号の組み合わせのことです。

インデックス45はリストの45番目の要素を示し、インデックス90は90番目の要素を示す。

 
ANDREY:

いいえ ...は、配列に10個の要素があります。そして、これら10個の要素のインデックスは、この順序でこれらの値で示されなければならない (0)45,(1) 90,(2) 119,(3)120,(4) 234,(5) 336,(6) 338, (7) 564,(8) 607,(9) 901

括弧内は旧指標の値。これらは、括弧のない新しい値に置き換える必要があります。


つまり、0、1、2、3、4......の順ではなく、任意の 数の数字列で配列要素を インデックスすることができるんだ。

配列のインデックスは0からNまでのインデックスなんだけど、意味わかんない。そして、あなたが欲しいのは、むしろハッシュを使った辞書のようなものです。配列でのやり方がわからないし、普通の配列では無理だと思う。MTに辞書を搭載したGeneric クラスライブラリがあります。それが助けになるはずです。

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.07
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...