MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1425 1...141814191420142114221423142414251426142714281429143014311432...1953 新しいコメント Artyom Trishkin 2021.03.20 09:38 #14241 Taras Slobodyanik:コメントの形式は証券会社によって異なる場合があります。"To "と "From "の不在を確認していない Roman Shiredchenko 2021.03.20 10:23 #14242 Artyom Trishkin: "To "と "From "がないことに気づかなかった Artemさん、上の私の質問を調べてみてください...。 ANDREY 2021.03.20 14:46 #14243 皆さん、ごきげんよう。MQL4(またはMQL5で、MQL4で 動作するもの)で、 配列 LoY[2][7]を配列LoY[7][2] に変換する、または その逆の 関数が あるか教えてください。トランスポジションのようなもの。以下は、私が必要とする変換のサンプルです。機能を持たせたい。ループの中で配列を変換する方法はすでに知っています。よろしくお願いします。 Maxim Kuznetsov 2021.03.20 14:53 #14244 ANDREY:皆さん、ごきげんよう。MQL4(またはMQL5で、MQL4で 動作するもの)で、 配列 LoY[2][7]を配列LoY[7][2] に変換する 関数 、またはその逆の 関数があれば教えてください。トランスポジションのようなもの。以下は、私が必要とする変換のサンプルです。ご協力ありがとうございました。 参考までに、古典的なアルゴリズム(IT全般)では、このような操作をzipと呼びます。 そのような機能はライブラリにはありません。ひどく無駄で非効率的です。配列の全データを並べ替えるよりも、アルゴリズムやプログラムのインデックスを変更したり、間接アクセスを使用する方が簡単で高速です。 ANDREY 2021.03.20 15:00 #14245 Maxim Kuznetsov:配列のデータをすべて並べ替えるより、アルゴリズムやプログラムのインデックスを変更したり、間接アクセスを使用する方が簡単で早い。 ご返信ありがとうございました。残念ながら、私はあなたのようにプログラミングが高度なわけではありません。私の問題を解決するために、配列のインデックスを 変更するmql4 コードを書いていただけるとありがたいです。また、間接参照の例を挙げていただければ、二重の意味でありがたいです。 あなたの思考回路をより正確に理解し、あなたのおかげで新しい、私に役立つ何かを学ぶことができます。 Maxim Kuznetsov 2021.03.20 15:17 #14246 ANDREY:ご返信ありがとうございました。残念ながら、私はあなたのようにプログラミングが高度なわけではありません。私の問題を解決するために、配列のインデックスを 変更するmql4 コードを書いていただけると大変ありがたいです。また、間接参照の例を挙げていただければ、二重の意味でありがたいです。あなたの思考回路をより正確に理解し、あなたのおかげで新しい、私に役立つ何かを学ぶことができます。 void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) { for(int i=0;i<7;i++) for(int j=0;j<2;j++) { dst[j][i]=src[i][j]; } } 短いですが、最悪です :-) 2つの入れ子ループと配列の要素ごとのコピーです。 アルゴリズムの内部では、インデックスの名前を変更するだけでよいのです。コードの中でiをjに、またはその逆に変更するだけです...。 ANDREY 2021.03.20 15:21 #14247 Maxim Kuznetsov: void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) { for(int i=0;i<7;i++) for(int j=0;j<2;j++) { dst[j][i]=src[i][j]; } } 短いですが、一番やっちゃいけないことです :-) ありがとうございました。そして、最高の一例?:-)...完全に理解できるようにね。 要素ごとのコピーは時間がかかり、エネルギーを消費する......特に大きな配列の場合......私の記憶違いでなければ。 Aleksei Stepanenko 2021.03.20 15:38 #14248 アンドレイ、なぜそんなことをしたいんだ?すでに配列にデータが集まっているのであれば、何も動かさずにそのまま使う方法もあります。あるいは、あらかじめ正しい順序で配列に組み立てておく。何を手に入れたいですか? ANDREY 2021.03.20 16:03 #14249 Aleksei Stepanenko: アンドレイ、なぜそれが必要なんだ?すでに配列にデータが集まっているのであれば、何も動かさずにそのまま利用する方法もあります。あるいは、あらかじめ正しい順序で配列に組み立てておくこともできます。何を手に入れたいですか? 以下は、私が必要とするものを説明するための簡単なコードです。 double LoY[2][31],LoU,LoU1; int S,S1,S2; void OnTick() { //*************************************************** БЛОК 1 if (Minute()==20&&Minute()!=S1) { ArrayFill(LoY,0,10,0.5555); S1=Minute(); } //*************************************************** БЛОК 2 if (Minute()!=S) { LoY[0][S2]=Bid; ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND); Print("----LoY[0][1]-- Г --- [0] ", LoY[0][0]," [1] ", LoY[0][1]," [2] ", LoY[0][2]," [3] ", LoY[0][3]," [4] ", LoY[0][4]," [26] ", LoY[0][26]," [27] ", LoY[0][27]," [28] ", LoY[0][28]," [30] ", LoY[0][30]," [60] ", LoY[0][60]); Print("----LoY[1][0]-- В --- [0] ", LoY[0][0]," [1] ", LoY[1][0]," [2] ", LoY[2][0]," [3] ", LoY[3][0]," [4] ", LoY[4][0]," [26] ", LoY[26][0]," [27] ", LoY[27][0]," [28] ", LoY[28][0]," [30] ", LoY[30][0]," [60] ", LoY[60][0]); S2++; if (S2==62) { S2=0; } S=Minute(); } } ブロック1では、ArrayFill(LoY,0,10,0.5555)が実行され、配列の 最初の10要素に 値0.5555を代入しています。その後、0列目から31列目までのNULL行全体をソートする必要があります。 ブロック2でArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND);を使ってソートしたいのですが、この関数は2次元配列をその1次元目で、つまり行数でソートするので、ソートが出来ません。そして、私は1だけを並べ替えるために文字列を持っています。2次元のArraySort()、すなわち、列は2次元配列(唯一の1次元)を並べ替えません。 そこで、最初のブロックの後のLoY[2][31]をLoY[31][2] に変換して、ArraySort()で2ブロック目に必要な値をソート すればいいのではないかと考えた。 そして、私はArrayFil()がそれらの最初の10を変更した後、ゼロ行からすべての値をソートする必要があります。 2次元配列を2次元目、つまり列でソートすることは、他の関数などを使って可能でしょうか? すみません...コードの削除の仕方がわからない。そこで、180行目のLoY[S2][0]=Bidの代わりに、LoY[0][52]=Bidが必要であり、エラーがあるとだけ述べます。 ご協力ありがとうございました。 Aleksei Stepanenko 2021.03.20 16:14 #14250 両方の行の値を並べ替えたいのか、それとも最初の行だけを並べ替えたいのか? 1...141814191420142114221423142414251426142714281429143014311432...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
コメントの形式は証券会社によって異なる場合があります。
"To "と "From "がないことに気づかなかった
皆さん、ごきげんよう。
MQL4(またはMQL5で、MQL4で 動作するもの)で、 配列 LoY[2][7]を配列LoY[7][2] に変換する、または その逆の 関数が あるか教えてください。トランスポジションのようなもの。以下は、私が必要とする変換のサンプルです。機能を持たせたい。ループの中で配列を変換する方法はすでに知っています。
よろしくお願いします。
皆さん、ごきげんよう。
MQL4(またはMQL5で、MQL4で 動作するもの)で、 配列 LoY[2][7]を配列LoY[7][2] に変換する 関数 、またはその逆の 関数があれば教えてください。トランスポジションのようなもの。以下は、私が必要とする変換のサンプルです。
ご協力ありがとうございました。
参考までに、古典的なアルゴリズム(IT全般)では、このような操作をzipと呼びます。
そのような機能はライブラリにはありません。ひどく無駄で非効率的です。配列の全データを並べ替えるよりも、アルゴリズムやプログラムのインデックスを変更したり、間接アクセスを使用する方が簡単で高速です。
配列のデータをすべて並べ替えるより、アルゴリズムやプログラムのインデックスを変更したり、間接アクセスを使用する方が簡単で早い。
ご返信ありがとうございました。残念ながら、私はあなたのようにプログラミングが高度なわけではありません。私の問題を解決するために、配列のインデックスを 変更するmql4 コードを書いていただけるとありがたいです。また、間接参照の例を挙げていただければ、二重の意味でありがたいです。
あなたの思考回路をより正確に理解し、あなたのおかげで新しい、私に役立つ何かを学ぶことができます。
ご返信ありがとうございました。残念ながら、私はあなたのようにプログラミングが高度なわけではありません。私の問題を解決するために、配列のインデックスを 変更するmql4 コードを書いていただけると大変ありがたいです。また、間接参照の例を挙げていただければ、二重の意味でありがたいです。
あなたの思考回路をより正確に理解し、あなたのおかげで新しい、私に役立つ何かを学ぶことができます。
void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) {
for(int i=0;i<7;i++)
for(int j=0;j<2;j++) {
dst[j][i]=src[i][j];
}
}
短いですが、最悪です :-) 2つの入れ子ループと配列の要素ごとのコピーです。
アルゴリズムの内部では、インデックスの名前を変更するだけでよいのです。コードの中でiをjに、またはその逆に変更するだけです...。
void Convert_7x2_2x7 (const double &src[7][2],double &dst[2][7]) {
for(int i=0;i<7;i++)
for(int j=0;j<2;j++) {
dst[j][i]=src[i][j];
}
}
短いですが、一番やっちゃいけないことです :-)
ありがとうございました。そして、最高の一例?:-)...完全に理解できるようにね。
要素ごとのコピーは時間がかかり、エネルギーを消費する......特に大きな配列の場合......私の記憶違いでなければ。
アンドレイ、なぜそれが必要なんだ?すでに配列にデータが集まっているのであれば、何も動かさずにそのまま利用する方法もあります。あるいは、あらかじめ正しい順序で配列に組み立てておくこともできます。何を手に入れたいですか?
以下は、私が必要とするものを説明するための簡単なコードです。
ブロック1では、ArrayFill(LoY,0,10,0.5555)が実行され、配列の 最初の10要素に 値0.5555を代入しています。その後、0列目から31列目までのNULL行全体をソートする必要があります。
ブロック2でArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND);を使ってソートしたいのですが、この関数は2次元配列をその1次元目で、つまり行数でソートするので、ソートが出来ません。そして、私は1だけを並べ替えるために文字列を持っています。2次元のArraySort()、すなわち、列は2次元配列(唯一の1次元)を並べ替えません。
そこで、最初のブロックの後のLoY[2][31]をLoY[31][2] に変換して、ArraySort()で2ブロック目に必要な値をソート すればいいのではないかと考えた。 そして、私はArrayFil()がそれらの最初の10を変更した後、ゼロ行からすべての値をソートする必要があります。
2次元配列を2次元目、つまり列でソートすることは、他の関数などを使って可能でしょうか?
すみません...コードの削除の仕方がわからない。そこで、180行目のLoY[S2][0]=Bidの代わりに、LoY[0][52]=Bidが必要であり、エラーがあるとだけ述べます。
ご協力ありがとうございました。