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

 

SymbolsTotal() とSymbolName()はテスターのどこから情報を取るのですか? 端末のi番目のシンボルとテスターの間にミスマッチがあります。

ターミナルで3番目のUSDJPYなら、テスターで3番目のEURGBP。

MarketWatchのシンボルを列挙して、シリアル番号でExpert Advisorにコーディングしているだけです。

 

こんにちは。

IndicatorSetString関数ではインジケーターの短い名前を指定することができ、その名前を元にインジケーターをチャートから 削除することができます。

これは不思議な状況だと思います。

会社のパソコンではうまくいくのですが、自宅のパソコンでは、ショートネームの値が 最初から自動的に設定されており(つまり、新しい名前をつけるための入力パラメータを 考慮せずに)、インジケータを切り離して再ロードしないと新しい名前が表示さ れないのです。

最初に思い浮かんだのは、ソフトの違いでしたが、比べてみて、すべてが基本、同じであることに気づきました。

- エキスパートコードとインジケーターコード。

- ソフトウェアのバージョン(Build 425)です。

-OS(WinXP SP3)。

- は、同じ設定(特別に比較)です。

一般的には、以下のようなチェックになります。

1.画面にはいくつかのボタンが表示され、それぞれにインジケーターの略称と一般名称が表示されます

2.ボタンを押すと、その通称名で対応するインジケーターが表示され、離すと、通称名に基づいて削除されます。

3. 会社のPCでは、インジケータは1回目に押したときから削除されますが、自宅のPCでは2回目に押したときのみ削除されます。

その理由として考えられることは何でしょうか。

エキスパートやインジケータなどの通常のもの、および前述の質問と直接関係のないその他の機能を除いて図式化すると、次のようになる。

1. インジケータ My_Indicator

   input double  Offset  = 0;
   int OnInit()  
   {  
      string NewNameIndicator = OldNameIndicator + Offset;
      IndicatorSetString (INDICATOR_SHORTNAME, NewNameIndicator);
   }

2. EAで。

   void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
   {  
        String ShortNameIndicator1;
        //---При нажатии            
        if (sparam==My_Button1.Name()){
            if(My_Button1.State()==true){
                Int handle = iCustom (_Symbol,_Period, "My_Indicator1 ", "FirstParameter");
                ChartIndicatorAdd(0,0,handle);
                ShortNameIndicator1 = ChartIndicatorName(0,0,ChartIndicatorsTotal(0,0)-1);
                 Alert (“State()=true, IndicatorName()=”,   ShortNameIndicator1);
             }
        }
         //---При отжатии
        if (sparam==My_Button1.Name()){
           if(My_Button1.State()==false){
                  Alert (“State()=false, IndicatorName()=”,   ShortNameIndicator1);
                  ChartIndicatorDelete(0,0,ShortNameIndicator1);  
           }
        }
    }

その結果

会社のPCでは 1パス目からIndicatorNameが 新しい名前として出力されますが、自宅のPCでは2 パス 目からしか 出力されません。

会社のPCでは、1回目のクリックでIndicatorNameが削除され、自宅のPCでは、2回目のクリックで削除されます。

同時に、Expert Advisorとインジケータのコードは同じですが、ホームPC上で最初に押した後離すと、オリジナルのインジケータ名(名前に入力パラメータを追加していないMy_Indicator)が表示されます(繰り返しますが、どちらも同じものを使用しています)。

 

ここで、servicedeskへの メッセージを引用します。


Версия и битность терминала



MetaEditor 5.00 build 425. Windows 7 ultimate, build 7600.

Описание проблемы

При создании файла скрипта с кодом

void OnStart()
{
}


コンパイルしようとするとエラーになる 内部エラー#108

最新版のターミナルをダウンロードし、同じフォルダに再インストールしたところ、エラーが内部エラー#-3に変更されました。

