Nützliche Funktionen von KimIV - Seite 23

 

Die Funktion NumberOfBarCloseLastPos().

Diese Funktion gibt die Taktschlussnummer der letzten Position oder -1 zurück. Die Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:

  • sy - Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen dieses Instruments. Der Standardwert - NULL - bedeutet das aktuelle Marktinstrument.
  • tf - Zeitrahmen. Der Standardwert 0 bedeutet den aktuellen Zeitrahmen.
  • op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
  • mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
ZS: Im Anhang finden Sie ein Skript zum Testen der Funktion NumberOfBarCloseLastPos().
 
 
 
KimIV:

DeleteOrders() Funktion. Tester-Version.

Die Funktion DeleteOrders() dient dazu, ausstehende Aufträge BuyLimit, BuyStop, SellLimit und SellStop zu löschen. op - Art der Handelsoperation, Art des schwebenden Auftrags. Einer von fünf Werten ist möglich: -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT oder OP_SELLSTOP. Der Standardwert von -1 bedeutet eine beliebige Reihenfolge.
mn
- MagicNumber, Identifikationsnummer des schwebenden Auftrags. Der Standardwert -1 bedeutet eine beliebige magische Zahl.

Hallo. Auf Seite 10 wurde diese Funktion als angewandt eingestellt.

Ich habe es in meinem Expert Advisor angewendet, um die ausstehenden Aufträge zu löschen. Oder besser gesagt, ich wollte es benutzen. Ich habe die Funktion außerhalb des Abschnitts int start platziert

Ich habe es eingefügt.

if (isCloseLastPosByTake(NULL,OP_BUY, My order Buy ))   {
              DeleteOrders(NULL, -1,  My order Sell);   }

Aber beim Kompilieren erhalte ich einen Fehler

'clDelete' - Variable nicht definiert C:\Programmdateien\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)

Wie kann ich diesen Fehler beheben?

Und wenn ich die Funktion ClosePositions() verwende -Positionen zum Marktpreis schließen, ist alles in Ordnung - keine Fehler!

/ Auch wenn ich nur die Funktion DeleteOrders einfüge und sie noch nicht anwende, wird dieser Fehler kompiliert!

 
Rita писал (а):
Beim Kompilieren wird jedoch ein Fehler angezeigt
'clDelete' - Variable nicht definiert C:\Programmdateien\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)
Wie kann ich diesen Fehler beheben? Was ist dieses "clDelete"?

Dort, auf Seite 10 im Anhang, befindet sich die Datei test_DeleteOrders.mq4

Laden Sie es herunter und suchen Sie darin nach Verweisen auf clDelete.

 

Heruntergeladen, angeschaut! Und? Es stellte sich heraus, dass ich nur die Farbe des Schließsymbols einstellen musste!

Aber jetzt ist wieder nicht alles in Ordnung. Jetzt ist der Fehler verschwunden. Aber ein weiterer Fehler ist aufgetreten - bei der Funktion ClosePositions() -, den wir bisher noch nicht gesehen haben.

if (L_2Sell==true)                 {  
        ClosePositions(NULL, -1,Magic);
                                      }

ClosePosBySelect' - Funktion ist nicht definiert C:\Programme\MetaTrader - Alpari\experts\0005.mq4 (905, 47)
Und es ist kein Skript in der Nähe (S. 14), um zu überprüfen

Können Sie mir sagen, wie ich diesen Fehler beheben kann?

 
Rita писал (а):
ClosePosBySelect' - Funktion ist nicht definiert C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)

Dieser Fehler bedeutet, dass ClosePosBySelect() nicht definiert ist.

Rita schrieb (a):
Können Sie mir sagen, wie ich diesen Fehler beheben kann?
Suchen Sie den Code der ClosePosBySelect()-Funktion und fügen Sie ihn in die Datei Ihres EAs ein. Siehe Seite 13.
 

Entschuldigen Sie die erneute Störung! Ich habe die von Ihnen angegebene Funktion ClosePositions() neben ClosePosBySelect() gesetzt, und nach der Kompilierung erschienen sechs Fehler! Ich bin wütend!

Ich habe selbst mit vier von ihnen zu tun gehabt. Schlupf, Farbe, Anzahl der Nahversuche....Es bleiben zwei Fehler, -

Tondateien -

'UseSound' - Variable nicht definiert C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 13)

NameFileSound' - Variable nicht definiert C:³ Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 33)

Woher soll ich es nehmen? Wo soll ich sie unterbringen?

Well extern bool UseSound = false;/Ausschalten

Ich werde es in EXPERT'S PROPERTIES eintragen, aber was ist NameFileSound' und woher nehme ich es?

**************************************************************************

Ich habe es gefunden und in die globale Datenbank aufgenommen.

extern bool UseSound = false;//выключатель звука
extern string NameFileSound="alert.wav";

Und statt eines Fehlers meldete der Compiler dann 4 weitere:

'GetNameOP' - Funktion ist nicht definiert

ErrorDescription" - Funktion ist nicht definiert

else" - unerwartetes Token

'GetNameOP' - Funktion ist nicht definiert

Diese Fehler scheinen immer wieder aufzutreten. Um einen ClosePositions()-Befehl zu verwenden, musste ich zunächst einen weiteren erstellen - ClosePosBySelect(). Und das andere wiederum erfordert einige Geräusche - Glocken und Pfeifen. Und wenn ich mich abmühe, diese völlig unnötigen Glocken und Glöckchen zu finden, erhalte ich alle möglichen seltsamen Fehler - "else" - unerwartete Token und andere Fehler. Ich habe noch nicht einmal angefangen, diese Funktion zu nutzen. Ich habe es nur unter anderen eingestellt!

Können Sie mir sagen, wie ich diese Fehler beheben kann? Ich habe alle diese GetNameOP auskommentiert. Die Fehler scheinen verschwunden zu sein. Aber wird die Funktion auch ohne sie gut funktionieren?

 
Rita писал (а):
Und hier warf der Compiler statt eines Fehlers 4 weitere aus:
'GetNameOP' - Funktion ist nicht definiert

Auf der ersten Seite im Anhang testrSetOrder.mq4

Rita schrieb:
ErrorDescription' - Funktion ist nicht definiert

Fügen Sie in den Code Ihres EA die folgende Zeile ein

#include <stdlib.mqh>.

Rita schrieb:
'else' - unerwartetes Token
Wenn Sie wie oben beschrieben vorgehen, wird der Fehler von selbst verschwinden.
 

Die Funktion NumberOfBarOpenLastPos().

Diese Funktion gibt die Taktnummer der zuletzt geöffneten Position oder -1 zurück. Die Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:

  • sy - Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert - NULL - bedeutet das aktuelle Marktinstrument.
  • tf - Zeitrahmen. Der Standardwert - 0 - bedeutet den aktuellen Zeitrahmen.
  • op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
  • mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
Im Anhang finden Sie ein Skript zum Testen der Funktion NumberOfBarOpenLastPos().
Grund der Beschwerde: