Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 774

 
0Aleksandr0:

Was ist das? Ich bin nicht gut in MQL4, wenn Sie mir sagen, was ich bekommen muss, werde ich in der Lage sein, es in MQL5 zu schreiben.
Ich denke, es hat etwas mit der Berechnung von Gewinnen und Verlusten in der Vergangenheit zu tun.


Das ist es ja, ich verstehe es selbst nicht - der Code wurde in meinem Auftrag geschrieben, aus einer Klasse herausgezogen. Ich bin auch geneigt zu glauben, dass dieser Code für die Berechnung des Gleichgewichts gedacht ist. Aber nach der Idee sollte die Änderung des Gleichgewichts mit der Eröffnung-Schließung eines neuen Auftrags im Array zurückgesetzt werden, aber ich sehe es nicht...

 
Aleksey Vyazmikin:

Bitte helfen Sie mir, Code auf MT5 umzuschreiben - ich weiß nichts über Aufträge :(

#include <MT4Orders.mqh>
 
fxsaber:

Vielen Dank, die EA mit dieser Klasse kompiliert - ich weiß nicht, ob es Konflikte...


Beim Ausführen des Tests tritt nun ein Fehler auf

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 DLL-Laden ist nicht erlaubt

2017.08.23 11:22:59.929 Core 3 globale Initialisierung fehlgeschlagen

2017.08.23 11:22:59.929 Core 3 Kritischer Fehler bei der globalen Initialisierung

2017.08.23 11:22:59.929 Core 3 Tester gestoppt, da Experteninitialisierung fehlgeschlagen


Bibliotheksaufruf wird verwendet - in MT4 ist alles korrekt.

#import "Kernel32.dll"
bool CopyFileW(string lpExistingFileName,string lpNewFileName,bool bFailIfExists);
#import 

Was kann der Grund dafür sein?

 
Aleksey Vyazmikin:

Vielen Dank, die EA mit dieser Klasse kompiliert - aber ich weiß nicht, ob es zu Konflikten kommt...

Das wird es nicht.

Beim Ausführen des Tests tritt nun ein Fehler auf

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 DLL-Laden ist nicht erlaubt

2017.08.23 11:22:59.929 Core 3 globale Initialisierung fehlgeschlagen

2017.08.23 11:22:59.929 Core 3 Kritischer Fehler bei der globalen Initialisierung

2017.08.23 11:22:59.929 Core 3 Tester gestoppt, da Experteninitialisierung fehlgeschlagen


Bibliotheksaufruf wird verwendet - in MT4 ist alles korrekt.

Was könnte der Grund dafür sein?

Erlauben Sie in Terminal die Verwendung von DLL.

 
fxsaber:

Das wird sie nicht.

Lassen Sie im Terminal die Verwendung der DLL zu.


Sie werden es nicht glauben - ich habe es getan, aber es hatte keine Wirkung - anscheinend gibt es einen Cache, der nach einiger Zeit geleert wird - jetzt funktioniert es. Ich danke Ihnen.

 

Wie kann den Agenten beigebracht werden, in dieselbe Datei zu schreiben? Zurzeit erstellt jeder seine eigene Datei in seinem eigenen Ordner, was nicht gut ist.

 
Aleksey Vyazmikin:

Wie kann den Agenten beigebracht werden, in dieselbe Datei zu schreiben? Zurzeit erstellt jeder seine eigene Datei in seinem eigenen Ordner, was nicht gut ist.

Alexey, öffnen Sie wenigstens einmal die Dokumentation... Dort ist genau beschrieben, welche Flagge auf den allgemeinen Ordner zeigt, der den allgemeinen Zugriff auf die Datei eröffnet. Ob es einfacher ist, auf die Antwort zu warten, als die Dokumentation zu lesen?

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin:

Wie kann den Agenten beigebracht werden, in dieselbe Datei zu schreiben? Zurzeit erstellt jeder seine eigene Datei in seinem eigenen Ordner, was nicht gut ist.


Die erste (Schritt 1) muss überwunden werden:

... in seinem eigenen Ordner, ...


Dies geschieht mit dem FILE_COMMON-Flag - alle Agenten schreiben nun in einen gemeinsamen Ordner (aber jeder Agent schreibt weiterhin in seine eigene Datei).


Beispiel EA:

//+------------------------------------------------------------------+
//|                                           Agents FILE_COMMON.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//---
input int s=0;
//---
string InpFileName="";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initialize the generator of random numbers 
   MathSrand(GetTickCount());
   InpFileName=IntegerToString(MathRand())+".txt";
//--- open the file 
   ResetLastError();
   int file_handle=FileOpen(InpFileName,FILE_WRITE|FILE_TXT|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- the string is formed, write it to the file 
      FileWriteString(file_handle,InpFileName);
      //--- close the file 
      FileClose(file_handle);
      PrintFormat("Data is written, %s file is closed",InpFileName);
      PrintFormat("Common path for all of the terminals installed on a computer: %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
     }
   else
     {
      PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+


Um diesen gemeinsamen Ordner schnell zu öffnen, gehen Sie wie folgt vor: Wählen Sie im MetaEditor im Menü Datei die Option "Gemeinsamen Datenordner öffnen".


Führen Sie nun diesen EA zur Optimierung aus und beobachten Sie, wie bei der Ausführung der Tests neue Dateien im Common Data Folder erstellt werden.

Dateien:
 
Vladimir Karputov:

Der erste (Schritt 1) muss besiegt werden:


Dies geschieht mit dem FILE_COMMON-Flag - alle Agenten schreiben nun in einen gemeinsamen Ordner (aber jeder Agent schreibt weiterhin in seine eigene Datei).


Beispiel EA:


Um diesen gemeinsamen Ordner schnell zu öffnen, gehen Sie wie folgt vor: Wählen Sie im Code-Editor von MetaEditor im Menü "Datei" die Option "Gemeinsamen Datenordner öffnen".


Führen Sie nun diesen EA zur Optimierung aus und beobachten Sie, wie neue Dateien im Common Data Folder erstellt werden, während die Tests ausgeführt werden.


Ich möchte es nicht in Common ablegen, da das Terminal in einem eigenen Verzeichnis läuft und es, wie Sie sagen, ohnehin viele Dateien gibt, was das Problem nicht löst.

 
Aleksey Vyazmikin:

Ich möchte nicht in Common gehen, da das Terminal in seinem eigenen Verzeichnis läuft, und es wird immer noch eine Menge Dateien geben, wie Sie sagen, was das Problem nicht löst.


Dort heißt es: " ... Schritt 1 ..."

Zu Schritt 2 - überlegen Sie nun selbst, wie mehrere Threads OHNE KONFLIKT in EINE Datei schreiben können.