Fehler, Irrtümer, Fragen - Seite 295

 
Voodoo_King:


Und dann... In der Softwareentwicklung gehört es zum guten Ton, keine Absturzseiten zu haben.


Und das ist es, womit wir es zu tun haben.

 
stringo:
Sie müssen den Fehler reproduzieren, um ihn zu beheben. Ich würde gerne die Protokolle Ihrer Agenten sehen. Es wäre gut, wenn Sie Ihren Experten schicken könnten. Beschreiben Sie die Parameter der Eingangsprüfung.

Es muss der Minuten-Zeitrahmen sein und nicht die anderen Auswahlen, wenn"jeder Tick" eingeschaltet ist.

Ich habe überall nur winzige Zeitfenster und alles scheint in Ordnung zu sein.

P.S.: Ich habe oben geschrieben.

 

Wenn das FILE_SHARE_READ-Flag ein Open-Flag ist und nicht das Open-Flag selbst, warum wird die Datei dann trotzdem geöffnet?

2011.02.07 18:18:14    Лист18 (EURUSD,H1)    Файл открыт с флагом FILE_SHARE_READ нормально Templates\Example.txt
2011.02.07 18:18:14    Лист18 (EURUSD,H1)    SHARE_READ  
void SHARE_ReadFile()
  {
   string subfolder="Templates";
   int han=FileOpen(subfolder+"\\"+folder+".txt",FILE_SHARE_READ|FILE_TXT|FILE_ANSI,"\r");
   if(han!=INVALID_HANDLE)
     {
      Print("SHARE_READ  ",FileReadString(han));           

      Print("Файл открыт с флагом FILE_SHARE_READ нормально "+subfolder+"\\"+folder+".txt"); 
      FileClose(han);
     }
   else
     {
      Print("Ошибка открытия файла с флагом FILE_SHARE_READ "+subfolder+"\\"+folder+".txt, error",GetLastError());
     }
  }

Es scheint mir, dass das Ergebnis ein Fehler beim Öffnen einer Datei sein sollte.

Und tatsächlich ist es so, denn es wird nichts gedruckt, aber die Überprüfung des Handles zeigt, dass die Datei geöffnet ist.

 
mql5:
Das Bild wird der EX5-Ressource hinzugefügt durch
#resource "<Pfad zur Datei relativ zum Ordner MQl5\Images>".

Beispiel

#resource "res\\test.bmp";

Ist alles an seinem Platz? Ich suche nach dem Pfad, wenn #resource in der EA-Datei, relativ zum Quellverzeichnis von EA.

kann die Ressourcendatei 'C:\Programme\MetaTrader 5 DEV\MQL5\Experts\myexpert\res\test.bmp' nicht öffnen (3) 0 0

Wenn #resource in der Datei der Injektion ist, geht alles an einem Ort und bekommt in Ordnern von anderen Inludes.

kann die Ressourcendatei 'C:\Programme\MetaTrader 5 DEV\MQL5\include\Arrays\res\test.bmp' nicht öffnen (3) 0 0

Die nächste Variante geht von der "Wurzel" von MQL5 aus

#resource "\\res\\test.bmp";

kann Ressourcendatei 'C:\Programme\MetaTrader 5 DEV\MQL5\res\test.bmp' nicht öffnen (3) 0 0

Ich sehe auch, dass Dinge, die früher funktionierten, nicht mehr funktionieren (die Datei liegt in MQL5/Images/res/test.bmp).

ObjectSetString(0,pname,OBJPROP_BMPFILE,0,"\\res\\test.bmp");

Habe ich etwas verpasst?

 
Vigor:

Beispiel

Ist alles an seinem Platz? Ich suche nach dem Pfad, wenn #resource in der EA-Datei, relativ zum Quellverzeichnis von EA.

kann die Ressourcendatei 'C:\Programme\MetaTrader 5 DEV\MQL5\Experts\myexpert\res\test.bmp' nicht öffnen (3) 0 0

Wenn #resource in der Datei_include steht, landet alles an einem Ort und wird in Ordnern anderer Inludes abgelegt.

kann die Ressourcendatei 'C:\Programme\MetaTrader 5 DEV\MQL5\include\Arrays\res\test.bmp' nicht öffnen (3) 0 0

