[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 364

 
vilard:

Ich habe mehrere Indikatoren, die mit mehreren Zeitrahmen verknüpft sind, wenn ich die Funktion comment() verwende, werden nur die Indikatorwerte für den getesteten Zeitrahmen angezeigt, die anderen Indikatorwerte bleiben unverändert, ich nehme an, dass die Indikatoren der anderen Zeitrahmen bei dem Test auch nicht berücksichtigt werden.

...

Zeigen Sie mir zunächst den Teil des Codes, in dem Sie im EA die Indikatorwerte für andere Zeitrahmen finden. Ich vermute, dass hier ein Fehler vorliegt.
 
Hallo! Könnten Sie mir bitte sagen, wie ich festhalten kann, dass eine Order nur einmal geöffnet wird (solange die Bedingung erfüllt ist) und wenn die Order geschlossen wird (auch wenn die Bedingung noch erfüllt ist), werden keine weiteren Orders ausgeführt!
 
wie man einen Auftrag einmal pro Stunde und nur zu Beginn der Stunde öffnen lässt
 
shljachov:
wie man einen Auftrag nur einmal pro Stunde und nur zu Beginn der Stunde öffnen lässt
int TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи

oder

https://docs.mql4.com/ru/dateandtime/minute

natürlich nur, um zu prüfen, ob ein Auftrag eröffnet wurde, damit nicht ein weiterer eröffnet wird

 
Hallo, Hilfe mit Code!!! Ich brauche einen Auftrag zu öffnen, basierend auf einer Bedingung einmal pro Stunde zu Beginn der Stunde (auf eine neue stündliche bar) und unabhängig von dem Ergebnis eine neue Öffnung war nur nach 1 Stunde oder 2 oder 3 usw. und auch nur zu Beginn der Stunde (auf eine neue stündliche bar) je nach der Bedingung ?????
 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество секунд после открытия последней позиций. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  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();
            }
          }
        }
      }
    }
  }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество секунд после закрытия последней позиций. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime SecondsAfterCloseLastPos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  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();
            }
          }
        }
      }
    }
  }
  return(TimeCurrent()-t);
}
https://www.mql5.com/ru/forum/131859
 
vielen Dank 604 BierGott 03.09.2012 13:06
 
paladin80:
Zeigen Sie zunächst den Teil des Codes, in dem Sie die Indikatorwerte für andere Zeitrahmen im EA finden. Der Verdacht liegt nahe, dass sich hier ein Fehler eingeschlichen hat.
 int pic1=GetExtremumZZBar("",PERIOD_M1,0,12,5,3);
   int pic5=GetExtremumZZBar("",PERIOD_M5,0,12,5,3);
   int pic15=GetExtremumZZBar("",PERIOD_M15,0,12,5,3);
   int pic30=GetExtremumZZBar("",PERIOD_M30,0,12,5,3);
   int pic60=GetExtremumZZBar("",PERIOD_H1,0,12,5,3);
   int pic240=GetExtremumZZBar("",PERIOD_H4,0,12,5,3);

Kims Funktion

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(-1);
}
 
Versuchen Sie es auf diese Weise:
   int pic1=GetExtremumZZBar(NULL,PERIOD_M1,0,12,5,3);
   int pic5=GetExtremumZZBar(NULL,PERIOD_M5,0,12,5,3);
   int pic15=GetExtremumZZBar(NULL,PERIOD_M15,0,12,5,3);
   int pic30=GetExtremumZZBar(NULL,PERIOD_M30,0,12,5,3);
   int pic60=GetExtremumZZBar(NULL,PERIOD_H1,0,12,5,3);
   int pic240=GetExtremumZZBar(NULL,PERIOD_H4,0,12,5,3);

//---
int GetExtremumZZBar(string sy, int tf, int ne, int dp, int dv, int bc) {
...
}
 
paladin80:
Versuchen Sie es auf diese Weise:
Auf dem Testgerät der gleiche Effekt, auf dem Konto funktioniert alles gleich (angezeigt).