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

 

Ich würde mich auch fragen, warum der Text Funktionen ohne Klammern verwendet OrderType() OrderOpenPrice()

 
Climber:
// Критерии закрытия ордеров

if
(_OrdersTotal == 1) //Выполнять следующее если открыт 1 ордер
{
OrderSelect(0, SELECT_BY_POS);
Tip = OrderType;
OPrice = OrderOpenPrice;

if (Tip = 0) // Расчитать цену закрытия в зависимости от типа ордера (В=0,S=1)
{
Cprice = OPrice + (TakeProfit*Point) + Spread;
if (Bid >= Cprice)
{
Cls_B = True;
}
}
if (Tip = 1)                 
{
Cprice = OPrice - (TakeProfit*Point) - Spread;
if (Ask <= Cprice)
{
Cls_S = True;
}
}
In Ihrem Code ist nicht das Fehlen der Klammern der Fehler, sondern andere Fehler, wie das Fehlen eines weiteren Gleichheitszeichens in der Bedingung (rot markiert)
 
Hat nicht geholfen ==. In den Fehlern wird immer noch die gleiche Klammer geschrieben. Kann das Abschlusskriterium nicht in den Code geschrieben werden, wenn der Take Profit gesetzt ist? Oder es kann nicht funktionieren, zum Beispiel, wenn der Preis plötzlich nahe am TP ist und sich plötzlich in einem Tick um mehrere Punkte ändert und den TP überspringt?
 
Climber:
Oder könnte es scheitern, zum Beispiel, wenn der Kurs sich plötzlich dem TP nähert und sich plötzlich um mehrere Pips in einem Tick verändert und den TP überspringt?


Dies ist theoretisch möglich. Das heißt, der Auftrag wird trotzdem geschlossen, aber möglicherweise nicht zum TP-Preis, sondern zum ersten Preis, der erscheint.
Vielleicht interessiert Sie das MQL4-Tutorial - Handelsoperationen - Auftragsparameter und Handelsoperationsregeln. Es geht um ein ähnliches Beispiel mit Schlupf.

 
Ein weiteres originelles Merkmal in der Phase des Lernens Programmierung - die ganze Zeit, um ein Komma zu setzen Ich drücke den Buchstaben b, wo es ein Komma in der englischen Layout))). Es stellt sich heraus, dass Sie auf Russisch schreiben, aber wenn Sie ein Komma setzen, vergessen Sie, dass das russische Layout.
 
Climber:
Ein weiteres originelles Merkmal in der Phase des Lernens Programmierung - die ganze Zeit, um ein Komma zu setzen Ich drücke den Buchstaben b, wo es ein Komma in der englischen Layout))). Es stellt sich heraus, dass Sie auf Russisch schreiben, aber wenn Sie ein Komma setzen, vergessen Sie, dass das russische Layout.

Das ist der Grund, warum viele Leute Software auf Englisch schreiben, ohne Russisch zu verwenden, es ist schneller und einfacher, das Layout ändert sich nicht so oft, und dann wird das Programm für jemand anderen auf Russisch angepasst, wenn Kommentare erforderlich sind, gerade in dieser Zeit der Arbeit ist es am bequemsten zu russifizieren, aus irgendeinem Grund:) Das englische Layout ist die Grundlage für Leute, die sich mit solchen Texten beschäftigen, das Russische wird nur in sehr geringem Umfang verwendet, wenn man die prozentuale Verwendung des englischen Layouts schätzt, sind es 99 % der Zeit. Früher wollte ich Programme auf Russisch schreiben, aber nachdem ich Spaß mit 1C hatte, ist dieser Wunsch verflogen.
 
Rosh:
Das Problem ist erkannt, wir werden es beheben.

Jetzt kann ich die Zeichnungen unter https://book.mql4.com/ru/metaeditor/compose einsehen.
 

Ich frage mich, wie Sie es geschafft haben, dass meine Nachrichten verschwunden sind. Das ist keine faire Diskussion, Leute. Wenn Sie nichts zu sagen haben, sagen Sie es. Ich verstehe das.

 

Ich hoffe nur, dass diejenigen, denen ich geschrieben habe, gelesen und geantwortet haben

 
Ich habe die Funktionen, die ich brauche, im Forum gefunden. Der eine gibt die Taktnummer des ZigZag-Extremums durch seine Taktnummer zurück und der zweite gibt das ZigZag-Extremum durch seine Taktnummer zurück. Die erste hilft mir festzustellen, ob ein neuer Extremwert des ZigZag entstanden ist (wenn die Taktnummer des Null-ZigZag = 0 ist), und von dort aus weitere Kriterien zu prüfen. Die zweite wird ebenfalls nützlich sein. Aber für die zweite ist es noch zu früh. Ich würde gerne den ersten Fall übernehmen.

Ich habe diese Funktion im Editor implementiert und einen Indikator erstellt. Ich habe weder etwas hinzugefügt noch etwas abgezogen. Aber während der Kompilierung bekam ich so viele Fehler. Sie sind furchtbar. Dann habe ich versucht, einen Expert Advisor nur mit dieser Funktion zu erstellen. Ich habe das gleiche Ergebnis.((
//+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
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);
}
Was ist hier falsch? Warum schreit es nach Fehlern?
Grund der Beschwerde: