MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 682 1...675676677678679680681682683684685686687688689...1953 新しいコメント mbjen 2018.10.31 21:37 #6811 私は同じ種類のオブジェクトを含む大規模なプログラムを持っています。多くの種類があるということです。しかし、それらはプログラムの異なるモジュールで繰り返されます。そして、テストが 終わった後のログには、例えば、xxx undeleted objectsと出ています。などなど、数種類。 オブジェクトが削除されていない箇所を調べるにはどうしたらよいですか?このためのツールキットはありますか? Artyom Trishkin 2018.11.01 03:31 #6812 mbjen:私は同じ種類のオブジェクトを含む大規模なプログラムを持っています。多くの種類があるということです。しかし、それらはプログラムの異なるモジュールで繰り返されます。そして、テストが終わった後のログには、例えば、xxx undeleted objectsと出ています。などなど、数種類。 オブジェクトが削除されていない箇所を調べるにはどうしたらよいですか?このためのツールキットはありますか?1930年ビルドのバグ。 Dmitrii Krasnykh 2018.11.01 07:25 #6813 テストEAがなぜか価格より下にBUYSTOPをオープン!?今は手動で注文を閉じることもできない。こんなことが可能なのか? ファイル: Screenshot_3.png 280 kb Screenshot_4.png 299 kb Roman Sharanov 2018.11.01 09:19 #6814 MQl5がOpenCLをサポートしていることに驚きました。 この間、誰もロボット用のオプティマイザーを書かなかったのでしょうか。そうすれば、何百万回もの実行が何世紀も続くことはなく、少なくとも何年かは続くはずです。:) Dmitry Belov 2018.11.01 13:59 #6815 Igor Makanu:それは、あなたが提出したコードで、SredRazmaxとSredRazmin 変数を初期化していない、すべてのtickをカウントしていることを意味します。 変数を使う前に初期化するのは良い習慣です。大学でもそう教えていますし、バグを見つけるのにかかる時間を短縮できます ;)私は最初にそれらを初期化し、コメントでは、要素ごとに別の配列要素を見ることができます(チェックし、0は変化しないので、式が動作するはずです、)。以下はコードの全文です。 //+------------------------------------------------------------------+ //| 01.mq4 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 1 //#property indicator_color1 Red //#property indicator_width1 1 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ extern int ExtDepth=12; extern int ExtDeviation=5; extern int ExtBackstep=3; extern int nn=30; int shift, ww=0; double zz, SredRazmax, SredRazmin, Sredn; double HZZ[]; int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0, HZZ); // SetIndexStyle(0, DRAW_SECTION); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { //--- for(shift = 0; shift <= Bars-1; shift++) { zz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift); if(zz > 0.0) { HZZ[ww]=zz; ww++; } } for(ww=0;ww<=nn;ww++) { if(HZZ[ww]>HZZ[ww+1]){SredRazmax += HZZ[ww];} if(HZZ[ww]<HZZ[ww+1]){SredRazmin += HZZ[ww+1];} Comment("Средний размах = ", (SredRazmax-SredRazmin)/nn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); } //---------------------------------------------+ //расчет среднего значения //---------------------------------------------+ // for(ww=0;ww<=nn;ww++){ // if(HZZ[ww]>HZZ[ww+1]){Sredn += HZZ[ww]-HZZ[ww+1];} // if(HZZ[ww]<HZZ[ww+1]){Sredn += HZZ[ww+1]-HZZ[ww];} // Comment("Средний размах = ", Sredn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); //--- return value of prev_calculated for next call return(0); } mbjen 2018.11.01 15:06 #6816 Artyom Trishkin:ビルド1930からのバグ。何ですか?MT4を持っています。ビルド1090です。 Artyom Trishkin 2018.11.01 15:25 #6817 mbjen:何ですか?MT4を持っています。ビルド1090です。 new で生成されたオブジェクトは、オブジェクト配列に付加されるか、OnDeinit() で自ら削除されなければならない。 Igor Makanu 2018.11.01 15:41 #6818 Dmitry Belov:私は最初にそれらを初期化し、コメントは要素ごとに別の配列を出力します(見て、0は変化しないので、式が動作するはずです、)。以下はコードの全文です。 最初でもどこでも初期化せず、ただ宣言しただけなんですね 使用前に書きましたが、つまり、変数SredRazmax, SredRazmin, Srednが配列値の合計である場合、正しく合計を計算するためには、変数をゼロにしてから配列値を足して、この変数に保存する必要があります。 即ち 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[]) { //--- SredRazmax = 0.0; SredRazmin = 0.0; Sredn = 0.0; ..... 次に、ご質問の件ですが、インジケータでは、1ティックごとにOnCalculate() が呼び出され、1ティックごとにZigZagの先頭を常にカウントすることになります、つまり、1秒間に約40-60回 です。 mbjen 2018.11.01 15:58 #6819 Artyom Trishkin: new で生成したオブジェクトは、オブジェクト配列にアタッチするか、OnDeinit()で単体で削除する必要があります。啓発をありがとうございます。でも、私の質問くらい読んでくださいよ。 Artyom Trishkin 2018.11.01 16:45 #6820 mbjen:啓発をありがとうございます。でも、私の質問くらい読んでくださいよ。 して、それに答えました。 1...675676677678679680681682683684685686687688689...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私は同じ種類のオブジェクトを含む大規模なプログラムを持っています。多くの種類があるということです。しかし、それらはプログラムの異なるモジュールで繰り返されます。そして、テストが 終わった後のログには、例えば、xxx undeleted objectsと出ています。などなど、数種類。
オブジェクトが削除されていない箇所を調べるにはどうしたらよいですか?このためのツールキットはありますか?
私は同じ種類のオブジェクトを含む大規模なプログラムを持っています。多くの種類があるということです。しかし、それらはプログラムの異なるモジュールで繰り返されます。そして、テストが終わった後のログには、例えば、xxx undeleted objectsと出ています。などなど、数種類。
オブジェクトが削除されていない箇所を調べるにはどうしたらよいですか?このためのツールキットはありますか?
1930年ビルドのバグ。
MQl5がOpenCLをサポートしていることに驚きました。
この間、誰もロボット用のオプティマイザーを書かなかったのでしょうか。そうすれば、何百万回もの実行が何世紀も続くことはなく、少なくとも何年かは続くはずです。:)
それは、あなたが提出したコードで、SredRazmaxとSredRazmin 変数を初期化していない、すべてのtickをカウントしていることを意味します。
変数を使う前に初期化するのは良い習慣です。大学でもそう教えていますし、バグを見つけるのにかかる時間を短縮できます ;)
私は最初にそれらを初期化し、コメントでは、要素ごとに別の配列要素を見ることができます(チェックし、0は変化しないので、式が動作するはずです、)。以下はコードの全文です。
ビルド1930からのバグ。
何ですか?MT4を持っています。ビルド1090です。
何ですか?MT4を持っています。ビルド1090です。
私は最初にそれらを初期化し、コメントは要素ごとに別の配列を出力します(見て、0は変化しないので、式が動作するはずです、)。以下はコードの全文です。
最初でもどこでも初期化せず、ただ宣言しただけなんですね
使用前に書きましたが、つまり、変数SredRazmax, SredRazmin, Srednが配列値の合計である場合、正しく合計を計算するためには、変数をゼロにしてから配列値を足して、この変数に保存する必要があります。
即ち
次に、ご質問の件ですが、インジケータでは、1ティックごとにOnCalculate() が呼び出され、1ティックごとにZigZagの先頭を常にカウントすることになります、つまり、1秒間に約40-60回 です。
new で生成したオブジェクトは、オブジェクト配列にアタッチするか、OnDeinit()で単体で削除する必要があります。
啓発をありがとうございます。でも、私の質問くらい読んでくださいよ。
啓発をありがとうございます。でも、私の質問くらい読んでくださいよ。