Nützliche Funktionen von KimIV - Seite 59

 
Aktualisierte Liste der Funktionen
Dateien:
f_kimiv_1.rar  12 kb
 

Igor, könnten Sie mir bitte sagen, ob es eine Funktion gibt, die den Mindestwert in Pips bestimmt, um eine Pending Order zu platzieren?

Ich danke Ihnen!

 
mozg писал(а) >>
Igor, könnten Sie mir bitte sagen, ob es eine Funktion gibt, die den Mindestwert in Pips definiert, um eine Pending Order zu platzieren?
MarketInfo(Symbol(), MODE_STOPLEVEL);
 

Hallo Igor, könntest du eine Funktion schreiben, die den EA davon abhält, das Signal erneut abzuspielen? Das bedeutet, dass der Status nach Hinzufügen dieses Codeblocks wie folgt aussehen sollte: buy, sell, buy, sell, buy, sell.... usw...

 
Shniperson писал(а) >>

Hallo Igor, könntest du bitte eine Funktion schreiben, die den EA davon abhält, das Signal erneut auszulösen? ... Das heißt, der Status sollte nach Hinzufügen dieses Codeblocks wie folgt aussehen... kaufen,verkaufen,kaufen,verkaufen,kaufen,verkaufen.... usw...

schaukelt...

//+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions() {
  double sl=0, tp=0;
  int    bs= GetTradeSignal();

  if ( bs>0) {
    if ( ExistPositions(NULL, OP_SELL, Magic)) ClosePositions(NULL, OP_SELL, Magic);
    if (! ExistPositions(NULL, OP_BUY, Magic)) {
      if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_BUY, Lots, sl, tp, Magic);
    }
  }
  if ( bs<0) {
    if ( ExistPositions(NULL, OP_BUY, Magic)) ClosePositions(NULL, OP_BUY, Magic);
    if (! ExistPositions(NULL, OP_SELL, Magic)) {
      if ( StopLoss  >0) sl=Bid+ StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Bid- TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_SELL, Lots, sl, tp, Magic);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal() {
  int bs=0;

  if ( условия для покупки) bs=1;
  if ( условия для продажи) bs=-1;

  return( bs);
}

ExistPositions()

ClosePositions()

 

Die Funktion NormalizePrice().

Diese Funktion gibt den normalisierten Preiswert zurück. Die Normalisierung wird anhand der Werte der Funktion MarketInfo(MODE_TICKSIZE || MODE_DIGITS) durchgeführt. Die Funktion NormalizePrice() benötigt die folgenden Parameter:

  • np - Normalisierter Wert der Partie. Erforderlicher Parameter.
  • sy - Bezeichnung des Handelsinstruments. NULL oder "" - aktuelles Symbol. Standardwert - "".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
  if ( sy=="" || sy=="0") sy=Symbol();
  double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
  int    di=MarketInfo(Symbol(), MODE_DIGITS);

  if ( ts>0) pp=NormalizeDouble( np/ ts, 0)* ts;
  else {
    if ( di>0) pp=NormalizeDouble( np* di, 0)/ di; else pp= np;
  }
  return( pp);
}

SZZ: Im Anhang finden Sie ein Skript zum Testen der Funktion NormalizePrice().

Dateien:
 

(Frage eines Neulings).

Der geschätzte KimIV hat eine Funktion geschrieben:

GetExtremumZZPrice().


double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Welche Art von Code sollte verwendet werden, um die Preise des letzten Minimums und Maximums in 2 Variablen zu speichern? ( mein Verstand ist kaputt ;((())
 
WroC писал(а) >>
Welche Art von Code sollte verwendet werden, um die Preise des letzten Minimums und Maximums in 2 Variablen zu speichern?
void start() {
  double p1= GetExtremumZZPrice("", 0, 0);
  double p2= GetExtremumZZPrice("", 0, 1);

  if ( p1> p2) Comment("Последний максимум ", p1, "\n Последний минимум ", p2);
  else Comment("Последний максимум ", p2, "\n Последний минимум ", p1);
}
 

KimIV

Ich danke Ihnen!

 
Igor, hallo!
Soweit ich in der Lage bin, habe ich versucht, das von Ihnen vorgelegte Material zu verstehen. Um ehrlich zu sein, habe ich keine Expert Advisors oder Skripte verwendet und habe keine praktische Erfahrung in der Arbeit mit ihnen, aber ich muss ein Skript erstellen, das mir bei der Platzierung einer großen Anzahl von Aufträgen helfen würde.
Die Aufgabe des Skripts ist es, die Platzierung von Pending Orders zu erleichtern (hauptsächlich Buy Stop und Sell Stop).
D.h. die Skriptparameter sind wie folgt eingestellt:
1. Niveau, ab dem die Aufträge erteilt werden (z.B. EUR / USD Buy Stop ab 1,3000)
2. Die Größe der einzelnen Aufträge (z. B. 0,01).
Schritt der Auftragserteilung (z.B. 1 Pip)
4. TP für jeden Auftrag (z.B. 3 Pips)
5. Die Anzahl der schwebenden Aufträge (z.B. 70) oder das Niveau, bis zu dem die schwebenden Aufträge platziert werden sollen (z.B. bis 1,3070).
Stop-Loss- und Trailing-Stop-Parameter im Skript sind wünschenswert, aber nicht notwendig...
Das Skript soll den Computer alle 3-4 Stunden starten, die Situation analysieren und entscheiden, Aufträge zu erteilen, um die Spanne nach oben (oder unten) zu durchbrechen, mit einer Eröffnungsperiode von 1 Pip, aber mit einem Mindest-TP (3 Pips). Im Falle einer Preisbewegung zur notwendigen Seite werden diese Aufträge geöffnet und wenn der notwendige Preis erreicht ist, werden sie durch TP geschlossen. Dann ist eine Variante möglich, wenn sie alle auf einem TP geschlossen werden - wenn die Preisbewegung geht alle Aufträge oder ein Teil der Aufträge (6 Einheiten) wird offen sein und wird "minus" sein. In diesem Fall sollen wir die nächste "Treppe" von Aufträgen in die entgegengesetzte Richtung mit anderen Parametern (Losgröße, Schritt, TP, Anzahl der Aufträge) einstellen, die einem Händler als die besten erscheinen würden.
Am Ende eines Handelstages werden "entgegengesetzte Positionen" geschlossen, so dass dem Händler etwa 6 Aufträge verbleiben, die entweder aufwärts (oder abwärts) gerichtet sind.
Vielen Dank im Voraus für die fachkundige Antwort!