Beta-Version des Online-Buchs über MQL4-Programmierung - von Sergey Kovalev (SK.) - Seite 8

 
Climber:
Was ist hier los? Was schreit da so nach Fehlern?

Der Compiler gibt einen Fehler aus: Start function not found and cannot be run, was bedeutet: start() function not found and cannot be executed.

Das ist ganz natürlich. Wenn das Programm keine spezielle Funktion enthält, kann es nicht auf dem MT-Client-Terminal ausgeführt werden.

 
Hier ist ein Fehler Funktion "GetExtremumZZZBar" wird nicht referenziert und wird aus der exp-Datei entfernt (nun, es ist klar, die Funktion wird nirgends verwendet). Ich schrieb einen Kommentar in den Code, den ich hinzufügte, woraufhin die Fehler verschwanden.

//+------------------------------------------------------------------+
//|                                                         1111.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
}    // Добавил вот эту скобку, точнее переместил с конца, в результате 1 ошибка
int GetExtremumZZBar(string sym="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sym=="") sym=Symbol();
  double zz;
  int    i, k=iBars(sym, tf), ke=0;
 
  for (i=1; i<k; i++) {
    zz=iCustom(sym, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}   
//----
   
//+------------------------------------------------------------------+
Als ich diese Nachricht schrieb, schien ich mein Problem verstanden zu haben. Die Funktion sollte sich nicht im Körper der Startfunktion befinden. Nur der Aufruf dieser Funktion sollte im Body des Starts stehen. Oder?
 
Climber:
 
Während ich diesen Beitrag schreibe, glaube ich, mein Problem erkannt zu haben. Die Funktion sollte sich nicht im Körper der Startfunktion befinden. Nur der Aufruf dieser Funktion sollte im Body des Starts stehen. Richtig?

Ja
 
Climber:
Während ich diesen Beitrag schreibe, denke ich, dass ich mein Problem herausgefunden habe. Die Funktion sollte nicht im Körper der Startfunktion sein. Nur der Aufruf dieser Funktion sollte im Body des Starts stehen. Richtig?

Richtig. Keine Funktion kann im Körper einer anderen Funktion beschrieben werden.
 
Climber:
Während ich diesen Beitrag schreibe, denke ich, dass ich mein Problem herausgefunden habe. Die Funktion sollte nicht im Körper der Startfunktion sein. Nur der Aufruf dieser Funktion sollte im Body des Starts stehen. Oder?
Ja, sehen Sie hier nach: MQL4 Tutorial MQL4 Programmstruktur .
 
Eine neue Frage ist aufgetaucht))
Ist es für einen Multiwährungs-EA notwendig, die Charts aller verwendeten Symbole zu öffnen?
Wenn ein Tick für das Symbol kommt, an dessen Chart der EA angehängt ist, werden die gleichen Handelskriterien für andere Symbole geprüft. In diesem Fall möchte ich die Mehrfachwährung verwenden, um die Anzahl der während des Tages geöffneten Orders zu erhöhen. Wir werden nicht viele Orders öffnen, weil wir mit stündlichen Charts arbeiten, wir haben manuell nicht mehr als zwei Orders von einem Symbol pro Tag erhalten.

Und meine nächste beängstigende Aufgabe ist das Schreiben eines Blocks von Aufträgen, die für den Multicurrency Expert Advisor verbucht werden. Aber ich bin froh, dass Pending Orders in meinem Expert Advisor nicht verwendet werden (zumindest wird dadurch der Buchungsblock reduziert). Können Sie mir empfehlen, etwas zu diesem Thema zu lesen, das sich auf die Buchhaltung mit mehreren Währungen bezieht?
 
Climber:
Ich habe eine neue Frage))
Ist es für einen EA mit mehreren Währungen zwingend erforderlich, die Charts für alle verwendeten Symbole zu öffnen?

Nein. Aber alle verwendeten Symbole sind im Fenster Market Watch d.b..

 

Können Sie mir sagen, wie ich eine EA beenden kann? Ich möchte, dass es aufhört zu funktionieren, wenn ein Stop Loss ausgelöst wird. Wenn mir jemand einen Tipp geben kann, schreiben Sie bitte an mininp@list.ru. Vielen Dank im Voraus!

 
Mister_X:

Können Sie mir sagen, wie ich eine EA beenden kann? Ich möchte, dass es aufhört zu funktionieren, wenn ein Stop Loss ausgelöst wird. Wenn mir jemand einen Tipp geben kann, schreiben Sie bitte an mininp@list.ru. Vielen Dank im Voraus!


Vielleicht ist es einfacher, nicht anzuhalten, sondern nur zu prüfen, ob es einen Stoppbefehl gibt, und wenn ja, nichts zu tun.
 
Ich habe einen großartigen Artikel über komplexe Auftragsbuchungen bei SK'Aufträge in einem großen Programm buchen' gefunden.
Ich arbeite derzeit manuell an meinem Demokonto. An diesem letzten System arbeite ich nun seit etwa einem Monat manuell.

Ich habe mit einem 1.000stel einer Einzahlung und einem 1:100stel eines Hebels begonnen. Die Mindestlosgröße beträgt immer $100. Ich arbeite mit 3-4 Währungspaaren. In den ersten zwei Wochen habe ich es geschafft, meine Einlage um das 2fache zu erhöhen, d.h. meine Einlage ist =$2.000 geworden. Jetzt sind es etwa 3000.

Während dieser Zeit betrug der maximale Gewinn 118 Punkte mit einem Instrument (natürlich mit einem Auftrag). Im Durchschnitt schließe ich Aufträge mit einem Gewinn von 40-50 Punkten. Für einen solchen Auftrag wird ein Auftragspaar mit Stopps geschlossen, wobei der Gesamtverlust bei 10 Punkten liegt. 100 Punkte pro Tag insgesamt durch mehrere Instrumente. Und das ist nicht weniger als eine 2-fache Erhöhung der Einlagen in einem Monat. Und wenn man die Reinvestitionen mit einrechnet, dann wird die Einlage nach 10 Monaten 1 Million 24 Tausend US-Dollar betragen.

Alles wäre gut, wir sollten uns freuen, aber es gibt eine begründete Frage: Welche Maklerfirma gibt so dreist in 10 Monaten mit 1000 Dollar???? populär werden.

Ich versuche, einen Expert Advisor zu schreiben, ich sollte selbst handeln.

Ich muss ehrlich sagen, dass ich über diese ganze Veranstaltung nachdenke: Ist das nicht ein Betrug?