MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 420 1...413414415416417418419420421422423424425426427...1953 新しいコメント Maxim Kuznetsov 2018.01.17 05:33 #4191 igrok333: 変数の種類を返す関数はありますか? 例えば、こう書きますね。 int a=10; と書くと functia(a); と表示され、INT!:) string functia(int a) { return "INT!"; }.// 突然 string functia(double a) { return "DABLE!"; }.// また、不意に Artyom Trishkin 2018.01.17 06:53 #4192 igrok333: 変数型を返す関数はありますか? 例えば、こう書きますね。 int a=10; と書くと functia(a); と表示され、INT!:)ヘルプよりvoid OnStart() { //--- CTrade trade; double d_value=M_PI; int i_value=INT_MAX; Print("d_value: type=",GetTypeName(d_value), ", value=", d_value); Print("i_value: type=",GetTypeName(i_value), ", value=", i_value); Print("trade: type=",GetTypeName(trade)); //--- } //+------------------------------------------------------------------+ //| Возвращает в строковом виде тип | //+------------------------------------------------------------------+ template<typename T> string GetTypeName(const T &t) { //--- вернем тип в виде строки return(typename(T)); //--- } 削除済み 2018.01.17 10:40 #4193 WinProject:もっとシンプルでいい。表示ボタンを作成する(または既存のボタンのいずれかを使用する)。さらに追い打ちをかけるように、すべてのTFに必要なオブジェクトの可視化フラグが設定されています。ボタンを離すと、全てのオブジェクトが全てのTFに表示プロパティを設定する(必要な場合は必要な分だけ)。削除/再配置の必要はありません。この操作の後、チャートを再描画するだけです。オブジェクトプロパティOBJPROP_TIMEFRAMES。 Corvin85 2018.01.17 12:14 #4194 インジケーターのデータを配列に取り込む方法を教えてください。すなわち、配列を宣言する必要があることは明らかです。double num_array[];この先どうすればいいのか、よくわからない...。num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); // インデックス [0] の配列は MA と同じだが、インデックスを [1] にすると num_array[1] は等しいことが判明するnum_array[0]と同じデータをインジケータから取得します。これではいけないと思います。配列は順次埋めていく必要があります。1日を24に分割することしか考えていない時間、2次元の配列を宣言し、各時間に独自の文字列でインデックスを割り当てるなど......。もしかしたら、もっとシンプルな方法や、面倒くさくない方法があるのでは? Vladislav Andruschenko 2018.01.17 12:16 #4195 Corvin85:インジケーターのデータを配列に取り込む方法を教えてください。すなわち、配列を宣言する必要があることは明らかです。double num_array[];この先どうすればいいのか、よくわからない...。num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); // インデックス [0] の配列は MA と同じだが、インデックスを [1] にすると num_array[1] は等しいことが判明するnum_array[0]と同じデータをインジケータから取得します。これではいけないと思います。配列は順次埋めていく必要があります。1日を24に分割することしか考えていない時間、2次元の配列を宣言し、各時間に独自の文字列でインデックスを割り当てるなど......。もしかしたら、もっとシンプルな方法や、面倒くさくない方法があるのでは?私はこのように考えています。double num_array[]; ArrayResize(num_array,24); for(int i=0;i<24;i++) { num_array[i] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); } Corvin85 2018.01.17 12:24 #4196 Vladislav Andruschenko: 私はこのように考えています。double num_array[]; ArrayResize(num_array,24); for(int i=0;i<24;i++) { num_array[i] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); } ああ、ArrayResizeで 配列の最大インデックス数を設定し、ループで実行すればいいことがわかりました。ありがとうございました。しかし、その後、質問があります。すべてのインデックスがインジケータからのデータで満たされたとき、それらはArrayFreeを介して クリアされるべきですか、それはそれ自身を書き換えますか? または24倍後にすべてがすべてで停止しますか?馬鹿な質問で申し訳ないのですが、配列は機能が未知数でダークホースみたいなものです。 Vladislav Andruschenko 2018.01.17 12:44 #4197 Corvin85: あ、ArrayResizeで 配列のインデックスの最大数を設定してループを回せばいいんですね。ありがとうございました。しかし、その後、質問があります。すべてのインデックスがインジケータからのデータで満たされたとき、私はArrayFreeを介して それらをクリアする必要がありますか、それは自分自身を書き換えます? または24日後にすべてが停止します?ぶしつけな質問で申し訳ないのですが、配列は機能が未知数でダークホースみたいなものなんです。 まあ、どんな目的を追求するかによりますが。配列に 過去24本のバーのmAデータを入れるコードを書きました。今後も継続的に更新していく予定です。 Konstantin Erin 2018.01.17 13:00 #4198 Corvin85: あ、ArrayResizeで 配列のインデックスの最大数を設定してループを回せばいいんですね。ありがとうございました。しかし、その後、質問があります。すべてのインデックスがインジケータからのデータで満たされたとき、私はArrayFreeを介して それらをクリアする必要がありますか、それは自分自身を書き換えます? または24日後にすべてが停止します?ぶしつけな質問で申し訳ないのですが、配列は機能が未知数でダークホースみたいなものなんです。配列=インデックス参照に便利なように一列に並べられた単純な変数の集合。インデックスとは、ループを構成するために、配列の項目を 番号でアクセスするための整数型変数です。インデックス=数値カウンター。ArrayFree = 配列の破壊 - ボロ屋の上をブルドーザーで移動するようなものです。しかし、ArrayResizeで 再び復元することができます。 さて 、ArrayResizeは住宅用配列の周りにある柵 です。 うちのはここだけど、よそ者は柵の向こう、入るのは禁止だよ。それぞれの家に何度も入ることができる(配列の要素に 新しい値を代入する)。 配列は非常にシンプルで、いろいろな用途に使える便利なものです。そして、アレイを怖がる人たち、つまり、それらの ...だから、しっかり把握したほうがいいんです。 Konstantin Erin 2018.01.17 13:17 #4199 //+------------------------------------------------------------------+ //| Проверка массива | //+------------------------------------------------------------------+ #property strict int m[10]; int n; void OnStart() { ArrayInitialize(m,7); Вывод(); // Заполнить семерками ArrayResize(m,7); Вывод(); // Удалить 3 последних элемента ArrayResize(m,9); Вывод(); // Увеличить размер m[1]=1; m[7]=1; Вывод(); // Изменить 2 элемента for(n=0; n<9; n++) m[n]=n*n; Вывод(); // Заполнить квадратами номеров ArrayCopy(m,m,0,2,7); Вывод(); // Копирование со сдвигом ArrayResize(m,ArraySize(m)-2); Вывод(); // Удалить 2 последних элемента } void Вывод() { string s=""; for(n=0; n<ArraySize(m); n++) s+=" " + string(m[n]); Alert(ArraySize(m), ":", s); } 次のようなスクリプトを実行してみてください - そして練習してください igrok333 2018.01.17 18:49 #4200 Artyom Trishkin:参考文献より シーピー 1...413414415416417418419420421422423424425426427...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
変数の種類を返す関数はありますか?
例えば、こう書きますね。
int a=10;
と書くと
functia(a);
と表示され、INT!
:)
string functia(double a) { return "DABLE!"; }.// また、不意に
変数型を返す関数はありますか?
例えば、こう書きますね。
int a=10;
と書くと
functia(a);
と表示され、INT!
:)
ヘルプより
もっとシンプルでいい。表示ボタンを作成する(または既存のボタンのいずれかを使用する)。さらに追い打ちをかけるように、すべてのTFに必要なオブジェクトの可視化フラグが設定されています。ボタンを離すと、全てのオブジェクトが全てのTFに表示プロパティを設定する(必要な場合は必要な分だけ)。削除/再配置の必要はありません。この操作の後、チャートを再描画するだけです。
オブジェクトプロパティOBJPROP_TIMEFRAMES。
インジケーターのデータを配列に取り込む方法を教えてください。すなわち、配列を宣言する必要があることは明らかです。
double num_array[];
この先どうすればいいのか、よくわからない...。
num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); // インデックス [0] の配列は MA と同じだが、インデックスを [1] にすると num_array[1] は等しいことが判明する
num_array[0]と同じデータをインジケータから取得します。これではいけないと思います。配列は順次埋めていく必要があります。1日を24に分割することしか考えていない
時間、2次元の配列を宣言し、各時間に独自の文字列でインデックスを割り当てるなど......。
もしかしたら、もっとシンプルな方法や、面倒くさくない方法があるのでは?
インジケーターのデータを配列に取り込む方法を教えてください。すなわち、配列を宣言する必要があることは明らかです。
double num_array[];
この先どうすればいいのか、よくわからない...。
num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); // インデックス [0] の配列は MA と同じだが、インデックスを [1] にすると num_array[1] は等しいことが判明する
num_array[0]と同じデータをインジケータから取得します。これではいけないと思います。配列は順次埋めていく必要があります。1日を24に分割することしか考えていない
時間、2次元の配列を宣言し、各時間に独自の文字列でインデックスを割り当てるなど......。
もしかしたら、もっとシンプルな方法や、面倒くさくない方法があるのでは?
私はこのように考えています。
私はこのように考えています。
あ、ArrayResizeで 配列のインデックスの最大数を設定してループを回せばいいんですね。ありがとうございました。しかし、その後、質問があります。すべてのインデックスがインジケータからのデータで満たされたとき、私はArrayFreeを介して それらをクリアする必要がありますか、それは自分自身を書き換えます? または24日後にすべてが停止します?ぶしつけな質問で申し訳ないのですが、配列は機能が未知数でダークホースみたいなものなんです。
あ、ArrayResizeで 配列のインデックスの最大数を設定してループを回せばいいんですね。ありがとうございました。しかし、その後、質問があります。すべてのインデックスがインジケータからのデータで満たされたとき、私はArrayFreeを介して それらをクリアする必要がありますか、それは自分自身を書き換えます? または24日後にすべてが停止します?ぶしつけな質問で申し訳ないのですが、配列は機能が未知数でダークホースみたいなものなんです。
配列=インデックス参照に便利なように一列に並べられた単純な変数の集合。インデックスとは、ループを構成するために、配列の項目を 番号でアクセスするための整数型変数です。インデックス=数値カウンター。ArrayFree = 配列の破壊 - ボロ屋の上をブルドーザーで移動するようなものです。しかし、ArrayResizeで 再び復元することができます。 さて 、ArrayResizeは住宅用配列の周りにある柵 です。 うちのはここだけど、よそ者は柵の向こう、入るのは禁止だよ。それぞれの家に何度も入ることができる(配列の要素に 新しい値を代入する)。 配列は非常にシンプルで、いろいろな用途に使える便利なものです。そして、アレイを怖がる人たち、つまり、それらの ...だから、しっかり把握したほうがいいんです。
//+------------------------------------------------------------------+ //| Проверка массива | //+------------------------------------------------------------------+ #property strict int m[10]; int n; void OnStart() { ArrayInitialize(m,7); Вывод(); // Заполнить семерками ArrayResize(m,7); Вывод(); // Удалить 3 последних элемента ArrayResize(m,9); Вывод(); // Увеличить размер m[1]=1; m[7]=1; Вывод(); // Изменить 2 элемента for(n=0; n<9; n++) m[n]=n*n; Вывод(); // Заполнить квадратами номеров ArrayCopy(m,m,0,2,7); Вывод(); // Копирование со сдвигом ArrayResize(m,ArraySize(m)-2); Вывод(); // Удалить 2 последних элемента } void Вывод() { string s=""; for(n=0; n<ArraySize(m); n++) s+=" " + string(m[n]); Alert(ArraySize(m), ":", s); }
次のようなスクリプトを実行してみてください - そして練習してください参考文献より