エラー、バグ、質問 - ページ 1697 1...169016911692169316941695169616971698169917001701170217031704...3185 新しいコメント fxsaber 2016.09.23 08:36 #16961 Karputov Vladimir: Print(MQLInfoString(MQL_PROGRAM_NAME));短いインジケータ 名を返します。短縮名が指定されない場合は、フルネームが返される。 ありがとうございます。 Alexey Volchanskiy 2016.09.23 08:44 #16962 Vladimir Pastushak:ありがとうございます。Alexey、あなたの例はうまくいきません。親のメソッドが継承者にダンプされたままになっています。このようなことはないはずですが、コードを投げることができますか?親で 保護・ 公開されて いたデータは、protected-inheritance で保護される。 fxsaber 2016.09.23 08:48 #16963 NONEのチャートにインジケータを設定しました#property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 double Buffer[]; int handle = INVALID_HANDLE; void OnInit() { ::SetIndexBuffer(0, Buffer, INDICATOR_DATA); handle = ChartIndicatorGet(0, 1, ChartIndicatorName(0, 1, 0)); } #define TOSTRING(A) #A + " = " + (string)A + "\n" int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { if (handle != INVALID_HANDLE) { Buffer[rates_total - 1] = MathRand(); double BufferCopy[]; if (CopyBuffer(handle, 0, 0, 1, BufferCopy) > 0) Print(TOSTRING(BufferCopy[0]) + TOSTRING(Buffer[rates_total - 1])); } return(rates_total); }チャートからインジケータを手で外します。ログを見ると、インジケータが動作し続けていることがわかります。ターミナルですべてのチャートを閉じても、実行されたままです。そして、それは当然ながら何の役にも立ちません。void OnDeinit( const int Reason ) { if (handle != INVALID_HANDLE) IndicatorRelease(handle); return; }端末を再起動すると、インジケータの実行が停止します。どれだけの指標がアイドリングストップになるのか、私たちは知らないままなのです。コントロールが全くできていないのです。 Vladimir Karputov 2016.09.23 08:51 #16964 fxsaber:チャート上のNULLインジケーターを手で設定するチャートからインジケータを手で外します。ログを見ると、インジケータが動作し続けていることがわかります。ターミナルですべてのチャートを閉じても、実行されます。端末を再起動すると、インジケータの実行が停止します。どれだけの指標がアイドリングストップになるのか、それすらも聞いていないのか。コントロールが全くできていないのです。defineや:で 囲まれたコードを読み、目を通すことは不可能です。一般的なMQL5のスタイルでコードを書き換えてください。 削除済み 2016.09.23 08:53 #16965 fxsaber:チャート上のNULLインジケーターを手で設定するチャートからインジケータを手で外します。ログを見ると、インジケータが動作し続けていることがわかります。ターミナルですべてのチャートを閉じても、実行されます。端末を再起動すると、インジケータの実行が停止します。アイドルモードで実行できるインジケータで、私たちが知らないものがどれだけあるでしょうか。コントロールが全くできていないのです。 StopFlagチェックを追加しても効果がない? fxsaber 2016.09.23 08:55 #16966 Karputov Vladimir:define と : を使ったコードを読んだり見たりすることは不可能です。一般的なMQL5スタイルでコードを書き換えてください。 これがMQL5スタイルです。何が#defineで何が::なのかを勉強してください。 fxsaber 2016.09.23 08:57 #16967 Alexey Kozitsyn: StopFlagチェックを追加しても効果がない? どこに添加すればいいのか、少なくとも理論的にはどう役に立つのか。これは端末のバグです。しかも、深刻なバグです。私はラッキーでした。ログを見ると、インジケータが動作していることがわかります。しかし、端末には何の情報もなく動作しているインジケーターがたくさんあります。しかし、話題になっているのは、空の端末でなぜこんなにCPUに負荷がかかっているのか? Vladimir Karputov 2016.09.23 08:57 #16968 fxsaber: これが「MQL5」のスタイルです。何が#defineで何が::なのかを勉強してください。 そういうことではありません。あなたの例では、":: "はまったく必要ありません。あなたの癖かもしれませんが、そこにはまったく必要ないのです。defaneを使わなくても、普通にコードを書くことができます。ただ、書き換えてみて、何か腑に落ちることがあるかどうか。 fxsaber 2016.09.23 09:08 #16969 Karputov Vladimir: そういうことではありません。"::" は、あなたの例ではまったく必要ありません。あなたの習慣かもしれませんが、そこではまったく必要ないのです。defaneがなくても問題なくコードは書けます。ただ、書き換えてみて、何か腑に落ちることがあるかどうか。一か所だけ「:」があったんです。それに、私はゼロからコードを書くわけではありません。原則として、私は自分のコードから何かを取り出すことにしています。ここで :: コピーペーストによるものがありました。今まで気にしたことがなかったのですが、気持ちが楽になるので削除しました。しかし、#defineを削除しないのは主義主張の問題ではありません。99%のコードはこれ無しで書けます。取り上げるような場面ではありません。そして、#defineなしにはできないことが1%(比較的)あるのです Vladimir Karputov 2016.09.23 09:12 #16970 fxsaber:一か所だけ「:」があったんです。それに、私はゼロからコードを書くわけではありません。原則として、私は自分のコードから何かを取り出すことにしています。ここで :: コピーペーストによるものがありました。今まで気にしたことがなかったのですが、気持ちが楽になるので外しました。しかし、#defineを削除しないのは主義主張の問題ではありません。99%のコードはこれ無しで書けます。取り上げるような場面ではありません。そして、1%(条件付きで)#defineがないとダメな場合もあるのですバッファをコピー しない場合。//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 double Buffer[]; int handle=INVALID_HANDLE; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0,Buffer,INDICATOR_DATA); handle=ChartIndicatorGet(0,1,ChartIndicatorName(0,1,0)); } #define TOSTRING(A) #A + " = " + (string)A + "\n" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if(handle!=INVALID_HANDLE) { Buffer[rates_total-1]=MathRand(); double BufferCopy[]; Print(__FUNCTION__); //if(CopyBuffer(handle,0,0,1,BufferCopy)>0) // Print(TOSTRING(BufferCopy[0])+TOSTRING(Buffer[rates_total-1])); } return(rates_total); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int Reason) { Print("#1 OnDeinit"); if(handle!=INVALID_HANDLE) { Print("#2 OnDeinit"); IndicatorRelease(handle); Print("#3 OnDeinit"); } Print("#4 OnDeinit"); return; } //+------------------------------------------------------------------+ であれば、インジケータは正常に動作を完了します。2016.09.23 12:11:12.655 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:12.737 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:12.737 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:12.737 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:12.747 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:13.406 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:13.406 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:13.406 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:14.794 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:15.747 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:16.936 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:11:19.339 2 (SBRF-12.16,M1) #1 OnDeinit 2016.09.23 12:11:19.339 2 (SBRF-12.16,M1) #2 OnDeinit 2016.09.23 12:11:19.339 2 (SBRF-12.16,M1) #3 OnDeinit 2016.09.23 12:11:19.339 2 (SBRF-12.16,M1) #4 OnDeinit 1...169016911692169316941695169616971698169917001701170217031704...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Print(MQLInfoString(MQL_PROGRAM_NAME));短いインジケータ 名を返します。短縮名が指定されない場合は、フルネームが返される。
ありがとうございます。
Alexey、あなたの例はうまくいきません。親のメソッドが継承者にダンプされたままになっています。
このようなことはないはずですが、コードを投げることができますか?
親で 保護・ 公開されて いたデータは、protected-inheritance で保護される。defineや:で 囲まれたコードを読み、目を通すことは不可能です。
一般的なMQL5のスタイルでコードを書き換えてください。
define と : を使ったコードを読んだり見たりすることは不可能です。
一般的なMQL5スタイルでコードを書き換えてください。
StopFlagチェックを追加しても効果がない?
これが「MQL5」のスタイルです。何が#defineで何が::なのかを勉強してください。
そういうことではありません。"::" は、あなたの例ではまったく必要ありません。あなたの習慣かもしれませんが、そこではまったく必要ないのです。defaneがなくても問題なくコードは書けます。ただ、書き換えてみて、何か腑に落ちることがあるかどうか。
一か所だけ「:」があったんです。それに、私はゼロからコードを書くわけではありません。原則として、私は自分のコードから何かを取り出すことにしています。ここで :: コピーペーストによるものがありました。今まで気にしたことがなかったのですが、気持ちが楽になるので削除しました。
しかし、#defineを削除しないのは主義主張の問題ではありません。99%のコードはこれ無しで書けます。取り上げるような場面ではありません。
そして、#defineなしにはできないことが1%(比較的)あるのです
一か所だけ「:」があったんです。それに、私はゼロからコードを書くわけではありません。原則として、私は自分のコードから何かを取り出すことにしています。ここで :: コピーペーストによるものがありました。今まで気にしたことがなかったのですが、気持ちが楽になるので外しました。
しかし、#defineを削除しないのは主義主張の問題ではありません。99%のコードはこれ無しで書けます。取り上げるような場面ではありません。
そして、1%(条件付きで)#defineがないとダメな場合もあるのです
バッファをコピー しない場合。
であれば、インジケータは正常に動作を完了します。