エラー、バグ、質問 - ページ 1506

 
DV2010:

不備な点はご容赦ください。

1.ログタブに情報があります。

2.削除対象となる指標は、標準のボリンジャーバンドです。

- インジケーターファイルは、C:︓Program Files Alpari Limited MT5︓MQL5︓Indicators︓ExamplesBB.ex5です。

- コンパイルされたファイルは、手動でチャートに追加されます。

- の2つのファイルが添付されています。

3.バグが検出されたインジケータを削除したExpert Advisorのフルコード。

   void OnInit(){
      ChartIndicatorDelete(0,0,"Bollinger Bands");
   } 

テスト結果

このような「Expert Advisor」(アプリケーション内-DeleteInd.ex5)をチャート上にドラッグした後、「Expert Advisor」(アプリケーション内-DeleteInd.ex5)をドラッグしてください。

手動でチャートに追加したボリンジャーバンドは削除されますが、その後、チャートサイズを変更してもチャートが拡大縮小されません。

このような詳細で整った質問をありがとうございます(このような書き方をする人は久しぶりです!)。

私が持っているのは、これです。

  1. BBインジケータは...㊙MQL5↩Indicators㊙Examples㊙BB.mq5から手動で追加しています。
  2. 同じチャートでExpert Advisorを動かしています。Expert Advisor本体を追加しました。
    //+------------------------------------------------------------------+
    //|                                                      ProjectName |
    //|                                      Copyright 2012, CompanyName |
    //|                                       http://www.companyname.net |
    //+------------------------------------------------------------------+
    void OnInit()
      {
       ResetLastError();
       if(!ChartIndicatorDelete(0,0,"Bollinger Bands"))
          Print("Error delete BB ",GetLastError());
      }
    //+------------------------------------------------------------------+
    エラーが表示される

    err_chart_indicator_cannot_del

    4115

    チャートからインジケータを削除するとエラーになる件


このエラーは、EAからインジケータを削除した後、BBがあったチャートウィンドウは見ることができますが、実際にはすでに削除されているために発生します。これを確認するには、Expert Advisorを実行した後、ターミナルで 別のプロファイルに切り替えてから(古いプロファイルに)戻ると、チャートが牛のように流れたことが確認できます。

私の構成です。

2016.02.11 18:47:04.915 Terminal        MetaTrader 5 x64 build 1241 started (MetaQuotes Software Corp.)
2016.02.11 18:47:04.915 Terminal        Windows 10 Pro (x64 based PC), IE 11.63, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 785 / 3981 Mb, HDD: 68822 / 233310 Mb, GMT+02:00
2016.02.11 18:47:04.915 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\43 B472C43247368C5B97C7F22A1AE963
ファイル:
DeleteInd.mq5  1 kb
 
Karputov Vladimir:

こんなに詳しくて、よくできた質問をありがとうございます(こんな風に書いてくれる人は久しぶりです!)。

その様子をご紹介します。

  1. BBインジケータは...㊙MQL5↩Indicators㊙Examples㊙BB.mq5から手動で追加しています。
  2. 同じチャートでExpert Advisorを動かしています。Expert Advisorにいくつかの変更を加えました。
    エラーが表示される

    err_chart_indicator_cannot_del

    4115

    チャートからインジケータを削除するとエラーになる件


このエラーは、EAからインジケータを削除した後、BBがあったチャートウィンドウは見ることができますが、実際にはすでに削除されているために発生します。これを確認するには、Expert Advisorを実行した後、ターミナルで 別のプロファイルに切り替えてから(古いプロファイルに)戻ると、チャートが牛のように流れたことが確認できます。

私の構成です。

ログであなたのコードを実行すると、私は唯一の取得します。

2016.02.11 20:14:01.996    Experts    expert DeleteInd (XAUUSD,M1) loaded successfully

しかし、別のプロファイルに切り替えて戻ってくると、ウィンドウがありません(Expert Advisorを追加した後はウィンドウ内の引用符が変化していました)。

これはバグということなのでしょうか?私の理解では、ChartIndicatorDelete()関数が、このようなチャートの異常な動作につながることはないはずです。修正することは可能ですか?

 
DV2010:

あなたのコードを実行すると、ログブックにしか表示されません。

2016.02.11 20:14:01.996    Experts    expert DeleteInd (XAUUSD,M1) loaded successfully

しかし、別のプロファイルに切り替えて戻ってくると、ウィンドウがありません(Expert Advisor を追加した後、ウィンドウ内の引用符は変化していましたが)。

これはバグということなのでしょうか?私の理解では、ChartIndicatorDelete()関数が、このようなチャートの異常な動作につながることはないはずです。修正することは可能ですか?

サービスデスクに報告済みです。
 
Expert Advisor のモードを Expert Advisor と Indicator で切り替えて、1つのファイルにした方が良いとのことでした。同じ製品が異なる端末に搭載されます。

切り替えたんです。しかし、何が起こったかというと、Expertsフォルダにあるmq4ファイルをコンパイルすると、プログラムはEAとしてのみ動作し、インジケータとしては(Indicatorsフォルダにコピーすると)チャート上に設定すらされないのです。しかし、このフォルダで再コンパイルすると、すべてOKになります。EAも同様で、Indicatorsフォルダにコンパイルされている場合はインストールされません。その理由は何なのか、教えてください。コンパイルモードは厳密で、エラーはありません。

 

MT5 1241の最新ビルドでは、ChartIndicatorDelete関数がチャートを "混乱 "させる。サイズ変更時にチャートが再描画されない、ターミナルを閉じた 時にチャートが保存されないなど。

これはすでに修正済みです。次のビルドまでお待ちください

 
Igor Ramensky:
デスクは、ファイルは1つであるべきだとアドバイスした。
サービスデスクでアプリケーション 番号を教えてもらうことはできますか?
 
開発者の皆様、MQLで関数やクラスメソッドの 再帰は可能かどうか教えてください。再帰的にメソッドを呼び出すと、スタックオーバーフローが発生します。
 
coderex:
開発者の皆様、MQLでクラス 関数やメソッドの 再帰が可能かどうか、アドバイスをお願いします。再帰的なメソッド呼び出しをしていて、スタックオーバーフローが発生するのですが。

もちろん、許されることです。そうでなければ、スタックオーバーフローは発生しないでしょう。

そして、何を期待したのでしょうか?

再帰深度を何らかの方法で制御しているのでしょうか?

 
Slawa:

もちろん、許されることです。そうでなければ、スタックオーバーフローは発生しないでしょう。

何を期待していたんですか?

再帰の深さを何らかの方法で制御しているのでしょうか?

もうわかったよ :) もちろん、つまずいたのは悪かったよ、長い間再帰を使ってなかったから再帰の深さ制御を忘れてたんだ...。
 
アクティベーションはどれくらいの頻度で行うことができますか?あるいは、1回起動した後、次の起動が可能になるまでの時間は?