[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Wie werden die Anfragen an den Strategietester gestellt? Wie kann man zum Beispiel den folgenden Befehl ausführen? "Führen Sie einen EA-Test in einem bestimmten Zeitrahmen mit einer bestimmten Datei durch und speichern Sie nach Abschluss den Bericht unter ".

 
alsu:
Es ist schwer, den Code von jemand anderem auf einmal zu verstehen... Wenn ich raten müsste, würde ich die Werte Imin, Imax, Jmin und Jmax in der Funktion Neuron.Study() überprüfen. Bei Epoche 0 wird der Wert 32 als lR übergeben, der dann bei der Indizierung verwendet wird (normalerweise indizieren wir Arrays von 0 bis Größe-1). Es ist durchaus möglich, dass der Fehler hier liegt.

Der Fehler stand in der Tat im Zusammenhang mit diesen Berechnungen. Danke
 
alkador:

Wie werden die Anfragen an den Strategietester behandelt? Wie kann man zum Beispiel den folgenden Befehl ausführen? "Führen Sie einen Test auf einem EA in einem bestimmten Intervall mit einer bestimmten Datei durch und speichern Sie nach Abschluss den Bericht unter ".

Konfiguration bei der Inbetriebnahme

Das Client-Terminal kann mit vordefinierten Einstellungen gestartet werden. Zu diesem Zweck wird der Name der Konfigurationsdatei als Parameter an das Client-Terminal übergeben.

Zum Beispiel:

  terminal.exe config\start.ini terminal.exe test1.txt terminal.exe "C:\Programmdateien\MetaTrader 4\config\settings25.ini"

Wenn kein vollständiger Dateipfad angegeben wird (Laufwerk:\Unterverzeichnis\Dateiname), wird die Datei im Verzeichnis des Client-Terminals gesucht. Die Konfigurationsdatei enthält die folgenden Zeilen:
[Parameter] = [Wert].

Kommentare beginnen mit einem Semikolon (;) und werden nicht ausgewertet.

Die Parameter der Konfigurationsdatei können in mehrere Gruppen eingeteilt werden: allgemeine Einstellungen, Proxy-Server-Einstellungen(Registerkarte "Server" in der Terminal-Einstellungstabelle), FTP-Einstellungen(Registerkarte "Veröffentlichen" in der Terminal-Einstellungstabelle), Expert Advisor-Einstellungen(Registerkarte "Expert Advisors" in der Terminal-Einstellungstabelle), Einstellungen für einen einzelnen Start eines Expert Advisors oder eines Skripts, Einstellungen für den Start eines Strategietesters.

Gemeinsame Einstellungen

  • Profil - Name des Unterverzeichnisses im Verzeichnis "Profile". Die Diagramme werden auf dem Client-Terminal entsprechend dem angegebenen Profil geöffnet. Wenn diese Option nicht angegeben wird, wird das aktuelle Profil geöffnet.

  • MarketWatch - Name der Datei (Verzeichnis \symbolsets), die die Liste der Symbole enthält, die im Marktbeobachtungsfenster angezeigt werden sollen. Eine solche Datei kann über das Kontextmenü des Fensters "Market Watch - Symbolsets - Speichern unter" empfangen werden.

  • Login - Nummer des Kontos, mit dem beim Start eine Verbindung hergestellt werden soll. Fehlt dieser Parameter, wird das aktuelle Login verwendet.

  • Passwort - Passwort für die Anmeldung. Dieser Parameter wird ignoriert, wenn das Kundenterminal persönliche Daten auf der Festplatte speichert und die zu verbindende Kontonummer in der Liste enthalten ist.

  • Server - Name des Handelsservers, mit dem die Verbindung hergestellt werden soll. Der Servername stimmt mit dem Namen der entsprechenden srv-Datei überein, die im config-Verzeichnis gespeichert ist. Dieser Parameter wird ignoriert, wenn die Informationen über das zu verbindende Konto auf der Festplatte gespeichert sind.

  • AutoConfiguration - "true" oder "false", je nachdem, ob die Autokonfiguration aktiviert werden soll. Fehlt dieser Parameter, wird der Wert aus den aktuellen Servereinstellungen verwendet.

  • DataServer - Adresse des Rechenzentrums. Wenn die automatische Serverkonfiguration aktiviert ist, kann dieser Eintrag ignoriert werden. Fehlt dieser Parameter, wird der Wert aus den aktuellen Servereinstellungen verwendet.

  • EnableDDE - "true" oder "false", je nachdem, ob der DDE-Server aktiviert werden soll. Fehlt dieser Parameter, wird der Wert aus den aktuellen Servereinstellungen verwendet.

  • EnableNews - "true" oder "false", je nachdem, ob der Empfang von Nachrichten erlaubt sein soll oder nicht. Wenn dieser Parameter nicht vorhanden ist, wird der Wert aus den aktuellen Servereinstellungen verwendet.

Beispiel:

  Allgemeine Einstellungen Profil=test 3 MarketWatch=set2.set Login=12345 Passwort=xxxxxx Server=MetaQuotes-demo AutoConfiguration=false DataServer=192.168.0.1:443 EnableDDE=true EnableNews=false

Proxy-Einstellungen

  • ProxyEnable - "true" oder "false", je nachdem, ob der Proxyserver für die Verbindung mit dem Handelsserver verwendet werden soll.

  • ProxyServer - Adresse des Proxy-Servers.

  • ProxyType - Typ des Proxyservers. Es kann "HTTP", "SOCKS4" oder "SOCKS5" sein.

  • ProxyLogin - Anmeldung am Proxy-Server.

  • ProxyPassword - Passwort für den Zugriff auf den Proxy-Server.

Fehlt einer dieser Parameter, werden die aktuellen Einstellungen des Client-Terminals verwendet (Proxy-Einstellungen auf der Registerkarte "Server" der Tabelle mit den Client-Terminal-Einstellungen).

Beispiel:

  Proxy-Einstellungen ProxyEnable=true ProxyServer=proxy.company.com:3128 ProxyType=HTTP ProxyLogin=user45 ProxyPassword=xxx

FTP-Einstellungen

  • FTPEnable - aktiviert/deaktiviert die Veröffentlichung. Zulässige Werte sind "wahr" oder "falsch".

  • FTPPassiveMode - aktiviert/deaktiviert den passiven Modus. Akzeptable Werte "true" oder "false".

  • FTPAccount - Nummer des Kontos, dessen Statusdaten an FTP gesendet werden sollen.

  • FTPServer - Adresse des FTP-Servers.

  • FTPLogin - Anmeldung zur Autorisierung auf dem FTP-Server.

  • FTPPassword - Passwort für den Zugang zum FTP-Server.

  • FTPPath - Name des Verzeichnisses auf dem FTP-Server, in dem der Bericht gespeichert wird.

  • FTPPeriod - Periodizität der Übermittlung des Berichts an den FTP-Server in Minuten.

Fehlt einer der aufgeführten Parameter, werden die aktuellen Einstellungen des Client-Terminals verwendet(Registerkarte "Veröffentlichung" in der Tabelle der Terminaleinstellungen).

Beispiel:

  ftp-Einstellungen FTPEnable=true FTPPassiveMode=false FTPAccount=12345 FTPServer=ftp.company.com FTPLogin=admin FTPPassword=pAssWOrd123 FTPPath=/inetpub FTPPeriod=10

Einstellungen der Experten

  • ExpertsEnable - aktiviert/deaktiviert Experten.

  • ExpertsDllImport - aktiviert/deaktiviert den DLL-Import.

  • ExpertsDllConfirm - aktiviert/deaktiviert die manuelle Bestätigung von DLL-Funktionsaufrufen.

  • ExpertsExpImport - erlaubt/verbietet den Import von Funktionen aus externen Expert Advisors oder MQL4-Bibliotheken.

  • ExpertsTrades - EA-Handel aktivieren/deaktivieren.

  • ExpertsTradesConfirm - aktiviert/deaktiviert die manuelle Bestätigung von Handelsoperationen durch den Expert Advisor.

Hinweis: Alle Parameter einer Expert Advisor-Gruppe können nur die Werte "true" oder "false" annehmen.

Wenn einer der oben genannten Parameter nicht vorhanden ist, werden die aktuellen Einstellungen des Client-Terminals verwendet(Registerkarte "Expert Advisors" in der Tabelle der Terminaleinstellungen).

Beispiel:

  Experteneinstellungen ExpertsEnable=true ExpertsDllImport=true ExpertsExpImport=true ExpertsTrades=true ExpertsTradesConfirm=false

Einzelne Expert Advisor- und/oder Skripteinstellungen

  • Symbol - Name des Symbols, dessen Chart direkt nach dem Start des Terminals geöffnet werden muss. Nach dem Schließen des Client-Terminals werden die Informationen über diese zusätzliche Karte nicht gespeichert. Wenn das Terminal ohne eine Konfigurationsdatei neu gestartet wird, wird diese Tabelle nicht geöffnet. Fehlt dieser Parameter, wird kein zusätzliches Diagramm geöffnet.

  • Zeitraum - Zeitraum des Diagramms (M1, M5, M15, M30, H1, H4, D1, W1, MN). Fehlt dieser Parameter, wird H1 verwendet.

  • Vorlage - Name der Vorlagendatei (Verzeichnis \templates), die auf das Diagramm angewendet werden soll.

  • Expert - Name des Expert Advisors, der nach dem Start des Client-Terminals gestartet wird. Der Expert Advisor startet auf dem Chart, der entsprechend den Parametern Symbol und Periode geöffnet ist. Fehlt der Parameter Symbol, wird kein zusätzlicher Chart geöffnet und der EA wird mit dem ersten Chart im aktuellen Profil gestartet. Wenn im aktuellen Profil keine Charts vorhanden sind, wird der Expert Advisor nicht gestartet. Wenn dieser Parameter nicht vorhanden ist, wird kein Experte gestartet.

  • ExpertParameters - Name der Datei, die EA-Parameter enthält (Verzeichnis \experts\presets). Eine solche Datei kann im Eigenschaftsfenster des Expert Advisors durch Drücken der Schaltfläche "Eingabeparameter - Speichern" erstellt werden. Es wird normalerweise verwendet, um Parameter zu speichern, die von den Standardparametern abweichen. Fehlt dieser Parameter, werden die Standardparameter verwendet.

  • Skript - Name des Skripts, das nach dem Start des Client-Terminals gestartet wird. Das Skript wird nach denselben Regeln gestartet wie der Expert Advisor (siehe oben).

  • ScriptParameters - Name der Datei mit den Scriptparametern (Verzeichnis \experts\presets). Diese Datei wird auf die gleiche Weise wie für den Expert Advisor erstellt.

Beispiel:

  Symbol=EURUSD Period=H4 Template=popular.tpl Expert=MACD Sample ExpertParameters=macd.set Script=period_converter ScriptParameters=

Einstellungen für den Start des Strategy Testers

  • TestExpert - Name des Expert Advisors, der zum Testen gestartet werden soll. Fehlt dieser Parameter, wird keine Prüfung durchgeführt.

  • TestExpertParameters - Name der Datei, die die Parameter enthält (Verzeichnis \tester). Eine solche Datei kann im Eigenschaftsfenster des Expert Advisors durch Klicken auf die Schaltfläche "Eingabeparameter - Speichern" erstellt werden und wird in der Regel zum Speichern von Parametern verwendet, die von den Standardparametern abweichen. Andere Parameter des zu testenden EA auf den Registerkarten "Testen" und "Optimierung" (und auf der Registerkarte "Eingabeparameter", falls dieser Parameter nicht vorhanden ist) werden mit den Werten gefüllt, die nach dem letzten Test automatisch in der Datei \tester\[Name des Experten].ini gespeichert wurden.

  • TestSymbol - Name des Instruments, auf dessen Daten der Test des Expert Advisors durchgeführt werden soll. Wenn dieser Parameter nicht verfügbar ist, wird der zuletzt im Prüfgerät verwendete Wert verwendet.

  • TestPeriod - Diagrammperiode (M1, M5, M15, M30, H1, H4, D1, W1, MN). Fehlt dieser Parameter, wird H1 verwendet.

  • TestModel - 0, 1 oder 2 je nach Testmodell (Alle Ticks, Benchmarks, Offene Preise). Wenn dieser Parameter nicht verfügbar ist, wird der Wert 0 (Alle Ticks) verwendet.

  • TestOptimization - Aktivierung/Deaktivierung der Optimierung. Zulässige Werte sind "wahr" oder "falsch". Wenn dieser Parameter nicht verfügbar ist, wird der Wert "false" verwendet.

  • TestDateEnable - aktiviert/deaktiviert die Option "Daten verwenden". Zulässige Werte sind "wahr" oder "falsch". Wenn diese Option nicht verfügbar ist, wird "false" verwendet.

  • TestFromDate - Startdatum des Testbereichs als JJJJ.MM.TT. Fehlt dieser Parameter, wird "1970.01.01" verwendet.

  • TestToDate - Enddatum des Prüfbereichs in der Form JJJJ.MM.TT. Fehlt dieser Parameter, so ist es 1970.01.01.

  • TestReport - Name der Prüfberichtsdatei. Die Datei wird im Verzeichnis des Client-Terminals erstellt. Es kann ein relativer Pfad angegeben werden, zum Beispiel: tester\MovingAverageReport". Wenn im Dateinamen des Berichts keine Erweiterung angegeben ist, wird die Erweiterung ".htm" verwendet. Wenn dieser Parameter nicht angegeben wird, wird der Prüfbericht nicht erstellt.

  • TestReplaceReport - erlaubt/verbietet das wiederholte Schreiben der Berichtsdatei. Zulässige Werte sind "wahr" oder "falsch". Wenn "false" eingestellt ist und die Berichtsdatei mit diesem Namen bereits existiert, wird an den Namen der Berichtsdatei eine laufende Nummer in eckigen Klammern angehängt. Zum Beispiel "MovingAverageReport[1].htm". Fehlt dieser Parameter, wird "false" verwendet.

  • TestShutdownTerminal - aktiviert/deaktiviert das Herunterfahren des Terminals nach dem Test. Zulässige Werte sind "wahr" oder "falsch". Fehlt dieser Parameter, wird der Wert "false" verwendet. Wenn der Benutzer während der Prüfung die Schaltfläche "Stop" gedrückt hat, wird der Wert dieses Parameters auf "false" zurückgesetzt, da der Benutzer die Kontrolle übernommen hat.

Beispiel:

  TestExpert=Moving Average TestExpertParameters=ma0.set TestSymbol=EURUSD TestPeriod=H1 TestModel=2 TestOptimization=false TestDateEnable=true TestFromDate=1970.01.01 TestToDate=2006.06.06 TestReport=MovingAverageReport TestReplaceReport=false TestShutdownTerminal=true

 
AndEv:
Falls es jemand weiß, habe ich eine Frage: Ich benötige ein Skript in einer Schleife, das die Schaltfläche "Aktualisieren" einmal alle 0,5 Sekunden im aktuellen Diagramm "drückt" und die Indikatoren neu initialisiert. "Ich habe versucht, mit WindowRedraw() ein Skript mit Schleife zu erstellen. Ich habe versucht, mit WindowRedraw() und Sleep(500) ein Skript mit Schleifen zu erstellen, aber die Indikatoren werden nicht reinitialisiert.
Diese Bibliothek enthält verschiedene Funktionen zur Steuerung des MT4. Einschließlich Funktionen zum Aktualisieren des Charts für Expert Advisors und Indikatoren. Es gibt sogar eigenständige Funktionen. Ich habe das Skript einmal ausgeführt und das war's. Es wird entladen und die Charts werden weiterhin aktualisiert, bis Sie MT4 entladen.
 

Angepasst von

Armen63 18.02.2012 14:47 |

Hallo alle Hilfe bitte nicht wissen, wie es zu implementieren...kann jemand bitte beraten? xocu chtobi v sovetnike obshee chislo sell ili buy ordersov kontrolirovalos int Total1 = OrdersTotal();

if (Total1 <= MaxOrders || MaxOrders == 0) tak ya kontroliruyu v all tipi orders a nado po otdelnosti i dlya sell i dlya buy

 

zu Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

Hallo, liebe Forumsnutzer!

Ich habe gerade angefangen, mql4 zu lernen und beschlossen, meinen eigenen EA zu schreiben.

Wissen Sie, wie man die folgende Bedingung in den Code schreibt: Wenn die letzten drei Briefkurse höher sind als der vorherige (ask3>ask2>ask1), dann erteilen Sie einen Kaufauftrag

Ich hoffe, ich habe die Idee klar ausgedrückt), wenn etwas falsch ist, fragen Sie bitte, ich werde es präzisieren)

Ich werde für Ihre Hilfe sehr dankbar sein ))

 
wie diese.
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
Vielleicht liege ich falsch, ich lerne nur dazu.
 
openlive:
vielleicht liege ich ja falsch, ich lerne gerade


Wenn wir davon ausgehen, dass der EA jeden Tick verarbeitet, sollten wir die Dinge ein wenig anders angehen.

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}