Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1273

 

Come sarebbe il codice in Mql5

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

{

....

}

 
Dmitriywelcome:

Come sarebbe il codice in Mql5

Si presenta così

   MqlRates rates[2]; 
   int copied = CopyRates(NULL, 0, 0, 2, rates);
   if(rates[0].close-rates[0].open > visota*_Point)
     {
      /******************/
     }
Avvitate voi stessi i controlli necessari.
 
Dmitriywelcome:

Come sarebbe il codice in Mql5

Puoi anche fare questo

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

si può fare anche questo:

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

44

Salve. Sto cercando di scrivere una condizione, ma sto facendo qualcosa di sbagliato. Per favore, aiutatemi a capire.

Quando il prezzo attraversa la linea dell'indicatore dal basso verso l'alto, apro una posizione di acquisto.

Sto cercando di prescrivere una condizione per la stessa barra:

Se il prezzo di chiusura della candela corrente è superiore alla linea dell'indicatore e il prezzo Bid su qualsiasi barra successiva è superiore alla linea dell'indicatore - ...condizione 1

Come farlo correttamente?

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:

si può fare in questo modo:

Non fare nulla con la numerazione delle barre. Quindi il codice di un quattro con la prima barra per un cinque avrà anche la prima barra senza inversione di numerazione?

 
Valeriy Yastremskiy:

e non fare nulla con la numerazione delle barre. Cioè il codice da quattro con la prima barra per cinque sarà anche con la prima barra senza inversione di numerazione?

Dalla documentazione

turno

[L'indice del valore della serie temporale da ottenere (spostato rispetto alla barra corrente del numero di barre indietro specificato).


Uno spostamento di 0 rispetto alla barra corrente sarà la barra corrente. E se è 1, sarà il precedente.

 
Igor Makanu:

si può fare in questo modo:

Close[shift] ha parentesi quadre. fallito.

Alexey Viktorov:

Dalla documentazione

Relativamente alla barra corrente, sposta 0 e sarà la barra corrente. E se è 1, sarà il precedente.

Ho capito bene che la numerazione delle serie temporali nella 5 è la stessa della 4?

 
Valeriy Yastremskiy:

Close[shift] ha parentesi quadre. fallito.

Ha funzionato, ecco il codice di@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)
//+------------------------------------------------------------------+

potete ora scrivere Close[1] > Close[2 ].

 
Sergey:


Salve. Sto cercando di scrivere una condizione, ma sto facendo qualcosa di sbagliato. Per favore, aiutatemi a capire.

Quando il prezzo attraversa la linea dell'indicatore dal basso verso l'alto, apro una posizione di acquisto.

Sto cercando di prescrivere una condizione per la stessa barra:

Se il prezzo di chiusura della candela corrente è superiore alla linea dell'indicatore e il prezzo Bid su qualsiasi barra successiva è superiore alla linea dell'indicatore - ...condizione 1

Come farlo correttamente?

il terminale ha un campione di Moving Average.mq5

Se ho capito bene, ti serve così?

Foto di