Fehler, Irrtümer, Fragen - Seite 363

 

Woher nehmen SymbolsTotal() und SymbolName() die Informationen im Tester? Ich habe eine Diskrepanz zwischen dem i-ten Symbol im Terminal und im Tester.

Wenn im Terminal der 3. USDJPY im Tester der 3. EURGBP.

Ich mache gerade eine Aufzählung von MarketWatch-Symbolen und kodiere sie in Expert Advisor nach Seriennummern.

 

Guten Tag!

Ich habe eine Frage zu der FunktionIndicatorSetString, in der man einen Kurznamen für den Indikator angeben kann, mit dem dieser Indikator später aus dem Chart entfernt werden kann.

Ich denke, das ist eine seltsame Situation.

Auf dem Büro-PC geht dieses Verfahren gut, aber auf dem anderen, dem Heim-PC, wird der Wert des Kurznamens zu Beginn automatisch gesetzt (d.h. ohne Berücksichtigung der Eingabeparameter, die ich zur Bildung eines neuen Namens verwende), und der neue Name erscheint erst nach dem Abnehmen des Indikators und seinem erneuten Laden.

Das erste, was mir in den Sinn kam, waren die Unterschiede in der Software, aber nachdem ich sie verglichen hatte, stellte ich fest, dass alles grundsätzlich identisch ist:

- Experten- und Indikatorcodes;

- Software-Version (Build 425);

- Betriebssystem (WinXP SP3);

- die gleichen Einstellungen (speziell verglichen).

Im Allgemeinen läuft die Prüfung wie folgt ab:

1. Auf dem Bildschirm werden mehrere Schaltflächen angezeigt, die jeweils einen kurzen und einen allgemeinen Namen für einen Indikator haben

2. Wenn Sie die Taste drücken, erscheint der entsprechende Indikator mit seinem allgemeinen Namen, und wenn Sie die Taste loslassen, wird er anhand des Kurznamens gelöscht.

3. Auf dem Büro-PC werden die Anzeigen beim ersten Drücken gelöscht, auf dem Heim-PC erst beim zweiten Drücken.

Was könnte der mögliche Grund dafür sein?

Wenn man schematisch die üblichen Dinge für Experten und Indikatoren sowie andere Funktionalitäten, die nicht direkt mit der genannten Frage zusammenhängen, ausschließt, sieht es wie folgt aus:

1. In Indikator My_Indicator:

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

2. In 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);  
           }
        }
    }

Das Ergebnis ist:

Auf dem Büro-PC wirdIndicatorName ab dem ersten Durchlauf als neuer Name ausgegeben, auf dem Heim-PC dagegen erst ab dem zweiten Durchlauf.

Auf dem Büro-PC wird der Indikatorname nach dem ersten Klick gelöscht, auf dem Heim-PC nach dem zweiten Klick.

Gleichzeitig wird nach dem ersten Drücken und Loslassen auf dem Home-PC der ursprüngliche Indikatorname angezeigt (My_Indicator ohne Hinzufügen des Eingabeparameters zum Namen), obwohl der Code des Expert Advisors und des Indikators, ich wiederhole, in beiden Fällen derselbe ist.

 

Um meine Nachricht an servicedesk hier zu zitieren


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



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

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

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

void OnStart()
{
}


Der Versuch zu kompilieren führt zu einem internen Fehler #108

nach dem Herunterladen der neuesten Terminalversion und der Neuinstallation im selben Ordner hat sich der Fehler in den internen Fehler #-3 geändert

Die Abfolge der Aktionen
Ich weiß nicht, ob es mit dem Fehler zusammenhängt, aber er trat auf, nachdem ich die MQL5-Hilfedateien mit dem entsprechenden automatischen MetaEditor-Verfahren aktualisiert hatte.

Das erwartete Ergebnis


normale Kompilierung des Skripts))


Das Problem verschwand heute nach einer Bereinigung des Computers mit einem Antivirenprogramm.

Die Malware scheint neu zu sein, da sie von keinem der bekannten Antivirenprogramme erkannt wurde. Die äußeren Erscheinungsformen waren wie folgt:

  • Das Vorhandensein einer Datei mit einem nichtssagenden Namen und der Erweiterung .dat im Ordner c:\Windows\AppPatch. Aus der Kopfzeile der Datei geht hervor, dass sie ausführbar ist, der ursprüngliche Name lautet dd.exe, und die Felder "Produktname" und "Copyright" sind bedeutungslose Sätze von Großbuchstaben.
  • Vorhandensein eines geänderten Userinit-Eintrags im Registrierungsschlüssel HKLM\Software\Microsoft\Windows NT\Winlogon mit dem Pfad zu der oben genannten Datei. Wenn der Eintrag gelöscht wird, neigt dieser dazu, sich unbemerkt neu zu erzeugen, wenn der Virus noch im Speicher ist.
  • gelegentliches Ausführen mehrerer Kopien der Prozesse conhost.exe und route.exe und manchmal netsh.exe
  • Pannen mit MetaEditor 5)) - Metaquotes-Editor war ein ziemlich guter Malware-Detektor zusätzlich zu all seinen Funktionen)

