[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 364

 
vilard:

Ho diversi indicatori collegati a diversi timeframe, se uso la funzione comment(), allora vengono visualizzati solo i valori degli indicatori per il timeframe testato, gli altri valori degli indicatori rimangono invariati, presumo che anche gli indicatori di altri timeframe non vengano presi in considerazione nel test.

...

Per prima cosa, mostrami la parte del codice dove trovi nell'EA i valori dell'indicatore per altri timeframe. Ho il sospetto che ci possa essere un errore.
 
Ciao, potresti dirmi come registrare che un ordine viene aperto solo una volta (mentre la condizione è soddisfatta) e quando l'ordine si chiude (anche se la condizione è ancora soddisfatta) non vengono eseguiti altri ordini!
 
come rendere un ordine aperto una volta all'ora e solo all'inizio dell'ora
 
shljachov:
come rendere un ordine aperto una volta all'ora e solo all'inizio dell'ora
int TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи

o

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

solo naturalmente per controllare se un ordine è aperto in modo che non ne venga aperto un altro

 
Ciao, aiuto con il codice!!! Ho bisogno di un ordine per aprire sulla base di una condizione una volta all'ora all'inizio dell'ora (su una nuova barra oraria) e indipendentemente dal risultato una nuova apertura era solo dopo 1 ora o 2 o 3 ecc e anche solo all'inizio dell'ora (su una nuova barra oraria) a seconda della condizione ?????
 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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
 
grazie mille 604 BeerGod 03.09.2012 13:06
 
paladin80:
Per prima cosa, mostra la parte del codice dove trovi i valori dell'indicatore per altri timeframe nell'EA. Il sospetto è che ci possa essere un errore in agguato.
 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);

La funzione di Kim

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}
 
Hmm, prova in questo modo:
   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:
Hmm, prova in questo modo:
Sul tester lo stesso effetto, sull'account tutto funziona allo stesso modo (visualizzato).