Die nächste Variante geht von der "Wurzel" von MQL5 aus

kann Ressourcendatei 'C:\Programme\MetaTrader 5 DEV\MQL5\res\test.bmp' nicht öffnen (3) 0 0

Ich habe auch festgestellt, dass etwas, das früher funktionierte, jetzt nicht mehr funktioniert (die Datei ist MQL5/Images/res/test.bmp).

Habe ich etwas verpasst?



Ich denke, es sollte sein

MetaTrader 5 Kunden-Terminal Build 384

  1. Terminal: Assistent zum Hinzufügen von Remote-Test-Agenten hinzugefügt. Zusätzlich zur manuellen Eingabe und dem Import aus einer *.mt5-Datei wurde die Möglichkeit hinzugefügt, ein lokales Netzwerk zu scannen, um einen funktionierenden Agenten zu finden.
  2. MQL5: Möglichkeit hinzugefügt, Ressourcen in *.ex5-Dateien zu speichern. Um eine Ressource zu *.ex5 hinzuzufügen, verwenden Sie die Direktive #resource, die den Pfad zur Datei relativ zum MQL5\Images-Verzeichnis des Client-Terminals angibt. Beispiel:#resource myexpert\button.bmp
    Auf die Dateien in der Ressource kann mit einer Zeichenfolge wie dieser verwiesen werden: "Skriptname::Ressourcenname". Der in der Direktive #resource übergebene Dateiname (ohne Erweiterung) wird als Ressourcenname verwendet.
Wenn ich das richtig verstanden habe, können sich die Dateien hier befinden - MQL5\Images\Verzeichnisname/Dateiname.
 
Interesting:

Es sieht folgendermaßen aus

MetaTrader 5 Kunden-Terminal Build 384

relativ zum Verzeichnis MQL5\Images auf dem Client-Terminal. Zum Beispiel:#resource myexpert\button.bmp

Dies ist relativ und funktioniert nicht. und ohne Anführungszeichen. und Backslash ist doppelt.
 
Vigor:
Das ist relativ und funktioniert nicht. und man kann es nicht ohne Anführungszeichen machen. und Backslash ist doppelt.

Schauen wir es uns an.

So scheint die #Ressource "\\Images\\\\Phoenix\\Logo.bmp" zu funktionieren;

Obwohl es seltsam aussieht (nach der Idee sollte es relativ nach MQL5\Images suchen , d.h. es sollte zumindest so aussehen - #resource "\\\\Phoenix\\Logo.bmp").

Entweder machen Sie es relativ zum Images-Verzeichnis oder korrigieren Sie die Versionsbeschreibung (um alles logisch und verständlich zu machen)...

 
Ich habe in den Kommentaren ein Beispiel für einen MQL5-Ordner angegeben. Übrigens, ich habe die Log-Meldungen dort und sie zeigen deutlich, WO der Compiler nach Dateien sucht.

Und wie ich schon schrieb, funktioniert auch OBJPROP_BMPFILE mit relativem Pfad aus dem Bilderordner nicht. Im Allgemeinen funktioniert nach den letzten Experimenten alles, wenn der vollständige Pfad ab \ von MQL5 angegeben wird.

Die Frage war, ob diese Innovation gültig ist? Oder handelt es sich um ein vorübergehendes Phänomen?

 
Vigor:
Ich hatte ein Beispiel in meinem Kommentar zum MQL5-Ordner. Übrigens habe ich dort Log-Meldungen, aus denen klar hervorgeht, WO der Compiler nach Dateien sucht.

Aber es sieht überall aus, nur nicht dort, wo es hingehört :(
 

Hallo!

Code:

if (NormalizeDouble(Prices_Flow[0].Price_Position,4) != 0)
{
double Position_In_Percentage = Prices_Flow[0].Indicator_Position * 100 / Prices_Flow[0].Price_Position;
//weiterer Code, der für die Frage irrelevant ist
}


Beim gleichzeitigen Testen im Strategy Tester auf einem der Tools tritt die Division durch Null auf (2011.02.08 01:40:23 Core 2 2010.08.02 00:00:00 Nullteilung in 'almirlib.mqh' (535,102))

Wie ist dies mit dem obigen Code möglich?