Ich habe alles im abgesicherten Modus bereinigt.

Ja, es wurde Webmoney lokalen Konto gekratzt, aber Identifikationsdaten haben nicht verschwunden)))).

Ich empfehle jedem, dies manuell zu überprüfen.

 
Urain:

Woher nehmen SymbolsTotal() und SymbolName() die Informationen im Tester? Ich habe eine Diskrepanz zwischen dem i-ten Symbol im Terminal und im Tester.

Wenn im Terminal der 3. USDJPY im Tester der 3. EURGBP.

Ich mache gerade eine Aufzählung von MarketWatch-Symbolen und kodiere sie in Expert Advisor nach Seriennummern.

Sie können sich nicht auf die Reihenfolge der Symbole in MarketWatch verlassen, da diese per Definition beliebig sein kann.
 

Dateien:
Test_X.mq5  1 kb
MyMQL4.mqh  5 kb
 
EvgeTrofi:

Was ist das?

sieht aus wie enum enum_TYPE_MARKET_INFO, in numerischer Form.

Ich habe das gleiche Problem. Melden Sie es dem SD.

 
Renat:
Die Reihenfolge der Zeichen in der Marktübersicht kann nicht festgelegt werden, da sie per Definition beliebig sein kann.

Es geht nicht um die Reihenfolge der Symbole oder die Anzahl der Symbole, aber die Reihenfolge und die Anzahl der Symbole zur gleichen Zeit sind im Terminal und im Prüfgerät unterschiedlich.

Ich habe das Problem gelöst, indem ich die Symbolliste über eine Datei an den Prüfer weitergegeben habe. Obwohl ich aufrichtig glaube, dass dies ein Fehler ist.

 
Urain:

Es geht nicht um die Reihenfolge der Symbole oder die Anzahl der Symbole, sondern um die Tatsache, dass diese Reihenfolge und Anzahl gleichzeitig im Terminal und im Tester unterschiedlich sind.

Im Allgemeinen habe ich das Problem gelöst, indem ich den Zeichensatz über eine Datei an den Prüfer weitergegeben habe. Obwohl ich ehrlich gesagt glaube, dass es ein Fehler ist.

Ich verstehe das Problem nicht wirklich...

Und wenn der Benutzer die Reihenfolge der Zeichen in Marketwatch während der Arbeit ändert, ist das auch ein Fehler?

 
AlexSTAL:

Ich verstehe das Problem nicht wirklich...

Wenn der Benutzer die Reihenfolge der Zeichen in Marketwatch ändert, während es läuft, wäre das auch ein Fehler?

Es ist unwahrscheinlich, nach dem Start des Testers läuft er eigenständig, aber im Vorstartmodus wird erwartet, dass die Symbole übereinstimmen (die zwischen den Tests von Expert Advisors, z.B. beim Wechsel eines EAs oder beim Wechsel eines Symbols oder einer Periode, und jede Änderung der Testereinstellungen sollte zu einem Symbolabgleich führen, imho).
 
Urain:

Es geht nicht um die Reihenfolge der Symbole oder die Anzahl der Symbole, aber die Reihenfolge und die Anzahl sind im Terminal und im Prüfgerät gleichzeitig unterschiedlich.

Im Allgemeinen habe ich das Problem gelöst, indem ich eine Liste von Zeichen im Tester durch eine Datei weitergegeben habe. Obwohl ich aufrichtig glaube, dass dies ein Fehler ist.

Die Symboldatenbank (Market Watch) wird asynchron und zufällig vom Server aktualisiert. Auf seine Bestellung können Sie sich in keinem Fall verlassen.

Der Tester ist ein separates Programm, das oft ferngesteuert wird. Im Tester wird die Symbolbasis nicht vollständig übertragen, sondern nur die Symbole, die in Berechnungen verwendet werden - dies geschieht, um Ressourcen zu sparen. Daher ist die Reihenfolge der Symbole (die der Liste der aktiven Symbole im Prüfgerät hinzugefügt werden) unterschiedlich.

Verwenden Sie Symbolnamen in Parametern - dies ist eine sicherere Option.

Grund der Beschwerde: