MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 86 1...798081828384858687888990919293...1953 新しいコメント Artyom Trishkin 2017.01.21 21:46 #851 trader781:再度ここにコードを書く必要がないように、投稿844を書き直しました。0サイズの配列については、0は整数であったり、ブール値の偽証に相当するものであったり、空虚であったり、開始点であったりします。 ゼロというのは関係ないんです。配列のサイズを ゼロにすると、ゼロジンジャーと呼んで、ゼロになります。つまり、配列は0になる。 Artyom Trishkin 2017.01.21 21:51 #852 trader781:再度ここにコードを書く必要がないように、投稿844を書き直しました。0サイズの配列については、0は整数かもしれないし、ブール値の偽証に相当するかもしれないし、空虚かもしれないし、出発点かもしれません。あと、正しいコードを正しい記事に挿入させるのは勘弁してください。//+------------------------------------------------------------------+//| ProjectName |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+#property strict//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+struct myorder { int Ticket; double orderopenprice; int ordertype; double profit; double stoploss; double lot; }; myorder orders[];int i;int Magic=444;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { CalcOrders(); }//+------------------------------------------------------------------+void CalcOrders() { int count1=0; for(i=OrdersTotal()-1; i>=0; i--) { if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol()) && (OrderMagicNumber()==Magic) && (OrderType()<2)) { count1++; ArrayResize(orders,count1); orders[count1-1].Ticket=OrderTicket(); orders[count1-1].lot=OrderLots(); orders[count1-1].orderopenprice=OrderOpenPrice(); orders[count1-1].ordertype=OrderType(); orders[count1-1].profit=OrderProfit(); orders[count1-1].stoploss=OrderStopLoss(); } } ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND); } //+------------------------------------------------------------------+では、どのような配列で記入し、どのようなフィールドでソートしているかを見てみましょう。そして、最も重要なことは、なぜこの選別が必要なのか、ということです。そのポイントは何でしょうか? Any questions from newcomers コーディングの方法は? 出口戦略ステップ・ストップとトレーリング・ストップの比較 Mickey Moose 2017.01.21 22:02 #853 Artyom Trishkin:そして、正しいコードを正しいメッセージに貼り付けさせるのは勘弁してください。А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?注文の配列を、ゼロの値から昇順に並べ替 えます。例えば、20件の注文があり、そのうち18件はかなり偶然に数ピップス上がったので、すぐに手仕舞いした場合 Alexey Viktorov 2017.01.22 09:11 #854 trader781:注文の配列を、ゼロの値から昇順に並べ替 えます。例えば、20件の注文があって、そのうちの18件が絶対に偶然に2、3ポイント上がって、すぐに手で閉じたとします。どうしてもチケットでソートしたい場合は、2つのアレイを作る必要があります。一つは構造体の配列、もう一つは二次元の配列で、一次元目にオーダーチケット、二次元目に構造体の配列にオーダー情報が格納されているインデックスであるカウンターインデックスが格納されています。そして、これらのアレイを1つのループで同時に埋める。あなたはずっとこの問題を解こうとしていたので、あなたが到達しようとした目的さえ覚えていません。そして、おそらく他のすべての人たちも。私の記憶が正しければ、注文の一覧から一定の数を選択する必要があります。それで何が問題なんだ?単純な一次元配列を作ってソートして、orderSelect(array[required], SELECT_BY_TICKET) すればいいだけなのに...。であれば、この注文はどうとでもできる。 Artyom Trishkin 2017.01.22 09:19 #855 Alexey Viktorov:どうしてもチケットでソートしたい場合は、2つのアレイを作る必要があります。一つは構造体配列、もう一つは二次元配列で、一次元目に注文券、二次元目に構造体配列の注文情報が格納されているインデックスであるカウンタインデックスが格納されています。そして、これらのアレイを1つのループで同時に埋める。あなたはずっとこの問題を解こうとしていたので、あなたが到達しようとした目的さえ覚えていません。そして、おそらく他のすべての人たちも。私の記憶が正しければ、注文の一覧から一定の数を選択する必要があります。それで何が問題なんだ?単純な一次元配列を作ってソートして、orderSelect(array[required], SELECT_BY_TICKET) すればいいだけなのに...。そうすれば、この注文はどうにでもなる。そこで何をすればいいのか、私も覚えていません。でも、いいこともあるんですよ。関数の中で別のローカル配列が必要で、それをソートして、ソートした配列からグローバル配列を埋めなければならないのです。 Mickey Moose 2017.01.22 09:59 #856 Alexey Viktorov:どうしてもチケットでソートしたい場合は、2つのアレイを作る必要があります。一つは構造体配列、もう一つは2次元配列で、1次元目に注文券、2次元目に構造体配列の注文情報が格納されているインデックスであるカウンタインデックスが格納されている。そして、これらのアレイを1つのループで同時に埋める。あなたはずっとこの問題を解こうとしていたので、あなたが到達しようとした目的さえ覚えていません。そして、おそらく他のすべての人たちも。私の記憶が正しければ、注文の一覧から一定の数を選択する必要があります。それで何が問題なんだ?単純な一次元配列を作ってソートして、orderSelect(array[required], SELECT_BY_TICKET) すればいいだけなのに...。であれば、この注文は好きにすればいい。 いや、違うやり方や配列を避ける方法がたくさんあることは理解しています。すでに1つの配列があるのに、なぜ2つ必要なのでしょうか? Alexey Viktorov 2017.01.22 10:04 #857 trader781: いや、別にアレイを使わずにやる方法がたくさんあるのは理解しています。構造体が1つなのに、なぜ2つなのか?なぜなら、単純な配列は配列の最初の次元の値でソートされ、構造体の配列は どのようにソートさ れるのか、私にはわからないからです。でも、面白い質問ですね...。今度は、構造体の配列をソートしてみます。 Vitaly Muzichenko 2017.01.22 10:11 #858 Alexey Viktorov:なぜなら、単純な配列は配列の最初の次元の値でソートされますが、構造体の配列は どのようにソートされる のか、私には わからないからです。でも、面白い質問ですね...。今度は、構造体の配列をソートしてみます。 構造的に何のためにあるのか、まったくわからないんです。mqのプログラムは1つのファイルに書かれ、配列は1つのスクロールで処理され、1つの画面に収まるようになっています。この場合、スポーツ的な面白さを追求するための構造とは? Mickey Moose 2017.01.22 10:23 #859 Alexey Viktorov:なぜなら、単純な配列は配列の最初の次元の値でソートされますが、構造体の配列は どのようにソートさ れるのかが全く分からないからです。質問は面白いけれども...。構造体の配列を整理してみようと思います。何なのか、何についてなのか、さっぱりわからないでも、せっかく話題になったのだから、捨てるのもバカらしい。また、クラスの配列もあります。 Alexey Viktorov 2017.01.22 10:24 #860 Vitaly Muzichenko: なぜ構造という形で必要なのか、全く理解できない。mqのプログラムは1つのファイルに書かれ、配列は1つのスクロールで処理され、1画面に収まる。この場合、スポーツ的な面白さを追求するための構造とは?私たちはスポーツのためにすべてを書きます。まず、何がどのように機能するのかを理解し、より効果的な書き方を考えるようになります。構造体配列のソートについては、予想通り、実験に失敗しました。コンパイル時にすでに「式は効果 なし」と表示されていた 1...798081828384858687888990919293...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
再度ここにコードを書く必要がないように、投稿844を書き直しました。
0サイズの配列については、0は整数であったり、ブール値の偽証に相当するものであったり、空虚であったり、開始点であったりします。
再度ここにコードを書く必要がないように、投稿844を書き直しました。
0サイズの配列については、0は整数かもしれないし、ブール値の偽証に相当するかもしれないし、空虚かもしれないし、出発点かもしれません。
あと、正しいコードを正しい記事に挿入させるのは勘弁してください。
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
struct myorder
{
int Ticket;
double orderopenprice;
int ordertype;
double profit;
double stoploss;
double lot;
};
myorder orders[];
int i;
int Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
CalcOrders();
}
//+------------------------------------------------------------------+
void CalcOrders()
{
int count1=0;
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
{
count1++;
ArrayResize(orders,count1);
orders[count1-1].Ticket=OrderTicket();
orders[count1-1].lot=OrderLots();
orders[count1-1].orderopenprice=OrderOpenPrice();
orders[count1-1].ordertype=OrderType();
orders[count1-1].profit=OrderProfit();
orders[count1-1].stoploss=OrderStopLoss();
}
}
ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
}
//+------------------------------------------------------------------+
では、どのような配列で記入し、どのようなフィールドでソートしているかを見てみましょう。そして、最も重要なことは、なぜこの選別が必要なのか、ということです。そのポイントは何でしょうか?
そして、正しいコードを正しいメッセージに貼り付けさせるのは勘弁してください。
注文の配列を、ゼロの値から昇順に並べ替 えます。
例えば、20件の注文があり、そのうち18件はかなり偶然に数ピップス上がったので、すぐに手仕舞いした場合
注文の配列を、ゼロの値から昇順に並べ替 えます。
例えば、20件の注文があって、そのうちの18件が絶対に偶然に2、3ポイント上がって、すぐに手で閉じたとします。
どうしてもチケットでソートしたい場合は、2つのアレイを作る必要があります。一つは構造体の配列、もう一つは二次元の配列で、一次元目にオーダーチケット、二次元目に構造体の配列にオーダー情報が格納されているインデックスであるカウンターインデックスが格納されています。そして、これらのアレイを1つのループで同時に埋める。
あなたはずっとこの問題を解こうとしていたので、あなたが到達しようとした目的さえ覚えていません。そして、おそらく他のすべての人たちも。
私の記憶が正しければ、注文の一覧から一定の数を選択する必要があります。それで何が問題なんだ?単純な一次元配列を作ってソートして、orderSelect(array[required], SELECT_BY_TICKET) すればいいだけなのに...。であれば、この注文はどうとでもできる。
どうしてもチケットでソートしたい場合は、2つのアレイを作る必要があります。一つは構造体配列、もう一つは二次元配列で、一次元目に注文券、二次元目に構造体配列の注文情報が格納されているインデックスであるカウンタインデックスが格納されています。そして、これらのアレイを1つのループで同時に埋める。
あなたはずっとこの問題を解こうとしていたので、あなたが到達しようとした目的さえ覚えていません。そして、おそらく他のすべての人たちも。
私の記憶が正しければ、注文の一覧から一定の数を選択する必要があります。それで何が問題なんだ?単純な一次元配列を作ってソートして、orderSelect(array[required], SELECT_BY_TICKET) すればいいだけなのに...。そうすれば、この注文はどうにでもなる。
そこで何をすればいいのか、私も覚えていません。でも、いいこともあるんですよ。
関数の中で別のローカル配列が必要で、それをソートして、ソートした配列からグローバル配列を埋めなければならないのです。
どうしてもチケットでソートしたい場合は、2つのアレイを作る必要があります。一つは構造体配列、もう一つは2次元配列で、1次元目に注文券、2次元目に構造体配列の注文情報が格納されているインデックスであるカウンタインデックスが格納されている。そして、これらのアレイを1つのループで同時に埋める。
あなたはずっとこの問題を解こうとしていたので、あなたが到達しようとした目的さえ覚えていません。そして、おそらく他のすべての人たちも。
私の記憶が正しければ、注文の一覧から一定の数を選択する必要があります。それで何が問題なんだ?単純な一次元配列を作ってソートして、orderSelect(array[required], SELECT_BY_TICKET) すればいいだけなのに...。であれば、この注文は好きにすればいい。
いや、別にアレイを使わずにやる方法がたくさんあるのは理解しています。構造体が1つなのに、なぜ2つなのか?
なぜなら、単純な配列は配列の最初の次元の値でソートされ、構造体の配列は どのようにソートさ れるのか、私にはわからないからです。
でも、面白い質問ですね...。今度は、構造体の配列をソートしてみます。
なぜなら、単純な配列は配列の最初の次元の値でソートされますが、構造体の配列は どのようにソートされる のか、私には わからないからです。
でも、面白い質問ですね...。今度は、構造体の配列をソートしてみます。
なぜなら、単純な配列は配列の最初の次元の値でソートされますが、構造体の配列は どのようにソートさ れるのかが全く分からないからです。
質問は面白いけれども...。構造体の配列を整理してみようと思います。
何なのか、何についてなのか、さっぱりわからない
でも、せっかく話題になったのだから、捨てるのもバカらしい。また、クラスの配列もあります。
なぜ構造という形で必要なのか、全く理解できない。mqのプログラムは1つのファイルに書かれ、配列は1つのスクロールで処理され、1画面に収まる。この場合、スポーツ的な面白さを追求するための構造とは?
私たちはスポーツのためにすべてを書きます。まず、何がどのように機能するのかを理解し、より効果的な書き方を考えるようになります。
構造体配列のソートについては、予想通り、実験に失敗しました。コンパイル時にすでに「式は効果 なし」と表示されていた