Nützliche Funktionen von KimIV - Seite 20

 

GetTypeLastClosePos() Funktion.

Diese Funktion gibt den Typ der letzten geschlossenen Position oder -1 zurück. Eine genauere Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter definiert:

  • sy - Bezeichnung des Marktinstruments. Wenn Sie diesen Parameter angeben, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert "" bedeutet ein beliebiges Marktinstrument. NULL bedeutet das aktuelle Instrument.
  • mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает тип последней закрытой позиции или -1               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

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

GetTypeLastOpenPos() Funktion.

Diese Funktion gibt den Typ der letzten offenen Position oder -1 zurück. Eine genauere Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:

  • sy - Bezeichnung des Marktinstruments. Wenn Sie diesen Parameter setzen, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert "" bedeutet ein beliebiges Marktinstrument. NULL bedeutet das aktuelle Instrument.
  • mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает тип последней открытой позиции или -1               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastOpenPos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderOpenTime()) {
            t=OrderOpenTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}
ZS: Im Anhang finden Sie ein Skript zum Testen der Funktion GetTypeLastOpenPos().
Dateien:
 
KimIV:

OpenPosition() Funktion für online.

      if (err==128 || err==142 || err==143) {
        Sleep(1000*66.666);
        if (ExistPositions(sy, op, mn, ot)) {
          if (UseSound) PlaySound(NameFileSound); break;
        }
      

Was bedeuten die Fehlercodes 142 und 143.

Ich danke Ihnen.

 
zennon:

Was bedeuten die Fehlercodes 142 und 143?

142 - Der Auftrag wurde in die Warteschlange gestellt.

143 - Der Auftrag wurde vom Händler zur Ausführung angenommen.

Weitere Informationen finden Sie hier.

 

Der Arzt rät, sie als Fehler 128 zu behandeln.

wenn möglich, ein oder zwei Worte zu diesem Thema aus Ihrer Sicht oder Position...

 
kombat:

Der Arzt rät, sie als Fehler 128 zu behandeln.

Wenn möglich, ein oder zwei Worte zu diesem Thema aus Ihrer Sicht oder Position...

Mein Standpunkt wird in dem von Andrei zwei Posts weiter oben angegebenen Code zum Ausdruck gebracht.

 

Entschuldigung... hat es natürlich gesehen...

Das ist mir ein wenig unklar.

Sleep(1000*66.666);

Ansonsten weiß ich es nicht... schlafen...

Aber wenn und falls weiter, nicht so sehr.

d.h. schlafen, dann wenn es eine Position gibt, wenn wir einen Marsch spielen.

-

OK, wenn es eine lahmere Frage ist, tut es mir wieder leid, und kann unbeantwortet bleiben.

 
kombat писал (а):
OK, wenn es eine lahmere Frage ist, tut es mir wieder leid, und ich lasse es dabei bewenden.

Nee... Lassen Sie uns das klären... ...ein Showdown vertieft das Verständnis... Ich verstehe einfach nicht, was du nicht verstehst. Stellen Sie die Frage mit einfacheren und konventionelleren Begriffen. Sind Sie verwirrt von der Ruhephase? Warum genau 66 Sekunden?

 
KimIV:
Warum genau 66 Sekunden?

Nein, das nicht! Das ist keine Frage... Absolut!

Aber die weitere logisch-sequenzielle Handlung in diesem Fragment ist nicht so gut.

Sagen wir, wir bekommen einen Fehlercode, wir schlafen, dann bekommen wir einen Boolt, Spoin's Waltz spielt, wenn diese Funktion eingeschaltet ist...

-

(verdammt, es fehlen die Nachrichtenschwänze, ich muss sie wiederholen :(((

-

Viel mehr interessiert mich, wie man das Begonnene fortsetzen kann!

D.h. weitere Handelsgesten: entweder wird die Funktion tuckern

Entweder tuckert die Funktion, bis sie sich öffnet, oder sie gibt die Kontrolle an eine andere ab...

Im ersten Fall ist nicht klar, wie man "Schleife", "selbst" oder wie aufrufen?

 

Hmm ... Ich verstehe es immer noch nicht. Ich werde nach dem Zufallsprinzip schießen. Alle folgenden Punkte gelten für die Fehler 128, 142 und 143.

Wenn der Fehler 128 in keiner Weise behandelt wird, besteht die Gefahr, dass Sie zwei gleiche offene Positionen statt einer erhalten. In den zwei Jahren, in denen ich mit zwei echten Konten gehandelt habe, hatte ich nur einen solchen Fall. Doppelte Positionen entstehen, weil der Handelsserver aus irgendeinem Grund eine Nachricht über den Ablauf der Auftragsausführungszeit an das Terminal zurückgeschickt hat. Das Terminal wurde nicht abgelehnt. Der Handel kann noch ausgeführt werden. Ihre Ausführung hat sich lediglich um eine "unannehmbar" lange Zeit verzögert. Wenn Sie nach dieser Nachricht eine weitere Anfrage senden, können sowohl die verzögerte als auch die neue Anfrage ausgeführt werden. Um diese Situation zu vermeiden, raten die Entwickler, mindestens eine Minute lang zu pausieren und zu prüfen, ob die Anfrage, über die der Handelsserver die verzögerte Nachricht gesendet hat, ausgeführt wurde. Wenn JA, haben wir unser Ziel erreicht - die Stelle ist eröffnet, wenn NEIN, können wir die Anfrage wiederholen. So behandelt mein Code die Fehler 128, 142 und 143.