エラー、バグ、質問 - ページ 436 1...429430431432433434435436437438439440441442443...3185 新しいコメント 削除済み 2011.06.27 23:50 #4351 Interesting:1.それはなぜでしょうか?有害な症状には断固とした治療が必要です。2.変数や配列などの名称は統一したり、言語のキーワードを使ったりしてはいけません(でも配列の「Symbol」はとても印象的で、コードの中で配列なのか他のものなのか分からなくなりますね)。1.まず、その症状がポジティブなものなのかネガティブなものなのか、はっきりさせる必要がありますね。私の経験では、グローバル変数の値を 変更するはずのない関数で変更しようとしたケースがあります(くそコピーペースト)。このエラーを見つけるのに数日かかりました。それ以来、原則的にグローバル変数がないとどうしようもない場合に、グローバル変数を使うようになりました。2.私もそう思います。でも、1つの機能の中で使われるのであれば、気にならないですね。しかし、このような名前のグローバル変数は、実に将来の混乱の元となる。 Документация по MQL5: Глобальные переменные терминала / GlobalVariableGet www.mql5.com Глобальные переменные терминала / GlobalVariableGet - Документация по MQL5 削除済み 2011.06.27 23:51 #4352 でも、もう一度質問させてください。OnTickの内部でOnInitのトリガーを決定することは可能でしょうか? 例えば、OnTickの内部で、EAの初期化回数を格納するスタティック変数を宣言できますか(MQL5でこれと同様のプロパティが存在する場合)。 Renat Fatkhullin 2011.06.27 23:51 #4353 voix_kas:私は被害妄想に陥っているのでしょう。私はパブリック(グローバル)変数が好きではありません。私はムベトンだと思っています。グローバル 変数は、少なくとも遠くから見ることができます。しかし、静力学の関数の中に重大な累積変数を隠すことは、自分のために丁寧に熊手を広げることなのです。このような形で関数内に隠された累積的な静的配列を見たのは初めてです。これは燃えるようなレーキだ。 クラスを使う - 彼らはグローバルレベルをきれいに残し、すべてのガッツを隠し、松葉杖を取り除くでしょう。 Документация по MQL5: Основы языка / Переменные / Глобальные переменные www.mql5.com Основы языка / Переменные / Глобальные переменные - Документация по MQL5 削除済み 2011.06.27 23:59 #4354 voix_kas:でも、もう一度質問させてください。OnTickの内部でOnInitのトリガーを決定することは可能でしょうか? 例えば、OnTickの内部で、EAの初期化回数を格納するスタティック変数を宣言できますか(MQL5でそのような、または同様の変数があれば)。OnInitトリガーの数を数えるだけでなく、なぜ初期化が発生したのかを調べることも可能です(実装は別の問題です)。例えば、_UninitReasonはご存知でしょうか? 削除済み 2011.06.28 00:07 #4355 OnInitで読み込むことができますが、私はこのデータを別のイベントで(グローバル変数を 使用せずに)必要とします。いずれにせよ、実装の問題ですね。OnDenitと同じです。 Документация по MQL5: Основы языка / Переменные / Глобальные переменные www.mql5.com Основы языка / Переменные / Глобальные переменные - Документация по MQL5 削除済み 2011.06.28 00:18 #4356 書いたことのない授業。誰か助けてくれたら、感謝します。WorkSymbols クラスを書く必要がある。方法です。文字列 GetSymbol[];bool UpdateSymbols(inWorkSymbols)を使用します。bool UpdateSymbolsStatus()。int GetSymbolCount()。 生意気なリクエストで申し訳ないのですが・・・。私も自分で考えてみようと思います。 Vladimir Gomonov 2011.06.28 01:10 #4357 Renat:そうですね、シンボル変化と時間枠の条件を組み合わせるのは間違いだと思われます。また、2つの条件に分けることにも賛成です。チケットはすでにサービスデスクに置かれています。 ありがとうございました。 削除済み 2011.06.28 21:24 #4358 ちょっと料理してみました。批評は歓迎します。input string inWorkSymbols = "USDCHF; GBPUSD; EURUSD; USDJPY; USDCAD; AUDUSD; EURGBP; EURAUD; EURCHF; EURJPY; GBPJPY; GBPCHF"; // Рабочие инструменты class CSymbolList { private: string Symbols[]; public: void CSymbolList() { SetSymbols(""); } void ~CSymbolList() { ArrayFree(Symbols); } int GetSymbolCount() { return ArraySize(Symbols); } void SetSymbols(string); string GetSymbolName(int); }; void CSymbolList::SetSymbols(string Source) { ArrayFree(Symbols); for (int count = 1, i = 0; i < SymbolsTotal(false); i++) if (StringFind(Source, SymbolName(i, false)) != -1) { if (ArrayResize(Symbols, count) != count) { ArrayFree(Symbols); return; } Symbols[count-1] = SymbolName(i, false); count++; } } string CSymbolList::GetSymbolName(int Item) { if (Item < 0 || !ArraySize(Symbols) || Item >= ArraySize(Symbols)) return ""; return Symbols[Item]; } void OnStart() { CSymbolList slMain; slMain.SetSymbols(inWorkSymbols); for (int i = 0; i < slMain.GetSymbolCount(); i++) Print(slMain.GetSymbolName(i)); } 削除済み 2011.06.28 21:29 #4359 唯一気に入らないのは、作業データを含む配列のサイズを「ライブで」変更することです。 開発者への質問ですが、以下の条件下で、変更される動的配列に 以前入力されたユーザーデータが保存されることは保証されているのでしょうか?if (ArrayResize(Symbols, count) == count) Документация по MQL5: Основы языка / Типы данных / Объект динамического массива www.mql5.com Основы языка / Типы данных / Объект динамического массива - Документация по MQL5 Vladimir Gomonov 2011.06.28 21:32 #4360 voix_kas:唯一気に入らないのは、作業データを含む配列のサイズを「ライブで」変更することです。 開発者への質問ですが、以下の条件下で、変更される動的配列に 以前入力されたユーザーデータが保存されることは保証されているのでしょうか? 保証されるに違いない。少なくとも私はいつもそれを頼りにしていますし、問題は一度も起きていません。 1...429430431432433434435436437438439440441442443...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1.それはなぜでしょうか?有害な症状には断固とした治療が必要です。
2.変数や配列などの名称は統一したり、言語のキーワードを使ったりしてはいけません(でも配列の「Symbol」はとても印象的で、コードの中で配列なのか他のものなのか分からなくなりますね)。
1.まず、その症状がポジティブなものなのかネガティブなものなのか、はっきりさせる必要がありますね。私の経験では、グローバル変数の値を 変更するはずのない関数で変更しようとしたケースがあります(くそコピーペースト)。このエラーを見つけるのに数日かかりました。それ以来、原則的にグローバル変数がないとどうしようもない場合に、グローバル変数を使うようになりました。
2.私もそう思います。でも、1つの機能の中で使われるのであれば、気にならないですね。しかし、このような名前のグローバル変数は、実に将来の混乱の元となる。
でも、もう一度質問させてください。
OnTickの内部でOnInitのトリガーを決定することは可能でしょうか?
例えば、OnTickの内部で、EAの初期化回数を格納するスタティック変数を宣言できますか(MQL5でこれと同様のプロパティが存在する場合)。
私は被害妄想に陥っているのでしょう。私はパブリック(グローバル)変数が好きではありません。私はムベトンだと思っています。
グローバル 変数は、少なくとも遠くから見ることができます。しかし、静力学の関数の中に重大な累積変数を隠すことは、自分のために丁寧に熊手を広げることなのです。このような形で関数内に隠された累積的な静的配列を見たのは初めてです。これは燃えるようなレーキだ。
クラスを使う - 彼らはグローバルレベルをきれいに残し、すべてのガッツを隠し、松葉杖を取り除くでしょう。
でも、もう一度質問させてください。
OnTickの内部でOnInitのトリガーを決定することは可能でしょうか?
例えば、OnTickの内部で、EAの初期化回数を格納するスタティック変数を宣言できますか(MQL5でそのような、または同様の変数があれば)。
OnInitトリガーの数を数えるだけでなく、なぜ初期化が発生したのかを調べることも可能です(実装は別の問題です)。
例えば、_UninitReasonはご存知でしょうか?
WorkSymbols クラスを書く必要がある。
方法です。
文字列 GetSymbol[];
bool UpdateSymbols(inWorkSymbols)を使用します。
bool UpdateSymbolsStatus()。
int GetSymbolCount()。
生意気なリクエストで申し訳ないのですが・・・。私も自分で考えてみようと思います。
そうですね、シンボル変化と時間枠の条件を組み合わせるのは間違いだと思われます。
また、2つの条件に分けることにも賛成です。チケットはすでにサービスデスクに置かれています。
ちょっと料理してみました。批評は歓迎します。
唯一気に入らないのは、作業データを含む配列のサイズを「ライブで」変更することです。
開発者への質問ですが、以下の条件下で、変更される動的配列に 以前入力されたユーザーデータが保存されることは保証されているのでしょうか?
唯一気に入らないのは、作業データを含む配列のサイズを「ライブで」変更することです。
開発者への質問ですが、以下の条件下で、変更される動的配列に 以前入力されたユーザーデータが保存されることは保証されているのでしょうか?