エラー、バグ、質問 - ページ 2460 1...245324542455245624572458245924602461246224632464246524662467...3185 新しいコメント fxsaber 2019.05.14 14:19 #24591 ME開発者にCTRL+SHIFT+Fを押して "MQL5Info "と入力してもらうようお願いします。出来上がったSBファイルに見られるルーディメンツを修正する。 Sergey Dzyublik 2019.05.14 14:28 #24592 プロジェクト コードから問題を切り出すのに2時間かかりました。#define PRINT(x) Print(#x, ":", string(x)) template<typename DATA_TYPE> struct Wrapper{ uchar type; DATA_TYPE data; template<typename T> void operator=(T value){ // при замене данной строки на "void operator=(T &value){" происходит перезапись оператора присвоения в классе наследнике B (код не компилируется). this.data = value; }; void operator=(DATA_TYPE &_data){ this.data = _data; }; }; struct A{ string data; void operator=(string value){ data = value; }; }; struct B : Wrapper<A>{}; void OnStart(){ B b; string str_value; b = str_value; A a; b = a; B b1; b = b1; } しかし、機能を拡張して、クラスAの(string)のような単純な型だけでなく、構造体のサポートも追加しようとすると、 ベースクラスのテンプレート代入演算子が子孫クラスのデフォルト代入演算子を上書きし始め、すべての機能を殺してしまうことが判明しました。他の演算子は "operator*="などの回避策がありますが、ごちゃごちゃしていますね。開発者各位 デフォルトの代入演算子(コピーコンストラクタ)の強制コード生成を指定できるように してください。class_name & class_name :: operator= ( const class_name & ) = default; class_name & class_name :: operator= ( const class_name & ) = delete; Игорь Евдокимов 2019.05.14 16:13 #24593 私のEAで標準的な指標、例えばiMAを使用する場合、教えてください。 可視化ウィンドウに正しく表示するために、描画スタイルを 設定するにはどうしたらよいですか? Vladimir Karputov 2019.05.14 16:14 #24594 Игорь Евдокимов:私のEAで標準的な指標、例えばiMAを使用する場合、教えてください。 可視化ウィンドウに正しく表示されるように、描画スタイルを 設定するにはどうしたらよいですか?こんな感じ:カスタム移動平均の入力色 rsrozhkov 2019.05.14 16:18 #24595 知識のある人、ヒントがある!実物をベースにしたカスタムシンボルが あるんです。このシンボルのチャートからトレードができるようにするにはどうしたらいいですか?それとも、MT5にはそのような機能はないのでしょうか? Игорь Евдокимов 2019.05.14 17:38 #24596 Vladimir Karputov:こんな感じ:カスタム移動平均の入力色実は、インジケータは自分で書かなければならないのです。標準指標を書き換えることは解決策にはならない。 問題は、標準のインジケーターのスタイルをどう設定するかということでした。 他に方法はないのでしょうか? Sergey Dzyublik 2019.05.14 22:24 #24597 最近のバージョンのMTでは、文字列処理のパラダイムシフトの一環として、NULL終端文字列の使用を放棄していると見られる。 しかし、StringSetLength関数の動作には、いくつかの疑問が残ります。 StringSetLengthでは、文字列の長 さを切り詰めることはできても、増やすことはできませんが、これはどういうわけか意味をなしません。 これは意図した動作なのでしょうか?#define PRINT(x) Print(#x, ":", string(x)) void OnStart(){ string str = "123456789"; PRINT(str); PRINT(StringLen(str)); PRINT(StringSetLength(str, StringLen(str)-1)); PRINT(str); PRINT(StringLen(str)); PRINT(StringSetLength(str, StringLen(str)+2)); PRINT(str); PRINT(StringLen(str)); } 結果2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) str:123456789 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) StringLen(str):9 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) StringSetLength(str,StringLen(str)-1):true 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) str:12345678 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) StringLen(str):8 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) StringSetLength(str,StringLen(str)+2):false 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) str:12345678 2019.05.15 01:22:08.208 StringFormat_1 (EURUSD,H1) StringLen(str):8 Sergey Dzyublik 2019.05.14 23:55 #24598 新しい」文字が0x0000として初期化 される「本格的な」StringSetLengthを 実装するくらいなら、ユーザーは自分を撃ったほうがましだ。#define PRINT(x) Print(#x, ":", string(x)) void OnStart(){ string str = "123\x0000\x0000\x0000\x0000456789"; PRINT(str); PRINT(StringLen(str)); // StringLen(str):13 StringLen поддерживает работу с 0х0000 short value PRINT(StringSetLength_using_StringInit(str, 100)); // false StringInit не поддерживает работу с 0х0000 short value PRINT(StringSetLength_using_ShortArrayToString(str, 100)); // false ShortArrayToString не поддерживает работу с 0х0000 short value PRINT(StringSetLength_using_StringInit_with_StringFill(str, 100)); // false StringFill не поддерживает работу с 0х0000 short value } bool StringSetLength_using_StringInit(string &string_var, int new_length){ bool result = false; int prev_length = StringLen(string_var); if(new_length == prev_length){ result = true; return result; } string data = string_var; if(new_length < prev_length){ StringSetLength(data, new_length); }else{ string string_tail; StringInit(string_tail, new_length - prev_length, 0x0000); data += string_tail; } if(StringLen(data) == new_length){ string_var = data; result = true; } return result; } bool StringSetLength_using_ShortArrayToString(string &string_var, int new_length){ bool result = false; int prev_length = StringLen(string_var); if(new_length == prev_length){ result = true; return result; } string data = string_var; if(new_length < prev_length){ StringSetLength(data, new_length); }else{ short data_array[]; StringToShortArray(data, data_array); ArrayResize(data_array, new_length); ArrayFill(data_array, prev_length, new_length - prev_length, 0x0000); data = ShortArrayToString(data_array, 0, new_length); } if(StringLen(data) == new_length){ string_var = data; result = true; } return result; } bool StringSetLength_using_StringInit_with_StringFill(string &string_var, int new_length){ bool result = false; int prev_length = StringLen(string_var); if(new_length == prev_length){ result = true; return result; } string data = string_var; if(new_length < prev_length){ StringSetLength(data, new_length); }else{ string string_tail; StringInit(string_tail, new_length - prev_length, 0x1111); StringFill(string_tail, 0x0000); data += string_tail; } if(StringLen(data) == new_length){ string_var = data; result = true; } return result; } fxsaber 2019.05.15 04:26 #24599 Sergey Dzyublik: 最近のバージョンのMTでは、文字列処理のパラダイムシフトの一環として、NULL終端文字列の使用を拒否しているのが見受けられます。このアイデアについて詳しく教えてください。 Игорь Евдокимов 2019.05.15 09:58 #24600 rsrozhkov: 知識のある方、ヒントを下さい!実際のシンボルを元に作成したカスタムシンボルがあるのですが。このシンボルのチャートからトレードができるようにするにはどうしたらいいですか?それとも、MT5にはそのような機能はないのでしょうか?答えは自ずと決まってくる。カスタムシンボルは、実シンボルから何らかの変換を行うことで得られる。誰かが(EA、スクリプト、または手動で)逆変換を行い、実際のシンボルの注文を送信する必要があります。 1...245324542455245624572458245924602461246224632464246524662467...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
しかし、機能を拡張して、クラスAの(string)のような単純な型だけでなく、構造体のサポートも追加しようとすると、 ベースクラスのテンプレート代入演算子が子孫クラスのデフォルト代入演算子を上書きし始め、すべての機能を殺してしまうことが判明しました。他の演算子は "operator*="などの回避策がありますが、ごちゃごちゃしていますね。開発者各位 デフォルトの代入演算子(コピーコンストラクタ)の強制コード生成を指定できるように してください。
私のEAで標準的な指標、例えばiMAを使用する場合、教えてください。
可視化ウィンドウに正しく表示するために、描画スタイルを 設定するにはどうしたらよいですか?
私のEAで標準的な指標、例えばiMAを使用する場合、教えてください。
可視化ウィンドウに正しく表示されるように、描画スタイルを 設定するにはどうしたらよいですか?
こんな感じ:カスタム移動平均の入力色
こんな感じ:カスタム移動平均の入力色
実は、インジケータは自分で書かなければならないのです。標準指標を書き換えることは解決策にはならない。
問題は、標準のインジケーターのスタイルをどう設定するかということでした。
他に方法はないのでしょうか?
しかし、StringSetLength関数の動作には、いくつかの疑問が残ります。
StringSetLengthでは、文字列の長 さを切り詰めることはできても、増やすことはできませんが、これはどういうわけか意味をなしません。
これは意図した動作なのでしょうか?
結果
最近のバージョンのMTでは、文字列処理のパラダイムシフトの一環として、NULL終端文字列の使用を拒否しているのが見受けられます。
このアイデアについて詳しく教えてください。
知識のある方、ヒントを下さい!実際のシンボルを元に作成したカスタムシンボルがあるのですが。このシンボルのチャートからトレードができるようにするにはどうしたらいいですか?それとも、MT5にはそのような機能はないのでしょうか?
答えは自ずと決まってくる。カスタムシンボルは、実シンボルから何らかの変換を行うことで得られる。誰かが(EA、スクリプト、または手動で)逆変換を行い、実際のシンボルの注文を送信する必要があります。