一連の動作
エラーと関係があるかどうかは分かりませんが、MQL5のヘルプファイルを対応する自動MetaEditorの手順で更新した直後から表示されるようになりました。

期待される結果


スクリプトの正常なコンパイル))


今日、コンピュータのアンチウィルス・クリーンアップを行ったところ、問題は解消されました。

このマルウェアは、既知のどのアンチウイルスでも検出されなかったため、新しいもののようです。外見上の症状は以下の通りである。

  • c:\WindowsAppPatch フォルダーに意味のない名前と .dat 拡張子を持つファイルが存在する。ファイルヘッダを見ると、実行ファイルであることがわかる。元の名前はdd.exeで、「製品名」「著作権」というフィールドは意味のない大文字の集合である。
  • レジストリキーHKLMSoftwareのUserinitエントリが変更され、上記のファイルへのパスが設定されるようになりました。エントリを削除しても、メモリ内にウイルスが残っていると、後者は気づかれずに再作成する傾向があります。
  • conhost.exe、route.exe、およびnetsh.exeが複数回実行されることがある。
  • MetaEditor 5の不具合))- Metaquotesエディタは、そのすべての機能に加えて、かなり良いマルウェア検出器でした)

セーフモードですべてクリーンアップ。

はい、Webmoneyのローカル口座に傷がつきましたが、識別データは消えていません)))。

皆さんも手動で確認することをお勧めします。

 
Urain:

SymbolsTotal() とSymbolName()はテスターのどこから情報を取るのですか? 端末のi番目のシンボルとテスターの間にミスマッチがあります。

ターミナルで3番目のUSDJPYテスターで3番目のEURGBPの場合。

MarketWatchのシンボルを列挙して、シリアル番号でExpert Advisorにコーディングしているだけです。

MarketWatchのシンボルの順番は、定義上どのようなものでもよいので、当てになりません。
 

ファイル:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

なんだっけ

は、enum enum_TYPE_MARKET_INFO を数値化したもののように見えます。

私もそうなのですが、SDに報告してください。

 
Renat:
マーケットウォッチの文字の順番は、定義上どのような順番でもよいので、根拠とすることはできません。

記号の順番や数ではなく、端末とテスターで同時に順番や数が違うのです。

シンボルリストをファイルを通してテスターに渡すことで問題を解決しました。これはバグだと心から思っているが。

 
Urain:

記号の順番や数ではなく、同時刻の記号の順番や数が端末とテスターで違うのです。

一般的には、文字セットをファイルを通してテスターに渡すことで問題を解決していました。正直なところ、バグだと思うけれど。

問題がよくわからないのですが......。

また、作業中にユーザーがマーケットウォッチの文字順を変更した場合も、バグになるのでしょうか?

 
AlexSTAL:

問題がよくわからないのですが......。

Marketwatchの実行中にユーザーが文字の順番を変えたら、それもバグになるのでしょうか?

テスターが起動しているとき? それはありえません。テスターの起動後はスタンドアロンで動作しますが、起動前のモードではシンボルが一致することが期待されます(Expert Advisorのテスト 間のもの、例えばEAを変更するとき、シンボルや期間を変更するとき、テスターの設定を変更すると、シンボルの一致につながるはずです、imhoです)。
 
Urain:

文字の順番や数ではなく、端末とテスターで同時に順番や数が違うのです。

一般的には、テスター内の文字リストをファイル経由で渡すことで解決していました。これはバグだと心から思っているが。

シンボルデータベース(マーケットウォッチ)は、サーバーから非同期かつランダムに更新されます。どんな場合でも、その命令に頼ることはできない。

テスターは別のプログラムで、多くの場合リモートです。テスターでは、シンボルベースを完全に移し替えず、計算で使用するシンボルだけを移し替えることで、リソースを節約しています。そのため、(テスターのアクティブシンボルリストに追加される)シンボルの順序が異なります。

パラメータにシンボル名を 使用する - これはより安全なオプションです。