エラー、バグ、質問 - ページ 1699 1...169216931694169516961697169816991700170117021703170417051706...3185 新しいコメント fxsaber 2016.09.23 09:35 #16981 Karputov Vladimir: 間違ったプログラミングスタイルをすべてバグのせいにするのは無理があります。どんなSURPRISEなんだ!?明らかなバグを指摘したら、「スタイル」なんて戯言を言われる。A100やMeatとは月と同じくらい遠い存在です。よくわからないけど、バグを見せてくれる。でも、そこに自分の「スタイル」を持ち込むつもりはありません。 Vladimir Karputov 2016.09.23 09:36 #16982 fxsaber: うまくいかないんです。以下はコードの全文です。//+------------------------------------------------------------------+ //| 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) if(prev_calculated!=0) { 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:34:03.318 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:34:03.318 2 (SBRF-12.16,M1) BufferCopy[0] = 265.0 2016.09.23 12:34:03.319 2 (SBRF-12.16,M1) Buffer[rates_total-1] = 18992.0 2016.09.23 12:34:03.319 2 (SBRF-12.16,M1) 2016.09.23 12:34:03.502 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:34:03.502 2 (SBRF-12.16,M1) BufferCopy[0] = 265.0 2016.09.23 12:34:03.502 2 (SBRF-12.16,M1) Buffer[rates_total-1] = 12498.0 2016.09.23 12:34:03.502 2 (SBRF-12.16,M1) ... экономия бумаги :) 2016.09.23 12:34:31.804 2 (SBRF-12.16,M1) 2016.09.23 12:34:33.159 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:34:33.159 2 (SBRF-12.16,M1) BufferCopy[0] = 614.0 2016.09.23 12:34:33.159 2 (SBRF-12.16,M1) Buffer[rates_total-1] = 5343.0 2016.09.23 12:34:33.159 2 (SBRF-12.16,M1) 2016.09.23 12:34:36.870 2 (SBRF-12.16,M1) OnCalculate 2016.09.23 12:34:36.870 2 (SBRF-12.16,M1) BufferCopy[0] = 614.0 2016.09.23 12:34:36.870 2 (SBRF-12.16,M1) Buffer[rates_total-1] = 17815.0 2016.09.23 12:34:36.870 2 (SBRF-12.16,M1) 2016.09.23 12:34:38.445 2 (SBRF-12.16,M1) #1 OnDeinit 2016.09.23 12:34:38.445 2 (SBRF-12.16,M1) #2 OnDeinit 2016.09.23 12:34:38.445 2 (SBRF-12.16,M1) #3 OnDeinit 2016.09.23 12:34:38.445 2 (SBRF-12.16,M1) #4 OnDeinit ファイル: 2.mq5 3 kb fxsaber 2016.09.23 09:41 #16983 Karputov Vladimir:以下はコードの全文です。とプリントアウトする。OnDeinitにすら辿り着けないのです。そして、私の数値はログと一致していますが、あなたの数値は一致していないことに注意してください。マイログPP 0 12:41:08.169 Test3 (RTS-12.16,H1) OnCalculate FE 0 12:41:08.169 Test3 (RTS-12.16,H1) BufferCopy[0] = 13573.0 IQ 0 12:41:08.169 Test3 (RTS-12.16,H1) Buffer[rates_total-1] = 13573.0 CF 0 12:41:08.169 Test3 (RTS-12.16,H1) JO 0 12:41:08.169 Test3 (RTS-12.16,H1) OnCalculate QI 0 12:41:08.169 Test3 (RTS-12.16,H1) BufferCopy[0] = 25434.0 NM 0 12:41:08.169 Test3 (RTS-12.16,H1) Buffer[rates_total-1] = 25434.0 MJ 0 12:41:08.169 Test3 (RTS-12.16,H1) DJ 0 12:41:08.187 Test3 (RTS-12.16,H1) OnCalculate QO 0 12:41:08.187 Test3 (RTS-12.16,H1) BufferCopy[0] = 9469.0 HK 0 12:41:08.187 Test3 (RTS-12.16,H1) Buffer[rates_total-1] = 9469.0 CM 0 12:41:08.187 Test3 (RTS-12.16,H1) JF 0 12:41:08.187 Test3 (RTS-12.16,H1) OnCalculate OS 0 12:41:08.187 Test3 (RTS-12.16,H1) BufferCopy[0] = 1887.0 NG 0 12:41:08.187 Test3 (RTS-12.16,H1) Buffer[rates_total-1] = 1887.0 ターミナルでインジケーターやEAを1つも動かしていない。 Vladimir Karputov 2016.09.23 09:46 #16984 fxsaber:OnDeinitにすら辿り着けないのです。そして、私の数値はログと一致していますが、あなたの数値は一致していないことに注意してください。マイログ ターミナルでインジケーターやExpert Advisorを起動していないのですが、どうしたらいいですか?私はこのような構成にしています。2016.09.23 12:25:34.874 Terminal MetaTrader 5 x64 build 1430 started (MetaQuotes Software Corp.) 2016.09.23 12:25:34.876 Terminal Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120 M @ 2.50 GHz, RAM: 2446 / 8077 Mb, HDD: 40118 / 233310 Mb, GMT+02:00 2016.09.23 12:25:34.876 Terminal C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075 (サーマル再起動後、ログタブ、最初の3行) fxsaber 2016.09.23 10:09 #16985 Karputov Vladimir:私はこのような構成にしています。(サーマル再起動後、ログタブ、最初の3行)2016.09.23 12:42:22.405 Terminal C:\Program Files\BCS Broker MetaTrader 5 Terminal 2016.09.23 12:42:22.405 Terminal Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700 K @ 3.50 GHz, RAM: 8098 / 16301 Mb, HDD: 6387 / 30000 Mb, GMT+02:00 2016.09.23 12:42:22.405 Terminal BCS Broker MetaTrader 5 Terminal x64 build 1430 started (BCS Broker) Vladimir Karputov 2016.09.23 10:29 #16986 fxsaber: 曖昧。x32マシンの場合。2016.09.23 13:23:55.052 Terminal C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075 2016.09.23 13:23:55.052 Terminal Windows 10 Home (X86 based PC), IE 11.00, UAC, Intel Atom Z3740 @ 1.33 GHz, RAM: 607 / 1931 Mb, HDD: 20500 / 49784 Mb, GMT+02:00 2016.09.23 13:23:55.049 Terminal MetaTrader 5 build 1430 started (MetaQuotes Software Corp.) 動作しない。 Vladimir Pastushak 2016.09.23 10:32 #16987 Andrey Barinov: それらは「ドロップアウト」しますが、それらを呼び出そうとするとコンパイルエラーが 発生します。そんなことより、これからの生活を楽にするために、いろいろと工夫しているんです。私はこの方法で問題を解決しました。親ではすべてのprotecdと継承はprotecdの下で行われ、次にoverrideになります。 fxsaber 2016.09.23 10:34 #16988 Karputov Vladimir:曖昧。x32マシンの場合。 動作しない。 アプリケーションは、何度もやってうんざりしているにもかかわらず、作られています。 Anton 2016.09.23 11:04 #16989 fxsaber:インジケーターでチャート上の自分のハンドルを知るにはどうしたらいいですか?ChartIndicatorName は、短い名前を返すので、適切では ありません。また、同じ名前のインジケータが、異なる入力パラメータで既に実行されている可能性があります。チャートと計算からインジケータを削除できるようにしてほしい。もうお分かりかもしれませんが、念のため明らかにしておきます。インジケーターのハンドルは、実際にはインジケーターを作成したプログラム(Expert Advisor、インジケーター、スクリプトなど)内部のインジケーターの記述への参照でしかなく、一種の「番号」と考えることができます。つまり、この「数値」は、そのインジケータを作成した(ハンドルを取得した)プログラムの外では意味を持ちません。ChartIndicatorGet()関数を 呼び出すプログラムでも、何かグローバルなインジケータのハンドルを取得するわけではなく、このインジケータの記述を作成し、その「番号」をアドレス指定用に割り当てるだけです。 端末全体で一意のグローバルなインジケータ・ハンドルは存在しない。ショートネームの使用は、例として挙げることができます。できるようになります。 string short_name="unknown ma"; switch(InpMAMethod) { case MODE_EMA : short_name="EMA"; break; case MODE_LWMA : short_name="LWMA"; break; case MODE_SMA : short_name="SMA"; break; case MODE_SMMA : short_name="SMMA"; break; } IndicatorSetString(INDICATOR_SHORTNAME,short_name+"("+string(InpMAPeriod)+")");これにより、「 同じインジケータが異なる入力パラメータで既に実行 されている」という問題を解決することができます。そして、視覚的にもどのインジケーターが機能するかが明確になります。 fxsaber 2016.09.23 11:53 #16990 Anton:もうお分かりかもしれませんが、念のため明らかにしておきます。インジケータハンドルは、実際にはインジケータを作成したプログラム(Expert Advisor、インジケータ、スクリプトなど)内のインジケータの説明へのアドレスに過ぎず、一種の「番号」と考えることができます。つまり、この「数値」は、そのインジケータを作成した(ハンドルを取得した)プログラムの外では意味を持ちません。ChartIndicatorGet()関数を 呼び出すプログラムでも、何かグローバルなインジケータのハンドルを取得するわけではなく、このインジケータの記述を作成し、その「番号」をアドレス指定用に割り当てるだけです。 端末全体で一意のグローバルなインジケータ・ハンドルは存在しない。ShortNameの使い方は、例で見ての通りです。こんな風にできるんですね。これにより、「 同じインジケータが異なる入力パラメータで既に実行 されている」という問題を解決することができます。また、視覚的にもどのインジケーターが効くのかが分かりやすくなっています。ありがとうございます。以前、stringoさんからそのような説明を受けたことがあります。ハンドルが「私」のものであることを判断する方法はいくつか見つかりました。インジケータバッファの極値を変更し、対応するCopyBufferの値と比較しています。一致すれば「私」です。これが、undeletableインジケーターの考え方です。ShortNameを変更し、ChartIndicatorNameと比較しています。 1...169216931694169516961697169816991700170117021703170417051706...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
間違ったプログラミングスタイルをすべてバグのせいにするのは無理があります。
どんなSURPRISEなんだ!?明らかなバグを指摘したら、「スタイル」なんて戯言を言われる。
A100やMeatとは月と同じくらい遠い存在です。よくわからないけど、バグを見せてくれる。でも、そこに自分の「スタイル」を持ち込むつもりはありません。
うまくいかないんです。
以下はコードの全文です。
とプリントアウトする。
以下はコードの全文です。
とプリントアウトする。
OnDeinitにすら辿り着けないのです。
そして、私の数値はログと一致していますが、あなたの数値は一致していないことに注意してください。マイログ
ターミナルでインジケーターやEAを1つも動かしていない。OnDeinitにすら辿り着けないのです。
そして、私の数値はログと一致していますが、あなたの数値は一致していないことに注意してください。マイログ
ターミナルでインジケーターやExpert Advisorを起動していないのですが、どうしたらいいですか?私はこのような構成にしています。
(サーマル再起動後、ログタブ、最初の3行)
私はこのような構成にしています。
(サーマル再起動後、ログタブ、最初の3行)
曖昧。x32マシンの場合。
動作しない。
それらは「ドロップアウト」しますが、それらを呼び出そうとするとコンパイルエラーが 発生します。
そんなことより、これからの生活を楽にするために、いろいろと工夫しているんです。
私はこの方法で問題を解決しました。親ではすべてのprotecdと継承はprotecdの下で行われ、次にoverrideになります。
曖昧。x32マシンの場合。
動作しない。
インジケーターでチャート上の自分のハンドルを知るにはどうしたらいいですか?ChartIndicatorName は、短い名前を返すので、適切では ありません。また、同じ名前のインジケータが、異なる入力パラメータで既に実行されている可能性があります。
チャートと計算からインジケータを削除できるようにしてほしい。
もうお分かりかもしれませんが、念のため明らかにしておきます。インジケーターのハンドルは、実際にはインジケーターを作成したプログラム(Expert Advisor、インジケーター、スクリプトなど)内部のインジケーターの記述への参照でしかなく、一種の「番号」と考えることができます。つまり、この「数値」は、そのインジケータを作成した(ハンドルを取得した)プログラムの外では意味を持ちません。ChartIndicatorGet()関数を 呼び出すプログラムでも、何かグローバルなインジケータのハンドルを取得するわけではなく、このインジケータの記述を作成し、その「番号」をアドレス指定用に割り当てるだけです。 端末全体で一意のグローバルなインジケータ・ハンドルは存在しない。
ショートネームの使用は、例として挙げることができます。できるようになります。
これにより、「 同じインジケータが異なる入力パラメータで既に実行 されている」という問題を解決することができます。
そして、視覚的にもどのインジケーターが機能するかが明確になります。
もうお分かりかもしれませんが、念のため明らかにしておきます。インジケータハンドルは、実際にはインジケータを作成したプログラム(Expert Advisor、インジケータ、スクリプトなど)内のインジケータの説明へのアドレスに過ぎず、一種の「番号」と考えることができます。つまり、この「数値」は、そのインジケータを作成した(ハンドルを取得した)プログラムの外では意味を持ちません。ChartIndicatorGet()関数を 呼び出すプログラムでも、何かグローバルなインジケータのハンドルを取得するわけではなく、このインジケータの記述を作成し、その「番号」をアドレス指定用に割り当てるだけです。 端末全体で一意のグローバルなインジケータ・ハンドルは存在しない。
ShortNameの使い方は、例で見ての通りです。こんな風にできるんですね。
これにより、「 同じインジケータが異なる入力パラメータで既に実行 されている」という問題を解決することができます。
また、視覚的にもどのインジケーターが効くのかが分かりやすくなっています。
ありがとうございます。以前、stringoさんからそのような説明を受けたことがあります。ハンドルが「私」のものであることを判断する方法はいくつか見つかりました。