Questions des débutants MQL5 MT5 MetaTrader 5 - page 1273

 

Ce à quoi ressemblerait le code en Mql5

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

{

....

}

 
Dmitriywelcome:

Ce à quoi ressemblerait le code en Mql5

Cela ressemble à ceci

   MqlRates rates[2]; 
   int copied = CopyRates(NULL, 0, 0, 2, rates);
   if(rates[0].close-rates[0].open > visota*_Point)
     {
      /******************/
     }
Vissez vous-même les contrôles nécessaires.
 
Dmitriywelcome:

Comment le code ressemblerait-il en Mql5?

Vous pouvez également le faire

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

vous pouvez le faire aussi :

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

44

Bonjour. J'essaie d'écrire une condition, mais je fais quelque chose de mal. Aidez-moi à résoudre ce problème.

Lorsque le prix franchit la ligne de l'indicateur de bas en haut, j'ouvre une position d'achat.

J'essaie de prescrire une condition pour la même barre :

Si le prix de clôture de la bougie actuelle est supérieur à la ligne de l'indicateur et que le prix d'achat sur l'une des barres suivantes est supérieur à la ligne de l'indicateur - ...condition 1

Comment le faire correctement ?

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:

vous pouvez le faire de cette façon :

Ne faites rien avec la numérotation des barres. C'est-à-dire que le code d'un quatre avec la première barre pour un cinq aura aussi la première barre sans inversion de numérotation ?

 
Valeriy Yastremskiy:

et ne faites rien avec la numérotation des barres. C'est-à-dire que le code du quatre avec la première barre du cinq aura aussi la première barre sans inversion de numérotation ?

Extrait de la documentation

équipe

[in] L'index de la valeur de la série temporelle à obtenir (décalée par rapport à la barre actuelle du nombre de barres en arrière spécifié).


Un décalage de 0 par rapport à la barre actuelle sera la barre actuelle. Et si c'est 1, ce sera le précédent.

 
Igor Makanu:

vous pouvez le faire de cette façon :

Close[shift] a des crochets. Échec.

Alexey Viktorov:

Extrait de la documentation

Par rapport à la barre actuelle, déplacez 0 et ce sera la barre actuelle. Et si c'est 1, ce sera le précédent.

Ai-je bien compris que la numérotation des séries temporelles en 5 est la même qu'en 4 ?

 
Valeriy Yastremskiy:

Close[shift] a des crochets. Échec.

Cela a fonctionné, voici le code 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)
//+------------------------------------------------------------------+

vous pouvez maintenant écrire Close[1] > Close[2 ].

 
Sergey:


Bonjour. J'essaie d'écrire une condition, mais je fais quelque chose de mal. Aidez-moi à résoudre ce problème.

Lorsque le prix franchit la ligne de l'indicateur de bas en haut, j'ouvre une position d'achat.

J'essaie de prescrire une condition pour la même barre :

Si le prix de clôture de la bougie actuelle est supérieur à la ligne de l'indicateur et que le prix d'achat sur l'une des barres suivantes est supérieur à la ligne de l'indicateur - ...condition 1

Comment le faire correctement ?

le terminal a un échantillon de Moving Average.mq5

Si je comprends bien, vous en avez besoin comme ceci ?

Photo par