Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1273

 

Cómo sería el código en Mql5

if (Close[1]-Open[1]>visota*Point)

{

....

}

 
Dmitriywelcome:

Cómo sería el código en Mql5

Se ve así

   MqlRates rates[2]; 
   int copied = CopyRates(NULL, 0, 0, 2, rates);
   if(rates[0].close-rates[0].open > visota*_Point)
     {
      /******************/
     }
Atornille usted mismo las comprobaciones necesarias.
 
Dmitriywelcome:

¿Cómo sería el código en Mql5?

También puede hacer esto

if(iClose(NULL,0,1)-iOpen(NULL,0,1)>visota*_Point)
 

también puedes hacerlo:

#define  Close(shift) iClose(NULL,0,shift)
#define  Open(shift)  iOpen(NULL,0,shift)
....
if (Close(1) - Open(1) > visota*_Point)
 

44

Hola. Estoy tratando de escribir una condición, pero estoy haciendo algo mal. Por favor, ayúdenme a resolverlo.

Cuando el precio cruza la línea del indicador de abajo hacia arriba, abro una posición de compra.

Estoy tratando de prescribir una condición para el mismo bar:

Si el precio de cierre de la vela actual es superior a la línea indicadora y el precio de oferta en cualquiera de las barras siguientes es superior a la línea indicadora - ...condición 1

¿Cómo hacerlo correctamente?

if (m_position.Select(_Symbol))         //проверка на наличие позиции
   { 
    Print ("Позиция открыта");
    if(m_position.PositionType()==POSITION_TYPE_BUY)
    {
     Print ("Открыта на покупку");
     if (close_1 > Sig_Up[0])   //цена закрытия текущей свечи выше линии индикатора 
       {
        int cl = 4;
     if (cl && Bid > Sig_Up[0])  // Bid больше линии индикатора
       {
        ....
     }
     }                        
     }                                                           
     }
 
Igor Makanu:

puedes hacerlo así:

No hagas nada con la numeración de las barras. ¿Así que el código de un cuatro con la primera barra para un cinco también tendrá la primera barra sin inversión de numeración?

 
Valeriy Yastremskiy:

y no hacer nada con la numeración de las barras. Es decir, ¿el código de cuatro con la primera barra para cinco será también con la primera barra sin inversión de numeración?

De la documentación

turno

[in] El índice del valor de la serie temporal que se va a obtener (desplazado respecto a la barra actual el número de barras especificado hacia atrás).


Un desplazamiento de 0 respecto a la barra actual será la barra actual. Y si es 1, será el anterior.

 
Igor Makanu:

puedes hacerlo así:

Close[shift] tiene corchetes. falló.

Alexey Viktorov:

De la documentación

En relación con la barra actual, el desplazamiento 0 y será la barra actual. Y si es 1, será el anterior.

¿Estoy en lo cierto al entender que la numeración de las series temporales en el 5 es la misma que en el 4?

 
Valeriy Yastremskiy:

Close[shift] tiene corchetes. falló.

Funcionó, aquí está el código de@fxsaber

// Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define  DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
  class CLASS##NAME                                                                                           \
  {                                                                                                           \
  public:                                                                                                     \
    static T Get(const string Symb,const int TimeFrame,const int iShift) \
    {                                                                                                         \
      T tValue[];                                                                                             \
      return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \
    }                                                                                                         \
    T operator[](const int iPos) const                                                                     \
    {                                                                                                         \
      return(CLASS##NAME::Get(_Symbol, _Period, iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
  CLASS##NAME  NAME;                                                                                           \
  T i##NAME(const string Symb,const int TimeFrame,const int iShift) \
  {                                                                                                           \
    return(CLASS##NAME::Get(Symb,  TimeFrame, iShift));                                                        \
  }
//+------------------------------------------------------------------+
DEFINE_TIMESERIE(Volume, TickVolume, long)
DEFINE_TIMESERIE(Time, Time, datetime)
DEFINE_TIMESERIE(Open, Open, double)
DEFINE_TIMESERIE(High, High, double)
DEFINE_TIMESERIE(Low, Low, double)
DEFINE_TIMESERIE(Close, Close, double)
//+------------------------------------------------------------------+

ahora puede escribir Cerrar[1] > Cerrar[2 ].

 
Sergey:


Hola. Estoy tratando de escribir una condición, pero estoy haciendo algo mal. Por favor, ayúdenme a resolverlo.

Cuando el precio cruza la línea del indicador de abajo hacia arriba, abro una posición de compra.

Estoy tratando de prescribir una condición para el mismo bar:

Si el precio de cierre de la vela actual es superior a la línea indicadora y el precio de oferta en cualquiera de las barras siguientes es superior a la línea indicadora - ...condición 1

¿Cómo hacerlo correctamente?

el terminal tiene una muestra de Moving Average.mq5

Si he entendido bien, ¿lo necesita así?

Foto de

Razón de la queja: