Nützliche Funktionen von KimIV - Seite 24

 

Die Funktion NumberOfLossPosToday().

Diese Funktion gibt die Anzahl der heute geschlossenen Verlustpositionen zurück. Die Auswahl der zu berücksichtigenden Positionen erfolgt über externe Parameter:

  • sy - Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen dieses Instruments. Der Standardwert "" bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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                                                     |
//|  Описание : Возвращает количество убыточных позиций, закрытых сегодня.     |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfLossPosToday(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              t=OrderCloseTime();
              if (Year()==TimeYear(t) && DayOfYear()==TimeDayOfYear(t)) {
                if (OrderProfit()<0) kp++;
              }
            }
          }
        }
      }
    }
  }
  return(kp);
}
P.S. Im Anhang finden Sie ein Skript zum Testen der Funktion NumberOfLossPosToday().
 

Die Funktion PriceCloseLastPos().

Diese Funktion gibt den Schlusskurs der letzten geschlossenen Position 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 "" bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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                                                     |
//|  Описание : Возвращает цену закрытия последней закрытой позиций.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceCloseLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   r=0;
  int      i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                r=OrderClosePrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
HH: Im Anhang finden Sie ein Skript zum Testen der Funktion PriceCloseLastPos().
Dateien:
 
Liebe KimIV Es wäre schön, wenn Sie am Ende Ihres Threads eine Bibliothek mit allen Ihren Funktionen veröffentlichen könnten.
 

Ich unterstütze das. Sie können es auch so machen. Nicht die ganze Bibliothek. Aber mehrere Bibliotheken, und zwar nicht am Ende, sondern wenn sich die ¹Bibliothekenª zu einem bestimmten Thema ansammeln.

Zum Beispiel eine separate Bibliothek für Eröffnungen/Schließungen (Eröffnungen f-i nur plus Eröffnungen durch Market Watch und Schließungen)

Die nächste Bibliothek - mit F.I.'s, die das Vorhandensein von Positionen nach diesen oder jenen Attributen zurückgeben.

Und so weiter.

Es ist nur notwendig, hier die Vorschläge der Anwesenden über die Gesamtheit der Bibliotheken zu sammeln.

 

Die Funktion PriceOpenLastPos().

Diese Funktion gibt den Eröffnungskurs der letzten offenen Position 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 - "" - bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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                                                     |
//|  Описание : Возвращает цену открытия последней открытой позиций.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   r=0;
  int      i, k=OrdersTotal();

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

Die Funktion PriceOpenLastClosePos().

Diese Funktion gibt den Eröffnungskurs der zuletzt geschlossenen Position 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 - "" - bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 03.06.2008                                                     |
//|  Описание : Возвращает цену открытия последней закрытой позиций.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenLastClosePos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   r=0;
  int      i, k=OrdersHistoryTotal();

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

Ich unterstütze das. Sie können es auch so machen. Nicht die ganze Bibliothek. Aber mehrere Bibliotheken, und zwar nicht am Ende, sondern wenn sich die ¹Bibliothekenª zu einem bestimmten Thema ansammeln.

Zum Beispiel eine separate Bibliothek für Eröffnungen/Schließungen (Eröffnungen f-i nur plus Eröffnungen durch Market Watch und Schließungen)

Die nächste Bibliothek - mit F.I.'s, die das Vorhandensein von Positionen durch diese oder jene Attribute zurückgeben.

Und so weiter.

Ich möchte einige Vorschläge zum Erwerb von Bibliotheken machen.

Guten Tag.

Liebe KimIV.

Sie tun etwas sehr Nützliches für unerfahrene Fachautoren.

Ich schließe mich dem vorherigen Petenten an.

Wenn es nicht schwierig ist, können Sie die wichtigsten Funktionen in einer "Expertenvorlage " zusammenfassen.

-Vorläufige Kontrollen

-Eröffnung einer Stelle

-Bestellung aufgeben

-eine Position schließen

-Entfernen von Aufträgen

-Unterstützung (Änderung) von Aufträgen und Positionen.

Und jeder wird selbst einen Block mit Aufrufen zu diesen Funktionen schreiben.

Ich kann einen EA nicht von Grund auf selbst schreiben.

Deshalb habe ich damit begonnen, den Code von jemand anderem zu ändern.

Ich habe begonnen, Ihre Funktionen in Blöcken hinzuzufügen - was dabei herauskommt, ist chaotisch.

Nach einigen Tagen der Korrekturen und Ergänzungen funktionierte der Test-Expert Advisor, allerdings nur sehr schlecht.

Deshalb habe ich diese Anfrage gestellt, um eine einfache Expert Advisor-Vorlage zu erstellen.


Die Vorlage von Roche ist für mich etwas schwer zu verstehen und am Anfang redundant - aus dem Artikel von MetaEditor: Building on the power of templates.

 

Die Funktion PriceOpenNearPos().

Diese Funktion liefert den Eröffnungskurs der nächstgelegenen Position. Der Mindestabstand in Pips zwischen dem Eröffnungskurs einer Position und dem aktuellen Marktpreis dient als Kriterium für die "Geschlossenheit" einer Position. 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 "" bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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 steht für einen beliebigen Bezeichner.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 04.06.2008                                                     |
//|  Описание : Возвращает цену открытия ближайшей позиции.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenNearPos(string sy="", int op=-1, int mn=-1) {
  double mi, oop=0, p;
  int    i, k=OrdersTotal(), pp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
            if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(oop);
}

SZY: Im Anhang finden Sie ein Skript zum Testen der Funktion PriceOpenNearPos().

Falls es jemanden interessiert, kann er DistMarketAndPos() und PriceOpenNearPos() selbst vergleichen. Beachten Sie die Unterschiede.

Dateien:
 

Die Funktion TicketNearPos().

Diese Funktion liefert das Ticket der Position, die dem Markt am nächsten ist. Der Mindestabstand in Punkten zwischen dem Eröffnungskurs und dem aktuellen Marktpreis wird als Kriterium für die "Geschlossenheit" einer Position verwendet. 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 "" bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 05.06.2008                                                     |
//|  Описание : Возвращает тикет ближайшей к рынку позиции по цене открытия.   |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int TicketNearPos(string sy="", int op=-1, int mn=-1) {
  double mi, p;
  int    i, k=OrdersTotal(), pp=0, ti=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
            if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              ti=OrderTicket();
            }
          }
        }
      }
    }
  }
  return(ti);
}
ZS: Im Anhang finden Sie ein Skript zum Testen der Funktion TicketNearPos().
Dateien:
 

TypeNearPos() Funktion.

Diese Funktion gibt den Typ(0-Buy, 1-Sell) der Position zurück, die dem Markt zum Eröffnungskurs am nächsten ist, oder -1. Der Mindestabstand in Pips zwischen dem Eröffnungskurs einer Position und dem aktuellen Marktpreis dient als Kriterium für die "Geschlossenheit" einer Position. 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 "" bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
  • 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                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.06.2008                                                     |
//|  Описание : Возвращает тип ближайшей к рынку позиции или -1.               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int TypeNearPos(string sy="", int op=-1, int mn=-1) {
  double mi, p;
  int    i, k=OrdersTotal(), pp=0, ty=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
            if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              ty=OrderType();
            }
          }
        }
      }
    }
  }
  return(ty);
}
ZS: Im Anhang finden Sie ein Skript zum Testen der Funktion TypeNearPos().
Dateien:
Grund der Beschwerde: