Nützliche Funktionen von KimIV - Seite 45

 

Ein Beispiel für die Verwendung der Funktion GetPriceDiffInPoint().

Angenommen, wir müssen den Wert in Pips und die Richtung der Kursbewegung zwischen dem zweiten und dem ersten Balken des aktuellen Charts berechnen. Angenommen, das aktuelle Diagramm ist EURUSD H1. Aufruf der Funktion GetPriceDiffInPoint() mit Standardparametern:

Message(GetPriceDiffInPoint());

Hier ist das Ergebnis:


Die Funktion GetPriceDiffInPoint() hat -23 Punkte zurückgegeben. Analysieren wir, wie es zustande gekommen ist. Ziehen wir zu diesem Zweck vertikale Linien durch die Stundenbalken 2, 1 und 0:


Wechseln wir zu einem kleineren Zeitrahmen, z. B. M5, und markieren wir das Intervall der Balken 2 und 1 mit einem einzelnen Rechteck:

Jetzt können wir deutlich sehen, dass der erste im hervorgehobenen Intervall zwei gleiche Höchststände von 1,4283 waren, und erst danach, in der Mitte der zweiten Stunde, der Tiefststand von 1,4260. Daraus können wir schließen, dass EURUSD in den letzten zwei Stunden gesunken ist und der Wert dieses Rückgangs (1,4283 - 1,4260) / 0,0001 = 23 Pips betrug .


P.S. Im Anhang finden Sie das Skript zum Testen der Funktion GetPriceDiffInPoint().

 

Tolle Auswahl, gibt es nicht eine Funktion, um eine Order (Kauf oder Verkauf) beim ersten erfolgreichen Schließen eines Balkens auf einem beliebigen TF zu schließen...

 

Darf ich fragen, welche Kontrollen durchgeführt werden, bevor eine Bestellung eröffnet wird?

Wenn sie in einer separaten Funktion gesammelt werden, geben Sie mir bitte einen Link. Wenn nicht, kann eine Liste angegeben werden.

 
SK. писал (а) >>
Darf ich fragen, welche Kontrollen durchgeführt werden, bevor eine Bestellung eröffnet wird?

Sergej, ich weiß nicht, ob Ihre Frage an mich gerichtet ist oder nicht?

 
KimIV писал (а) >>

...

Die Funktionen zum Öffnen, Schließen und Ändern bei der Fehlerbehandlung verwenden den Befehl Sleep. Ich habe einige Nachforschungen angestellt und empfehle, es durch eines dieser Geräte zu ersetzen. Der Punkt ist, dass der Wert der Verzögerung eine Empfehlung ist und nicht genau diesem Wert entsprechen muss. In vielen Fällen können Sie mit einem Auftrag sofort (ohne Verzögerung) Aktionen durchführen. Aber wenn Sie ein Angebot haben, dann gefällt mir nicht, dass BC berechnen kann, wann und welche Art von Operation ich durchführen werde.

int start()
  {
//----
   Sleep_RND(20000);  
//----
   return(0);
  }
//+------------------------------------------------------------------+
void Sleep_RND(int _Pausa)
  {
   MathSrand(TimeLocal());
   MathRand();
   Sleep(MathRound(_Pausa*MathRand()/32767+_Pausa/5));
   return;
  }
 
KimIV писал (а) >>

Sergej, ich weiß nicht, ob Ihre Frage an mich gerichtet ist oder nicht.

Ja, Igor, das ist eine Frage an Sie.

Der Punkt ist folgender. Ich habe mir die Öffnungsfunktion angesehen, dort gibt es keine Kontrollen. Offensichtlich sind sie auf eine andere Funktion konzentriert. Wenn Sie eine solche Funktion haben, geben Sie mir bitte den Link. Wenn Sie eine solche Funktion nicht sehen, können Sie hier eine Liste von Prüfungen schreiben. Sie können es langsam tun.

 

Nein, Sergei, ich mache keine Kontrollen mehr. Oder besser gesagt, ich tue es, aber ich füge sie nicht in separate Funktionen ein. Das heißt, ich habe einige von ihnen... Herrje, ich gebe Ihnen ein Beispiel:

extern int StopLoss=30;
extern int TakeProfit=50;

double ll=GetSizeLot();
double po, pp, sl, tp;
if (ExistPositions(NULL, OP_BUY, Magic)) {
  po=PriceOpenLastPos(NULL, OP_BUY, Magic);
  if (!ExistOrders   (NULL, OP_SELLSTOP, Magic+1)
  &&  !ExistPositions(NULL, OP_SELL    , Magic+1)) {
    pp=po-offSet*Point;
    if (StopLoss>0) sl=pp+StopLoss*Point; else sl=0;
    if (TakeProfit>0) tp=pp-TakeProfit*Point; else tp=0;
    SetOrder(NULL, OP_SELLSTOP, ll, pp, sl, tp, Magic+3);
  }
}

Was sehen wir hier?

1. Wir berechnen die zu handelnde Partie.

2. Wenn es eine Kaufposition mit einer bestimmten magischen Zahl gibt, wird ihr offener Preis als po definiert.

Wenn es keine SellStop-Order gibt und die Verkaufsposition eine Magik hat, die um eine Einheit größer ist als die angegebene, setzen wir die SellStop-Order zum Preis, der um offSet-Punkte niedriger ist als der Eröffnungskurs der Kaufposition.

4. In dem Intervall führen wir die Berechnung der Preisniveaus sl und tp durch.

 
KimIV писал (а) >>

4. Dazwischen sind die Preisniveaus sl und tp zu berechnen.

Das ist es, was ich meine. Wir müssen die bestehenden Sachzwänge berücksichtigen, die sich im Allgemeinen ständig ändern.

Gibt es eine Funktion, die alle möglichen Beschränkungen analysiert?

Dasselbe gilt für Änderungen.

--

(Ich habe 16 Funktionen - 3 für jede gute Order (OP,SL,TP) und 2 für jede Marktorder (SL,TP),

und dann einige weitere Analysekombinationen von Berechtigungen).

 
SK. писал (а) >>
Gibt es eine Funktion, die alle Arten von Einschränkungen analysiert?
Noch nicht... irgendwie musste ich das nicht. Aber dank Ihnen habe ich darüber nachgedacht und das Gefühl, dass ich es tun sollte! >> Vielen Dank!
 

GetTypePrice() Funktion

Gibt den Namen des Preistyps zurück. Die Funktion akzeptiert nur einen optionalen Parameter. Gültige Werte: PRICE_CLOSE, PRICE_OPEN, PRICE_HIGH, PRICE_LOW, PRICE_MEDIAN, PRICE_TYPICAL, PRICE_WEIGHTED. Der Standardwert ist 0 - PRICE_CLOSE.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование типа цены.                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    Applied_Price - тип цены                                                |
//+----------------------------------------------------------------------------+
string GetTypePrice(int Applied_Price=0) {
  switch (Applied_Price) {
    case PRICE_CLOSE   : return("Close");
    case PRICE_OPEN    : return("Open");
    case PRICE_HIGH    : return("High");
    case PRICE_LOW     : return("Low");
    case PRICE_MEDIAN  : return("Median");
    case PRICE_TYPICAL : return("Typical");
    case PRICE_WEIGHTED: return("Weighted");
    default            : return("Unknown Type Price");
  }
}
Diese Funktion ist nützlich, um die Arbeit von Indikatoren, Skripten und Expert Advisors zu kommentieren oder zu protokollieren, insbesondere, um Erklärungen zu den Werten der Preiskonstanten anzuzeigen.