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

 

1つのテンプレートを作成し、複数の機能に適用することは可能ですか?

template<typename T>
void Fun1(T &y)
{тело
}
void Fun1(T &r,T k)
{тело
}
int Fun1(T &r,T k)
{тело return(0);
}

同じ型の変数を使用する場合、1つのテンプレートを複数の関数に使用することが可能かどうかが分かれば、非常に便利です。

 
こんにちは、原油、指数、金属の相場を追加する方法を教えていただけませんか?
 
vfrfhjybgjakjncmrb:
こんにちは、オイル、インデックス、メタルなどのクォートを追加する方法を教えていただけませんか?

まず、事務所が放送しているかどうかで決まります。また、勤務する端末によっても異なります。もし、事務局が放送しているのであれば、どの口座で、どのような条件でこれらの相場が放送されているのかを知る必要があります。おそらく、商品のリストを開けば、これらの商品はそこにあるはずです。事務所が自分にとって無理な条件で放送している場合は、この名言でチャートを作り、毎回更新する必要があるのです。証券会社がOilを放送することは確実なのでしょうか?

 
Seric29:

1つのテンプレートを作成し、複数の機能に適用することは可能ですか?

同じ型の変数を使用する場合、1つのテンプレートを複数の関数に使用することが可能かどうかが分かれば、非常に便利です。

いいえ。各機能の完全な説明を個別に記載する必要があります。そうでないと、後で自分のコードを読めなくなりますから。

 
特定のインディケータをすべてのチャートから一度に削除するにはどうすればよいですか?新しいテンプレートを適用してもうまくいかない。台本はどうですか?
 
Ilya Prozumentov:

各機能の詳細については、個別に説明する必要があります。そうでないと、しばらくして自分のコードを読めなくなりますよ。

それは残念なことです。どうせやらないと自分のコードを読めなくなるんだから。ただ、関数の中で同じ型の変数を使うことが多いので、コンパクトなプログラムを書きたい、そう思って質問しました。クラス」を使えばいいのではと思いましたが、まだ使いこなせていません。だから、多くの機能のテンプレートを作らなければならないかどうかがわかるんです。

 

このエントリーがうまくいかない理由を教えてくれる人。配列が格納されている構造体のフィールドにアクセスし、どの条件が成立するかによって、配列を回転させたい。

   struct SD1{
   int a[10];//int q[10][2];
};SD1 a1;

struct SD2{
   int a[10][2];
};SD2 a2;

template<typename T>//,typename W
void MoveArray(T & s){//,W&e
   //Alert(ArrayDimension(s.a));
     int r=0;r=ArrayDimension(s.a);Print("r-ранг: ",r);if(r==1)пишу условие что если ранг равен 1му 
      {for(int cn=0; cn<=8; cn++)                              то крутить этот цикл
     {                
      s.a[cn]=s.a[cn+1];
     }} else if (r==2)            если ранг равен 2ум
      {for(int cn=0; cn<=8; cn++) крутить этот цикл
     {                
      s.a[cn][0]=s.a[cn+1][0];
      s.a[cn][1]=s.a[cn+1][1];
     }}  
}

結局、この条件if(r==1)が false である にもかかわらず、最初のループに 入り、ランクが 2um であればなぜそこに入り、false であるにもかかわらず、どのようにして何かが実行されるボディに入り 込むのでしょうか。

   MoveArray(a2);в OnTick
   for(int i=0;i<10;i++){Print("q: ",i,": ",a2.a[i][0]);}
int yy=ArrayDimension(a2.a);Print("Ранг: ",yy," ");
 
Seric29:

可哀想に。どうせ、やらなきゃ、やらなきゃ、自分のコードを読めなくなるんだから。ただ、関数の中で同じ型の変数を使うことが多いので、コンパクトなプログラムを書きたい、そう思って質問しました。クラス」を使えばいいのではと思いましたが、まだ使いこなせていません。だから、多くの機能のテンプレートを作らなければならないかどうかがわかるんです。

どうすればコンパクトになるのか、その本質がつかめないのです。上の例では、2行分保存されます。そんなに節約したければ、マクロ置換を書いて、関数の前の行でそれを使えばいい。

#define  templ(T) templeate<typename T>

templ(T1) void Funct(T1 a)
 
Ilya Prozumentov:
#define  templ(T) template<typename T>

templ(T1) void Funct(T1 a)

各関数の前にtempl(T1) と書いて、変数や必要な引数を取る必要があるのでしょうか?templ(T)が宣言され、templ(T1) が呼ばれるのはなぜですか?各関数の前に数字をつけるべきか(templ(T1)templ(T2)templ(T3))、どこでもtempl(T1) と書いていいのでしょうか?また,template<typename T>中で複数のパラメータがスコア化 されている場合,以下のように なります。template<typename T,typename P,typename Q>-templ(T,P,Q).

 
問題が発生しました。他のEAで利確したいのですが、このEAではストップロスを引いて利確することができません。誰か訂正してくれませんか!?作者が答えない!?
ファイル:
cm-MA_Gread.mq4  18 kb